private static function ProcessListAnalytesTasks($caller, $result, $params) { $result["arrayOfValues"] = str_getcsv($params["dataPost"]["arrayOfValues"], ','); $sessionTask = \Applications\PMTool\Helpers\TaskHelper::GetCurrentSessionTask($caller->user()); foreach ($result["arrayOfValues"] as $id) { $setMethodObjId = "set" . ucfirst($params["objPropId"]); $params["object"]->{$setMethodObjId}($id); $params["object"]->setTask_id($sessionTask[\Library\Enums\SessionKeys::TaskObj]->task_id()); $dal = $caller->managers()->getManagerOf($caller->module()); if ($params["dataPost"]["action"] === "add") { $analyte = $params["objPropId"] === "field_analyte_id" ? new \Applications\PMTool\Models\Dao\Task_field_analyte() : new \Applications\PMTool\Models\Dao\Task_lab_analyte(); $analyte->setTask_id($sessionTask[\Library\Enums\SessionKeys::TaskObj]->task_id()); $setMethodObjId = "set" . ucfirst($params["objPropId"]); $analyte->{$setMethodObjId}($id); $newId = $dal->add($analyte); $result["rows_affected"] += 1; $sessionTaskAnalytes = $sessionTask[$params["sessionKey"]]; array_push($sessionTaskAnalytes, $analyte); $sessionTask[$params["sessionKey"]] = $sessionTaskAnalytes; //Set up task field_analyte_location relationship if ($params["objPropId"] === "field_analyte_id") { \Applications\PMTool\Helpers\TaskAnalyteMatrixHelper::CreateLocationFARelationForFT($caller, $sessionTask[\Library\Enums\SessionKeys::TaskObj]->task_id(), $id); } } else { $result["rows_affected"] += $dal->delete($params["object"], $params["objPropId"]) ? 1 : 0; //TODO: remove object deleted from array list $propId = $params["objPropId"]; $match = CommonHelper::FindIndexInObjectListById($params["object"]->{$propId}(), $params["objPropId"], $sessionTask, $params["sessionKey"]); unset($sessionTask[$params["sessionKey"]][$match["key"]]); } } //\Applications\PMTool\Helpers\ProjectHelper::SetUserSessionProject($caller->user(), $sessionProject); return $result; }