/**
  * Fetches the relationship between location and analyte
  * for the passed Task and Analyte Type
  */
 public static function GetAnalyteMatrixForTask($caller, $task_id, $analyte_type = 'Lab')
 {
     $id_map = array();
     if ($analyte_type === 'Lab') {
         //LAB analyte
         $matrixDAO = new \Applications\PMTool\Models\Dao\Lab_analyte_location();
         $matrixDAO->setTask_id($task_id);
         $dal = $caller->managers()->getManagerOf("TaskLabAnalyte");
         $relation_data = $dal->selectMany($matrixDAO, "task_id");
     } else {
         //FIELD Analyte
         $matrixDAO = new \Applications\PMTool\Models\Dao\Field_analyte_location();
         $matrixDAO->setTask_id($task_id);
         $dal = $caller->managers()->getManagerOf("FieldLabAnalyte");
         $relation_data = $dal->selectMany($matrixDAO, "task_id");
     }
     if (!empty($relation_data) && is_array($relation_data)) {
         foreach ($relation_data as $relation) {
             if ($analyte_type === 'Lab') {
                 $id_str = $relation->location_id() . '_' . $relation->lab_analyte_id();
             } else {
                 $id_str = $relation->location_id() . '_' . $relation->field_analyte_id();
             }
             array_push($id_map, $id_str);
         }
     }
     return $id_map;
 }
 /**
  * Task copy: Lab_analyte_location
  * Fetches the related Lab_analyte_location for the
  * original task and creates the relation with the new
  * Task created in "copyTaskWithDependencies"
  */
 public static function copyTaskLabAnalyteLocation($caller, $source_task_id, $target_task_id)
 {
     $lalDAO = new \Applications\PMTool\Models\Dao\Lab_analyte_location();
     $lalDAO->setTask_id($source_task_id);
     $dal = $caller->managers()->getManagerOf("Task");
     $allLals = $dal->selectMany($lalDAO, "task_id");
     if (count($allLals) > 0) {
         //fals found, loop and remap with the new task id
         foreach ($allLals as $lal) {
             $lalDAO = null;
             $lalDAO = new \Applications\PMTool\Models\Dao\Lab_analyte_location();
             $lalDAO->setTask_id($target_task_id);
             $lalDAO->setLab_analyte_id($lal->lab_analyte_id());
             $lalDAO->setLocation_id($lal->location_id());
             //Save
             $dal->add($lalDAO);
         }
     }
 }