<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd
        http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
    <changeSet id="1" author="npatel">
        <sql dbms="mysql" endDelimiter=";;" splitStatements="true" stripComments="true">
        <!-- main controller -->
        INSERT INTO orchadmin_resources(resource) VALUES('filmprojections');;
        SET @resource_id = LAST_INSERT_ID();;

        SET @technology_manager_role_id := (SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Technology Manager');;
        SET @operations_manager_role_id := (SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Operations Manager');;
        SET @product_manager_role_id := (SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Product Manager');;
        SET @business_development_role_id := (SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Business Development');;
        SET @content_manager_role_id := (SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Content Manager');;
        SET @marketing_manager_role_id := (SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Marketing Manager');;
        SET @content_acquisition_role_id := (SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Content Acquisition');;

        <!-- for Index action -->
        INSERT INTO orchadmin_privileges(privilege) VALUES('index');;
        SET @index_privilege_id = LAST_INSERT_ID();;
        
        INSERT INTO orchadmin_permissions(orchadmin_resource_id, orchadmin_privilege_id, description) VALUES
        (@resource_id, @index_privilege_id, 'View OA interface for Film Projections Upload');;
        SET @index_permission_id = LAST_INSERT_ID();;

        INSERT INTO orchadmin_role_permissions (orchadmin_permission_id, orchadmin_role_id, allow)
        VALUES (@index_permission_id, @technology_manager_role_id, 'Y'),
               (@index_permission_id, @operations_manager_role_id, 'Y'),
               (@index_permission_id, @product_manager_role_id, 'Y'),
               (@index_permission_id, @business_development_role_id, 'Y'),
               (@index_permission_id, @content_manager_role_id, 'Y'),
               (@index_permission_id, @marketing_manager_role_id, 'Y'),
               (@index_permission_id, @content_acquisition_role_id, 'Y');;
               
        <!-- for Upload action -->
        INSERT INTO orchadmin_privileges(privilege) VALUES('upload');;
        SET @index_privilege_id2 = LAST_INSERT_ID();;
        
        INSERT INTO orchadmin_permissions(orchadmin_resource_id, orchadmin_privilege_id, description) VALUES
        (@resource_id, @index_privilege_id2, 'Use the OA interface for Film Projections to Upload');;
        SET @index_permission_id2 = LAST_INSERT_ID();;

        INSERT INTO orchadmin_role_permissions (orchadmin_permission_id, orchadmin_role_id, allow)
        VALUES (@index_permission_id2, @technology_manager_role_id, 'Y'),
               (@index_permission_id2, @operations_manager_role_id, 'Y'),
               (@index_permission_id2, @product_manager_role_id, 'Y'),
               (@index_permission_id2, @business_development_role_id, 'Y'),
               (@index_permission_id2, @content_manager_role_id, 'Y'),
               (@index_permission_id2, @marketing_manager_role_id, 'Y'),
               (@index_permission_id2, @content_acquisition_role_id, 'Y');;
               
        </sql>
        
        <rollback>
         SET @resource_id = (SELECT orchadmin_resource_id FROM orchadmin_resources WHERE resource = 'filmprojections');;
         <!-- index action -->
         SET @index_privilege_id = (SELECT priv.orchadmin_privilege_id FROM orchadmin_privileges priv 
                JOIN orchadmin_permissions perm ON priv.orchadmin_privilege_id = perm.orchadmin_privilege_id 
                WHERE priv.privilege = 'index' AND perm.orchadmin_resource_id = @resource_id);;

         SET @index_permission_id = (SELECT orchadmin_permission_id FROM orchadmin_permissions WHERE orchadmin_resource_id = @resource_id AND orchadmin_privilege_id = @index_privilege_id);;
         
         DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @index_permission_id;;
         DELETE FROM orchadmin_permissions WHERE orchadmin_permission_id = @index_permission_id;;
         DELETE FROM orchadmin_privileges WHERE orchadmin_privilege_id = @index_privilege_id;;   
         
         <!-- upload action -->
         SET @index_privilege_id2 = (SELECT priv.orchadmin_privilege_id FROM orchadmin_privileges priv 
                JOIN orchadmin_permissions perm ON priv.orchadmin_privilege_id = perm.orchadmin_privilege_id 
                WHERE priv.privilege = 'upload' AND perm.orchadmin_resource_id = @resource_id);;

         SET @index_permission_id2 = (SELECT orchadmin_permission_id FROM orchadmin_permissions WHERE orchadmin_resource_id = @resource_id AND orchadmin_privilege_id = @index_privilege_id);;
         
         DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @index_permission_id2;;
         DELETE FROM orchadmin_permissions WHERE orchadmin_permission_id = @index_permission_id2;;
         DELETE FROM orchadmin_privileges WHERE orchadmin_privilege_id = @index_privilege_id2;;   
         
         <!-- main controller -->
         DELETE FROM orchadmin_resources WHERE resource = 'filmprojections';;
        </rollback>
        
    </changeSet>
</databaseChangeLog>
