Skip to content
30 changes: 22 additions & 8 deletions api/main.bal
Original file line number Diff line number Diff line change
Expand Up @@ -9719,6 +9719,7 @@ AND p.organization_id IN (
int taskActivityInstanceId = taskParticipant.activity_instance_id ?: 0;
string taskStatus = taskParticipant.participant_task_status ?: "";
int taskId = 0;
string taskActivityInstanceStartDate = "";
int taskParticipantRowId = 0;
int|string? insertTaskActivityInstanceId = null;

Expand All @@ -9745,6 +9746,7 @@ AND p.organization_id IN (

if (taskActivityInstanceRow is ActivityInstance) {
taskId = taskActivityInstanceRow.task_id ?: 0;
taskActivityInstanceStartDate = taskActivityInstanceRow.start_time ?:"";
}

int[] taskParticipantsIds = [];
Expand Down Expand Up @@ -9884,18 +9886,28 @@ AND p.organization_id IN (
taskProgressUpdateFailed = true;
message = "Failed to update task activity instance record";
}

record {| int count; |} result = check db_client->queryRow(
`SELECT
CASE
WHEN EXISTS (
SELECT 1
FROM activity_instance
WHERE task_id = ${taskId}
AND start_time > ${taskActivityInstanceStartDate}
)
THEN 1
ELSE 0
END AS count;`);

ActivityInstance|error? futureTaskActivityInstanceRow = db_client->queryRow(
`SELECT *
FROM activity_instance
WHERE task_id = ${taskId} AND Date(start_time) > CURDATE() LIMIT 1`);
int futureTaskActivityInstanceCount = result.count;

if (futureTaskActivityInstanceCount == 1) {
return new(taskParticipantRowId);

if (futureTaskActivityInstanceRow is ActivityInstance) {
io:println("Future task activity instance already exists. ID: " + futureTaskActivityInstanceRow.id.toString());
return new(taskParticipantRowId);
}
}else if(futureTaskActivityInstanceCount == 0){

io:println("no task create and create a new one progress");
transaction {

MaintenanceTask|error? maintenanceTaskRow = check db_client->queryRow(
Expand Down Expand Up @@ -10001,6 +10013,7 @@ AND p.organization_id IN (
check commit;
return new (taskParticipantRowId);
}
}
}
} else {
sql:ExecutionResult taskActivityInstanceRes = check db_client->execute(
Expand All @@ -10011,6 +10024,7 @@ AND p.organization_id IN (
if (taskActivityInstanceRes.affectedRowCount == sql:EXECUTION_FAILED) {
return error("Failed to update task activity instance record");
}
return new(taskParticipantRowId);
}
} else if (taskStatus == "Incomplete") {

Expand Down
Loading