diff --git a/app/Http/Controllers/WorkstationsJobsController.php b/app/Http/Controllers/WorkstationsJobsController.php
index 98a4eb09..97164879 100755
--- a/app/Http/Controllers/WorkstationsJobsController.php
+++ b/app/Http/Controllers/WorkstationsJobsController.php
@@ -6,10 +6,14 @@
use App\Models\ControlEquipmentWorkstation;
use App\Models\ElementalTasks;
use App\Models\Equipment;
+use App\Models\EquipmentAssociationAmbit;
use App\Models\EquipmentComment;
use App\Models\EquipmentWorkHistory;
use App\Models\HistoryOfEquipmentAmbitsInTheProject;
use App\Models\OrderEquipmentTasks;
+use App\Models\SpecificAttributesEquipmentType;
+use App\Models\TaskEquipmentComment;
+use App\Models\TasksAssociationAmbits;
use App\Models\workstationsTaskAnswers;
use App\Models\ReceiveImagesControlEquipmentWorkstation; // Ajuste o namespace conforme necessário
@@ -24,6 +28,85 @@
class WorkstationsJobsController extends Controller
{
+
+ public function verifyEquipmentStatusTe7($id)
+ {
+ // Verificar a condição no banco de dados
+ $controlEquipment = ControlEquipmentWorkstation::find($id);
+
+ // Se não encontrar, devolve uma 404
+ if (!$controlEquipment) {
+ return response()->json(['status' => 'not_found'], 404);
+ }
+
+ // Obter o histórico de trabalho do equipamento
+ $equipmentWorkHistorys = EquipmentWorkHistory::find($controlEquipment->equipmentWorkHistorys_id);
+
+ if (!$equipmentWorkHistorys) {
+ return response()->json(['status' => 'not_found', 'message' => 'Histórico de trabalho do equipamento não encontrado'], 404);
+ }
+
+ // Obter os detalhes do equipamento
+ $detailsEquipment = Equipment::find($equipmentWorkHistorys->equipment_id);
+
+ if (!$detailsEquipment) {
+ return response()->json(['status' => 'not_found', 'message' => 'Equipamento não encontrado'], 404);
+ }
+
+ // Determinar se é um PSV
+ $isPSV = $detailsEquipment->equipment_type_id == 3;
+
+ // Continuar a verificação no âmbito
+ $detailsEquipmentAmbit = EquipmentAssociationAmbit::where('equipmentWorkHistorys_id', $controlEquipment->equipmentWorkHistorys_id)->first();
+
+ if (!$detailsEquipmentAmbit) {
+ return response()->json(['status' => 'not_found', 'message' => 'Associação do equipamento com âmbito não encontrada'], 404);
+ }
+
+ $ambitsId = $detailsEquipmentAmbit->ambits_id;
+
+ // Verificar se o âmbito associado possui as tarefas 8 e/ou 9
+ $task8Exists = TasksAssociationAmbits::where('ambits_equipment_id', $ambitsId)
+ ->where('elemental_tasks_id', 8)
+ ->exists();
+
+ $task9Exists = $isPSV ? TasksAssociationAmbits::where('ambits_equipment_id', $ambitsId)
+ ->where('elemental_tasks_id', 9)
+ ->exists() : false;
+
+ // Lógica para verificar a conclusão das tarefas, se existirem
+ if ($task8Exists || $task9Exists) {
+ // Verificar se a tarefa 8 foi completada, se existir
+ $task8Completed = $task8Exists ? ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $controlEquipment->equipmentWorkHistorys_id)
+ ->where('elemental_tasks_id', 8)
+ ->whereNotNull('departure_date')
+ ->exists() : true;
+
+ // Verificar se a tarefa 9 foi completada, se for PSV e existir
+ $task9Completed = $task9Exists ? ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $controlEquipment->equipmentWorkHistorys_id)
+ ->where('elemental_tasks_id', 9)
+ ->whereNotNull('departure_date')
+ ->exists() : true;
+
+ // Retornar resposta com base nos resultados
+ if ($task8Completed && $task9Completed) {
+ return response()->json(['status' => true, 'message' => 'Completou todas as tarefas relevantes.']);
+ } elseif ($task8Completed && !$task9Exists) {
+ return response()->json(['status' => true, 'message' => 'Tarefa TE5 completada. Tarefa TE6 não é aplicável.']);
+ } elseif ($task9Completed && !$task8Exists) {
+ return response()->json(['status' => true, 'message' => 'Tarefa TE6 completada. Tarefa TE5 não é aplicável.']);
+ } elseif (!$task8Completed && $task8Exists) {
+ return response()->json(['status' => false, 'message' => 'Tarefa TE5 não foi completada.']);
+ } elseif (!$task9Completed && $task9Exists) {
+ return response()->json(['status' => false, 'message' => 'Tarefa TE6 não foi completada.']);
+ }
+ } else {
+ // Se nenhuma tarefa relevante existir no âmbito, considera como completado
+ return response()->json(['status' => true, 'message' => 'Nenhuma tarefa relevante encontrada no âmbito.']);
+ }
+ }
+
+
public function updateSessionStatus(Request $request, $controlEquipmentId)
{
@@ -40,6 +123,7 @@ public function updateSessionStatus(Request $request, $controlEquipmentId)
}
+
public function receiveQuestionsEquipment($equipmentID)
{
//Busca os valores do historico do equipamento
@@ -81,7 +165,6 @@ public function receiveQuestionsEquipment($equipmentID)
}
public function receiveAnswersEquipment(Request $request, $control_equipment_workstation_id)
{
- // dd($control_equipment_workstation_id);
//No request recebemos ID(NUmero da tarela elementar) , esta variavel vai receber este ID apos selerar o id da string
// $elementalTaskID = 0;
// Deve receber as perguntas e respostas para a tarefa selecionada
@@ -145,14 +228,25 @@ public function receiveAnswersEquipment(Request $request, $control_equipment_wor
// Busca a Ws com base no id recebido da tabela Control.
$receiveDataControlWs = ControlEquipmentWorkstation::find($control_equipment_workstation_id);
+ // Cria um novo comentario para a tarefa em particular.
+ $newTaskEquipmentComments = new TaskEquipmentComment;
+ $newTaskEquipmentComments->equipmentWorkHistorys_id = $receiveDataControlWs->equipmentWorkHistorys_id;
+ $newTaskEquipmentComments->control_equipment_workstation_id = $receiveDataControlWs->control_equipment_workstation_id;
+ $newTaskEquipmentComments->task_comment = $request->comment;
+ $newTaskEquipmentComments->save();
+
+ // Apos ter cria um novo comentario para a tarefa, adiciona na control para relacionar o comentario a tarefa atual
+ $receiveDataControlWs->task_equipment_comments_id = $newTaskEquipmentComments->task_equipment_comments_id;
+
$receiveDataControlWs->elemental_tasks_id = $elementalTaskID;
$receiveDataControlWs->departure_date = now();
// Vai sempre procurar o primeira ocorrencia que tem o campo : time_change_ambit como null, pois outros dados para este mesmo equipamento seriam considerados Ambitos antigos e ja alterados de acordo com o valor de seu timestamp
$receiveHistoryEquipmentAmbits = HistoryOfEquipmentAmbitsInTheProject::where('equipmentWorkHistorys_id', $receiveDataControlWs->equipmentWorkHistorys_id)
- ->whereNull('time_change_ambit')
- ->first();
-
+ ->whereNull('time_change_ambit')
+ ->first();
+
+
$receiveDataControlWs->history_of_equipment_ambits_id = $receiveHistoryEquipmentAmbits->history_of_equipment_ambits_id;
$requestData = $request->all();
@@ -231,6 +325,15 @@ public function getEquipmentData($equipment_id, $component_tag)
// Recebe os dados do Equipamento
$receiveDataEquipment = Equipment::where('equipment_id', $equipment_id)->first();
+ //Recebe os atributos especificos
+ $specificAttributes = SpecificAttributesEquipmentType::where('equipment_id', $receiveDataEquipment->equipment_id)->get();
+
+ $specificAttributesArray = [];
+
+ foreach ($specificAttributes as $attribute) {
+ $specificAttributesArray[$attribute->general_attributes_equipment_id] = $attribute->specific_attributes_value;
+ }
+
$tagType = explode('@', $component_tag)[1]; // Isola o tipo da tag após o '@'
@@ -240,6 +343,10 @@ public function getEquipmentData($equipment_id, $component_tag)
->where('company_projects_id', $receiveDataEquipment->company_projects_id)
->first();
+ //Recebe os dados do Ambito para o equipamento atual
+ $receiveAmbit = EquipmentAssociationAmbit::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistory->equipmentWorkHistorys_id)->first();
+
+
if ($receiveEquipmentWorkHistory && $receiveEquipmentWorkHistory->equipment_status_project == 2) {
return redirect()->back()->with('danger', 'O equipamento já está concluído');
}
@@ -399,23 +506,24 @@ public function getEquipmentData($equipment_id, $component_tag)
$task->cardTypeStyle = 'blue'; // Define o estilo de cor
}
+
// Verifica se o id da tarefa está no array de tarefas que não podem ser feitas
elseif (in_array($task->elemental_tasks_id, $divisionElementalTasks[2])) {
- $task->cardType = 'card-primary';
- $task->cardTypeStyle = 'gray'; // Define o estilo de cor
-
- // Consulta ControlEquipmentWorkstation para verificar as condições especificadas
- $controlEquipment = ControlEquipmentWorkstation::where('elemental_tasks_id', $task->elemental_tasks_id)
+ // Consulta se a tarefa já foi feita anteriormente em outro posto
+ $previouslyCompletedTask = ControlEquipmentWorkstation::where('elemental_tasks_id', $task->elemental_tasks_id)
+ ->where('equipmentWorkHistorys_id', $task->equipmentWorkHistorys_id)
->whereNotNull('entry_date')
->whereNotNull('departure_date')
- ->orderByDesc('departure_date') // Ordena por departure_date de forma decrescente
->first();
- if ($controlEquipment) {
- // Se encontrar, atribuir control_equipment_workstation_id
- $task->control_equipment_workstation_id = $controlEquipment->control_equipment_workstation_id;
+ if ($previouslyCompletedTask) {
+ $task->cardType = 'card-primary';
+ $task->cardTypeStyle = '#8CC084'; // Define o estilo de cor laranja para tarefas já feitas em outro posto
- //buscar dados na model workstationsTaskAnswers
+ // Atribui o control_equipment_workstation_id e outras informações, se necessário
+ $task->control_equipment_workstation_id = $previouslyCompletedTask->control_equipment_workstation_id;
+
+ // Buscar dados na model workstationsTaskAnswers
$workstationTaskAnswer = WorkstationsTaskAnswers::where('control_equipment_workstation_id', $task->control_equipment_workstation_id)
->first();
@@ -432,7 +540,9 @@ public function getEquipmentData($equipment_id, $component_tag)
// Atribui o array formatado ao task
$task->formatted_answers = $formattedAnswers;
}
-
+ } else {
+ $task->cardType = 'card-primary';
+ $task->cardTypeStyle = 'gray'; // Define o estilo de cor
}
}
@@ -476,7 +586,7 @@ public function getEquipmentData($equipment_id, $component_tag)
return $task;
});
-
+
// Verificar se component_tag contém '@Obturador'
if (strpos($component_tag, '@Obturador') !== false) {
// Filtrar para manter apenas a tarefa : elemental_tasks_id = 9 (Retificação e lapidação)
@@ -504,12 +614,15 @@ public function getEquipmentData($equipment_id, $component_tag)
return $comment;
});
+ $receiveDataEquipment->istp_number = $receiveEquipmentWorkHistory->ispt_number;
+ $receiveDataEquipment->equipment_ambit = $receiveAmbit->ambitsEquipment->ambits_description;
return view('workstations.workstations', [
// Deve receber o atual COntrol ID ? tudo a vez que atualizar ??
'receiveComments' => $receiveComments,
'dataControlEquipment' => $receiveDataControlEquipment,
'receiveDataEquipment' => $receiveDataEquipment,
+ 'specificAttributesArray' => $specificAttributesArray,
'recebeTasksForEquipment' => $recebeTasksForEquipment,
'receiveComponentTag' => $component_tag
// 'divisionElementalTasks' => $divisionElementalTasks,
diff --git a/app/Http/Middleware/CheckUserType.php b/app/Http/Middleware/CheckUserType.php
index 962ec651..dbbe6828 100755
--- a/app/Http/Middleware/CheckUserType.php
+++ b/app/Http/Middleware/CheckUserType.php
@@ -54,7 +54,7 @@ protected function getAllowedRoutesForUserType($userType)
switch ($userType) {
case 5: // Técnico
- return ['enterWorkstation', 'getEquipmentData', 'receiveAnswersEquipment'];
+ return ['enterWorkstation', 'getEquipmentData', 'receiveAnswersEquipment','sendTaskComment'];
case 3: // Empresa
return ['dashboardClient','reportingDataClient', 'manageAssetsClient','usersProfiles',
// Obras em Execussao
diff --git a/app/Models/EquipmentWorkHistory.php b/app/Models/EquipmentWorkHistory.php
index 0b419078..c7306370 100644
--- a/app/Models/EquipmentWorkHistory.php
+++ b/app/Models/EquipmentWorkHistory.php
@@ -32,6 +32,11 @@ public function controlEquipmentWorkstation()
return $this->hasMany(ControlEquipmentWorkstation::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
}
+ public function taskEquipmentComment()
+ {
+ return $this->hasMany(TaskEquipmentComment::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
+ }
+
public function equipmentAssociationAmbit()
{
return $this->hasOne(EquipmentAssociationAmbit::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
diff --git a/app/Models/TaskEquipmentComment.php b/app/Models/TaskEquipmentComment.php
new file mode 100644
index 00000000..530d6ea3
--- /dev/null
+++ b/app/Models/TaskEquipmentComment.php
@@ -0,0 +1,26 @@
+belongsTo(EquipmentWorkHistory::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id');
+ }
+
+}
diff --git a/resources/views/Templates/templateWorkstations.blade.php b/resources/views/Templates/templateWorkstations.blade.php
index 478d4941..315cdfb3 100755
--- a/resources/views/Templates/templateWorkstations.blade.php
+++ b/resources/views/Templates/templateWorkstations.blade.php
@@ -41,6 +41,49 @@
border: 1px solid #56606a;
color: #fff;
}
+
+ /* Css para icon de validacao da TE7 */
+ .info-icon {
+ width: 25px;
+ height: 25px;
+ background-color: #dc3545;
+ /* Vermelho por padrão */
+ color: white;
+ text-align: center;
+ line-height: 25px;
+ border-radius: 50%;
+ cursor: pointer;
+ font-weight: bold;
+ font-size: 18px;
+ }
+
+ .info-box {
+ display: none;
+ position: absolute;
+ top: -35px;
+ /* Ajuste para posicionar acima do ícone */
+ left: 50%;
+ /* Alinhar ao centro do ícone */
+ transform: translateX(-50%);
+ padding: 10px;
+ background-color: #343a40;
+ color: #fff;
+ border-radius: 5px;
+ white-space: nowrap;
+ z-index: 10;
+ }
+
+ .info-box.green {
+ background-color: #28a745;
+ /* Verde */
+ }
+
+ .info-box.red {
+ background-color: #dc3545;
+ /* Vermelho */
+ }
+
+ /* /* Css para icon de validacao da TE7 */
@@ -153,30 +196,9 @@ class="brand-image img-circle elevation-3" style="opacity: .8">