<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd">
<flow name="getModuleIdFromName" doc:id="36012b60-c5d7-46f5-8302-c3c825950609">
<db:select doc:name="Select" doc:id="500c985f-bd86-4141-81d9-a07fef9ee2a1" config-ref="rdbms_master_db_config">
<db:sql><![CDATA[SELECT "ModuleId" FROM Module_master WHERE "Module" = :moduleName]]> </db:sql>
<db:input-parameters><![CDATA[#[{'moduleName' : attributes.queryParams.name}]]]> </db:input-parameters>
</db:select>
<ee:transform doc:name="Transform Message" doc:id="45c5e0fa-69a3-4560-86ec-130fad311800">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
payload]]> </ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="getModulesFromProject" doc:id="62fb8a65-ff1b-4aa0-b103-9e4d5e0a36b9">
<db:select doc:name="Select" doc:id="690bb97e-3509-410b-9dc7-bf0bbc55a1b1" config-ref="rdbms_master_db_config">
<db:sql><![CDATA[SELECT "ModuleId" , "Module" FROM View_moduleProjectMap WHERE "ProjectId" = :projectId]]> </db:sql>
<db:input-parameters><![CDATA[#[{'projectId' : attributes.queryParams.projectId}]]]> </db:input-parameters>
</db:select>
<ee:transform doc:name="Transform Message" doc:id="7a0cc3b0-9285-4364-bfe9-10db6db58eaf">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
payload]]> </ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="mainModuleFlow" doc:id="b1bd3ae3-732f-4da4-9086-ffe5e050c822">
<choice doc:name="Choice" doc:id="7db9a8db-9abd-46b5-9f35-2c9f71bd45a7">
<when expression="#[attributes.queryParams.name != null]">
<flow-ref doc:name="getModuleIdFromName" doc:id="eea099e4-c80e-4b56-88d2-74881d3e660e" name="getModuleIdFromName"/>
</when>
<otherwise>
<flow-ref doc:name="getModulesFromProject" doc:id="00a18bbe-5085-47f9-b19b-6482bad16000" name="getModulesFromProject"/>
</otherwise>
</choice>
</flow>
<flow name="createNewModule" doc:id="93c93553-e50f-41d4-8d09-e1e58f05d70f">
<set-variable value="#[payload]" doc:name="Set backup_payload" doc:id="ae2ab4d5-d8ae-4af9-a023-e0fb06634ed0" variableName="backup_payload"/>
<flow-ref doc:name="generateNewId" doc:id="24e135b4-55f6-4ac6-b225-1a7e8baffad0" name="generateNewId"/>
<set-variable value="#[%dw 2.0
output application/json
---
vars.backup_payload default {} ++ {"moduleId" : payload.nextval}]" doc:name="Reset backup_payload" doc:id="4b10e41f-a488-45dc-b7de-db7c927bd888" variableName="backup_payload"/>
<try doc:name="Try" doc:id="0bd4fc00-666b-4966-9a81-a1b67dca8211" transactionalAction="ALWAYS_BEGIN">
<db:insert doc:name="Module_Master Insert" doc:id="105e6c52-acbe-4b02-955a-3b90a417f65a" config-ref="rdbms_master_db_config">
<db:sql><![CDATA[INSERT INTO module_master ("ModuleId", "Module", "DateCreated") VALUES (:moduleid , :module, CURRENT_DATE)]]> </db:sql>
<db:input-parameters><![CDATA[#[{
"moduleid" : vars.backup_payload.moduleId,
"module" : vars.backup_payload.module
}]]]> </db:input-parameters>
</db:insert>
<ee:transform doc:name="Transform Message" doc:id="f95b41ce-89e8-482f-ad12-9d1b7df87ccd">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
vars.backup_payload]]> </ee:set-payload>
</ee:message>
</ee:transform>
<flow-ref doc:name="createNewModuleProjectMap" doc:id="c4d10218-34ac-44ed-9854-9831fdbbb5b3" name="createNewModuleProjectMap"/>
</try>
<ee:transform doc:name="Transform Message" doc:id="0d915464-2b72-4752-9855-af0f4dbc5728">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
{
}]]> </ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<flow name="deleteModuleFlow" doc:id="05b0d7db-67fa-4fa7-b082-6bf183f55e66">
<set-variable value="#[payload]" doc:name="Set backup_payload" doc:id="16e853b3-5d44-4e86-9ba7-e3061aab79fd" variableName="backup_payload"/>
<db:select doc:name="Select" doc:id="f92a8871-2101-4b40-96a4-d2c04b86b14e" config-ref="rdbms_master_db_config">
<db:sql><![CDATA[SELECT COUNT(*) FROM
(SELECT * FROM task_master tm JOIN module_master mm ON (tm."Module" = mm."Module") )temp
WHERE temp."ModuleId" = :moduleid]]> </db:sql>
<db:input-parameters><![CDATA[#[{
"moduleid" : vars.backup_payload.moduleId
}]]]> </db:input-parameters>
</db:select>
<ee:transform doc:name="Transform Message" doc:id="f83ac12e-5e8c-4109-92bb-666a384cd937">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
payload[0]]]> </ee:set-payload>
</ee:message>
</ee:transform>
<choice doc:name="Choice" doc:id="38ec8aa2-9372-4e7b-892a-f280f88f6321">
<when expression="#[payload.count == 0]">
<db:delete doc:name="Delete" doc:id="c4177d2e-7980-4ea3-a258-b1101bce65a9" config-ref="rdbms_master_db_config">
<db:sql><![CDATA[DELETE FROM module_master WHERE "ModuleId" = :moduleid;
DELETE FROM module_project_map WHERE "ModuleId" = :moduleid;]]> </db:sql>
<db:input-parameters><![CDATA[#[{
moduleid : vars.backup_payload.moduleId
}]]]> </db:input-parameters>
</db:delete>
</when>
<otherwise>
<ee:transform doc:name="Transform Message" doc:id="6d82925f-31b4-456f-b56c-a9441dcd41fc">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
{
"message" : "Cannot delete module as some tasks are assigned with specified module.Please Complete / Delete / Update tasks to New module and try again"
}]]> </ee:set-payload>
</ee:message>
</ee:transform>
</otherwise>
</choice>
</flow>
</mule>
<?xml version="1.0" encoding="UTF-8"?>
<flow name="getModuleIdFromName" doc:id="36012b60-c5d7-46f5-8302-c3c825950609">
<db:select doc:name="Select" doc:id="500c985f-bd86-4141-81d9-a07fef9ee2a1" config-ref="rdbms_master_db_config">
<db:sql><![CDATA[SELECT "ModuleId" FROM Module_master WHERE "Module" = :moduleName]]> </db:sql>
<db:input-parameters><![CDATA[#[{'moduleName' : attributes.queryParams.name}]]]> </db:input-parameters>
</db:select>
<ee:transform doc:name="Transform Message" doc:id="45c5e0fa-69a3-4560-86ec-130fad311800">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
payload]]> </ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<?xml version="1.0" encoding="UTF-8"?>
<flow name="getModulesFromProject" doc:id="62fb8a65-ff1b-4aa0-b103-9e4d5e0a36b9">
<db:select doc:name="Select" doc:id="690bb97e-3509-410b-9dc7-bf0bbc55a1b1" config-ref="rdbms_master_db_config">
<db:sql><![CDATA[SELECT "ModuleId" , "Module" FROM View_moduleProjectMap WHERE "ProjectId" = :projectId]]> </db:sql>
<db:input-parameters><![CDATA[#[{'projectId' : attributes.queryParams.projectId}]]]> </db:input-parameters>
</db:select>
<ee:transform doc:name="Transform Message" doc:id="7a0cc3b0-9285-4364-bfe9-10db6db58eaf">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
payload]]> </ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<?xml version="1.0" encoding="UTF-8"?>
<flow name="mainModuleFlow" doc:id="b1bd3ae3-732f-4da4-9086-ffe5e050c822">
<choice doc:name="Choice" doc:id="7db9a8db-9abd-46b5-9f35-2c9f71bd45a7">
<when expression="#[attributes.queryParams.name != null]">
<flow-ref doc:name="getModuleIdFromName" doc:id="eea099e4-c80e-4b56-88d2-74881d3e660e" name="getModuleIdFromName"/>
</when>
<otherwise>
<flow-ref doc:name="getModulesFromProject" doc:id="00a18bbe-5085-47f9-b19b-6482bad16000" name="getModulesFromProject"/>
</otherwise>
</choice>
</flow>
<?xml version="1.0" encoding="UTF-8"?>
<flow name="createNewModule" doc:id="93c93553-e50f-41d4-8d09-e1e58f05d70f">
<set-variable value="#[payload]" doc:name="Set backup_payload" doc:id="ae2ab4d5-d8ae-4af9-a023-e0fb06634ed0" variableName="backup_payload"/>
<flow-ref doc:name="generateNewId" doc:id="24e135b4-55f6-4ac6-b225-1a7e8baffad0" name="generateNewId"/>
<set-variable value="#[%dw 2.0
output application/json
---
vars.backup_payload default {} ++ {"moduleId" : payload.nextval}]" doc:name="Reset backup_payload" doc:id="4b10e41f-a488-45dc-b7de-db7c927bd888" variableName="backup_payload"/>
<try doc:name="Try" doc:id="0bd4fc00-666b-4966-9a81-a1b67dca8211" transactionalAction="ALWAYS_BEGIN">
<db:insert doc:name="Module_Master Insert" doc:id="105e6c52-acbe-4b02-955a-3b90a417f65a" config-ref="rdbms_master_db_config">
<db:sql><![CDATA[INSERT INTO module_master ("ModuleId", "Module", "DateCreated") VALUES (:moduleid , :module, CURRENT_DATE)]]> </db:sql>
<db:input-parameters><![CDATA[#[{
"moduleid" : vars.backup_payload.moduleId,
"module" : vars.backup_payload.module
}]]]> </db:input-parameters>
</db:insert>
<ee:transform doc:name="Transform Message" doc:id="f95b41ce-89e8-482f-ad12-9d1b7df87ccd">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
vars.backup_payload]]> </ee:set-payload>
</ee:message>
</ee:transform>
<flow-ref doc:name="createNewModuleProjectMap" doc:id="c4d10218-34ac-44ed-9854-9831fdbbb5b3" name="createNewModuleProjectMap"/>
</try>
<ee:transform doc:name="Transform Message" doc:id="0d915464-2b72-4752-9855-af0f4dbc5728">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
{
}]]> </ee:set-payload>
</ee:message>
</ee:transform>
</flow>
<?xml version="1.0" encoding="UTF-8"?>
<flow name="deleteModuleFlow" doc:id="05b0d7db-67fa-4fa7-b082-6bf183f55e66">
<set-variable value="#[payload]" doc:name="Set backup_payload" doc:id="16e853b3-5d44-4e86-9ba7-e3061aab79fd" variableName="backup_payload"/>
<db:select doc:name="Select" doc:id="f92a8871-2101-4b40-96a4-d2c04b86b14e" config-ref="rdbms_master_db_config">
<db:sql><![CDATA[SELECT COUNT(*) FROM
(SELECT * FROM task_master tm JOIN module_master mm ON (tm."Module" = mm."Module") )temp
WHERE temp."ModuleId" = :moduleid]]> </db:sql>
<db:input-parameters><![CDATA[#[{
"moduleid" : vars.backup_payload.moduleId
}]]]> </db:input-parameters>
</db:select>
<ee:transform doc:name="Transform Message" doc:id="f83ac12e-5e8c-4109-92bb-666a384cd937">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
payload[0]]]> </ee:set-payload>
</ee:message>
</ee:transform>
<choice doc:name="Choice" doc:id="38ec8aa2-9372-4e7b-892a-f280f88f6321">
<when expression="#[payload.count == 0]">
<db:delete doc:name="Delete" doc:id="c4177d2e-7980-4ea3-a258-b1101bce65a9" config-ref="rdbms_master_db_config">
<db:sql><![CDATA[DELETE FROM module_master WHERE "ModuleId" = :moduleid;
DELETE FROM module_project_map WHERE "ModuleId" = :moduleid;]]> </db:sql>
<db:input-parameters><![CDATA[#[{
moduleid : vars.backup_payload.moduleId
}]]]> </db:input-parameters>
</db:delete>
</when>
<otherwise>
<ee:transform doc:name="Transform Message" doc:id="6d82925f-31b4-456f-b56c-a9441dcd41fc">
<ee:message>
<ee:set-payload><![CDATA[%dw 2.0
output application/json
---
{
"message" : "Cannot delete module as some tasks are assigned with specified module.Please Complete / Delete / Update tasks to New module and try again"
}]]> </ee:set-payload>
</ee:message>
</ee:transform>
</otherwise>
</choice>
</flow>