175 lines
7.0 KiB
PHP
175 lines
7.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\ConstructionWorkstation;
|
|
use App\Models\ControlEquipmentWorkstation;
|
|
use App\Models\ElementalTasks;
|
|
use App\Models\Equipment;
|
|
use App\Models\workstationsTaskAnswers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
class WorkstationsJobsController extends Controller
|
|
{
|
|
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
|
|
]);
|
|
}
|
|
}
|