first(); $task_todo = 1; return view('workstations.workstations', [ 'task_todo' => $task_todo, 'controlEquipmentWorkstationId' => $controlEquipmentWorkstationId, 'receiveEquipment' => $receiveEquipment ]); } // public function receiveAnswersEquipment(Request $request) // { // $receiveAnswersElementalTasks = new workstationsTaskAnswers; // $receiveAnswersElementalTasks->control_equipment_workstation_id = $request->control_equipment_workstation_id; // $receiveAnswersElementalTasks->answer_json = // } // Recebe as perguntas e respostas e deve criar um linha nova. public function receiveAnswersEquipment(Request $request) { // Primeiro ele deve criar a associação entre id atual do control + perguntas e respostas $receiveAnswersElementalTasks = new workstationsTaskAnswers; $receiveAnswersElementalTasks->control_equipment_workstation_id = $request->control_equipment_workstationid; // Inicializando o array que vai armazenar os objetos JSON $answersArray = []; foreach ($request->all() as $key => $value) { // Ignorando a chave control_equipment_workstation_id if ($key !== 'control_equipment_workstation_id') { // Verificando se $key contém '-' if (strpos($key, '-') === false) { // Se não contiver, pular esta iteração continue; } // Dividindo a chave em duas partes: question e type list($question, $type) = explode('-', $key); // Adicionando um novo objeto JSON ao array $answersArray[] = [ 'type' => $type, 'value' => $value, 'question' => $question ]; } } // Convertendo o array em uma string JSON $jsonString = json_encode($answersArray); // Armazenando a string JSON no banco de dados $receiveAnswersElementalTasks->answer_json = $jsonString; $receiveAnswersElementalTasks->save(); // update departure_date value $receiveDataControlWs = ControlEquipmentWorkstation::find($request->control_equipment_workstationid); $receiveDataControlWs->departure_date = now(); $receiveDataControlWs->save(); //FINALIZOU A TAREFA ANTERIOR COM DEPARTURE //Busca o Email $userEmail = Auth::user()->email; //Busca o id Anterior $control_ew_id = $request->control_equipment_workstationid; // Busca a Ws com base no id recebido da tabela Control. $recebeDataControlId = ControlEquipmentWorkstation::find($request->control_equipment_workstationid); //Chama o procedimento $controlTasks = DB::select('CALL ManageNextTask(?, ?)', [$userEmail, $control_ew_id]); //Saving the values to a variable if (count($controlTasks) > 0) { $current_workstation = $controlTasks[0]->id_workstations; $next_workstation = $controlTasks[0]->next_workstation; $next_todo = $controlTasks[0]->next_todo; } else { //It should always exist, but you never know :) $next_todo = null; } //RECEBE OS VALORES DA PROXIMA WS E PROXIMA TAREFA // Recebe os dados de cada Tarefa Elementar. $receiveDataElementalTask = ElementalTasks::find($recebeDataControlId->elemental_tasks_id); $receiveDataEquipment = Equipment::find($recebeDataControlId->equipment_id); if ($next_todo < 25) { $elemental_tasks_id = $next_todo; $further_tasks_id = null; } else { $elemental_tasks_id = null; $further_tasks_id = $next_todo; } //Se a proxima WS for igual a atual deve criar dados para a ws if ($recebeDataControlId->id_workstations == $next_workstation) { $nextEquipmentTask = DB::select(" INSERT INTO control_equipment_workstation (equipment_id, id_workstations, elemental_tasks_id, further_tasks_id, equipment_comments_id, entry_date, departure_date) VALUES (:equipment_id,:next_workstation,:elemental_tasks_id,:further_tasks_id,NULL,CURRENT_TIMESTAMP,NULL) ", [ 'equipment_id' => $receiveDataEquipment->equipment_id, 'next_workstation' => $next_workstation, 'elemental_tasks_id' => $elemental_tasks_id, 'further_tasks_id' => $further_tasks_id ]); $lastInsertedId = DB::getPdo()->lastInsertId(); return view('workstations.workstations', [ 'receiveDataElementalTask' => $receiveDataElementalTask, 'receiveDataEquipment' => $receiveDataEquipment, 'control_ew_id' => $lastInsertedId, 'task_todo' => $next_todo ]); // Se verificar que a proxima tarefa e Null ele deve apenas voltar ao start } else if($next_todo == null){ return view('workstations.start'); } else { $nextEquipmentTask = DB::select(" INSERT INTO control_equipment_workstation (equipment_id, id_workstations, elemental_tasks_id, further_tasks_id, equipment_comments_id, entry_date, departure_date) VALUES (:equipment_id,NULL,:elemental_tasks_id,:further_tasks_id,NULL,NULL,NULL) ", [ 'equipment_id' => $receiveDataEquipment->equipment_id, 'elemental_tasks_id' => $elemental_tasks_id, 'further_tasks_id' => $further_tasks_id ]); return view('workstations.start'); } } // Ao selecionar o equipamento para se inicializar a tarefa deve mostrar os dados relacionados. public function getEquipmentData($equipment_id) { //vai receber o email atual, no caso o da workstation que se encontra $userEmail = Auth::user()->email; $receiveDataEquipment = Equipment::where('equipment_id', $equipment_id)->first(); //Calling the MySQL procedure tthat will return a table with two columns and one row //cria a nova linha $equipmentData = DB::select('CALL ManageEquipmentTasks(?, ?)', [$userEmail, $equipment_id]); // //Saving the values to a variable if (count($equipmentData) > 0) { $control_ew_id = $equipmentData[0]->control_ew_id; $task_todo = $equipmentData[0]->task_todo; } else { //It should always exist, but you never know :) $control_ew_id = null; $task_todo = null; } $recebeDataControlId = ControlEquipmentWorkstation::find($control_ew_id); // Recebe os dados de cada Tarefa Elementar. $receiveDataElementalTask = ElementalTasks::find($recebeDataControlId->elemental_tasks_id); //Deve recupar os dados da tarefa Atual quando receber o control_id //Returning the values to a view "values" return view('workstations.workstations', [ 'receiveDataElementalTask' => $receiveDataElementalTask, 'receiveDataEquipment' => $receiveDataEquipment, 'control_ew_id' => $control_ew_id, 'task_todo' => $task_todo ]); } }