<?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="mdadhania">
        <sql dbms="mysql" endDelimiter=";;" splitStatements="true" stripComments="true">
            <!-- payment holds controller -->
            INSERT INTO orchadmin_resources(resource) VALUES('paymentholds');;
            SET @resource_id = LAST_INSERT_ID();;

            <!-- 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 Accounting Payment Holds');;

            <!-- Save action -->
            INSERT INTO orchadmin_privileges (privilege) VALUES ('save');;
            SET @save_privilege_id = LAST_INSERT_ID();;

            INSERT INTO orchadmin_permissions
                (orchadmin_resource_id, orchadmin_privilege_id, description)
            VALUES
                (@resource_id, @save_privilege_id, 'Save Accounting Payment Holds');;
        </sql>
        <rollback>
            SET @resource_id = (SELECT orchadmin_resource_id FROM orchadmin_resources WHERE resource = 'paymentholds');;

            <!-- Index action -->
            SET @index_privilege_id = (SELECT oprv.orchadmin_privilege_id
                FROM orchadmin_privileges oprv 
                INNER JOIN orchadmin_permissions oper ON oprv.orchadmin_privilege_id = oper.orchadmin_privilege_id 
                WHERE oprv.privilege = 'index' AND oper.orchadmin_resource_id = @resource_id);;

            DELETE FROM orchadmin_permissions WHERE orchadmin_resource_id = @resource_id AND orchadmin_privilege_id = @index_privilege_id;;
            DELETE FROM orchadmin_privileges WHERE orchadmin_privilege_id = @index_privilege_id;;

            <!-- Save action -->
            SET @save_privilege_id = (SELECT oprv.orchadmin_privilege_id
                FROM orchadmin_privileges oprv 
                INNER JOIN orchadmin_permissions oper ON oprv.orchadmin_privilege_id = oper.orchadmin_privilege_id 
                WHERE oprv.privilege = 'save' AND oper.orchadmin_resource_id = @resource_id);;

            DELETE FROM orchadmin_permissions WHERE orchadmin_resource_id = @resource_id AND orchadmin_privilege_id = @save_privilege_id;;
            DELETE FROM orchadmin_privileges WHERE orchadmin_privilege_id = @save_privilege_id;;

            <!-- payment holds controller -->
            DELETE FROM orchadmin_resources WHERE resource = 'paymentholds';;
        </rollback>
    </changeSet>
</databaseChangeLog>
