From 19bfbf885708994958a717a4548f7ee73eb04083 Mon Sep 17 00:00:00 2001 From: ygbanzato Date: Mon, 4 Mar 2024 16:45:31 +0000 Subject: [PATCH] Update Ws CheckQrcode --- app/Console/Kernel.php | 20 + .../Controllers/CreateProjectController.php | 35 +- .../Controllers/Pending_UserController.php | 2 +- .../WorkstationsJobsController.php | 225 +- app/Http/Middleware/CheckUserType.php | 23 +- .../ViewComposers/WorkstationComposer.php | 176 +- public/user_logos/1707911835.jpg | Bin 0 -> 12412 bytes .../views/Admin/CrudUsers/editUsers.blade.php | 23 +- .../Admin/CrudUsers/listCompany.blade.php | 8 +- .../views/Admin/CrudUsers/listUsers.blade.php | 69 +- .../views/Admin/CrudUsers/showUsers.blade.php | 15 +- .../views/Templates/templateAdmin.blade.php | 4 +- .../Templates/templateWorkstations.blade.php | 162 +- resources/views/Templates/templateWsBak.blade | 481 +++ resources/views/email/email.blade.php | 39 +- resources/views/email/pendingUsers.blade.php | 2 +- .../projectsClients/articulated_2.blade.php | 76 +- .../projectsClients/createProject.blade.php | 1 + resources/views/testDataTables.blade.php | 62 - resources/views/workstations/start.blade.php | 56 +- .../views/workstations/workstations.blade.php | 2875 ++++++++++------- routes/web.bak.php | 301 ++ routes/web.php | 14 +- 23 files changed, 3113 insertions(+), 1556 deletions(-) create mode 100644 public/user_logos/1707911835.jpg create mode 100644 resources/views/Templates/templateWsBak.blade delete mode 100755 resources/views/testDataTables.blade.php create mode 100644 routes/web.bak.php diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 8146f572..a8ef93d5 100755 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -12,11 +12,31 @@ class Kernel extends ConsoleKernel */ protected function schedule(Schedule $schedule): void { + //Para atualizar a fObra para execussao quando chegar na hora estipulada. $schedule->call(function () { \App\Models\CompanyProject::where('order_project', 2) ->where('date_started', '<=', now()) ->update(['order_project' => 3]); })->everyMinute(); // Ou ajuste para a frequência desejada + + + //Funcao para libertar equipamentos na control caso nao seja atualizado em 1 minuto + $schedule->call(function () { + // Define o limite de inatividade, por exemplo, sessões não atualizadas nos últimos 1 minutos + $inactiveLimit = now()->subMinutes(1); + + // Atualiza sessões inativas + \App\Models\ControlEquipmentWorkstation::where('status', 1) + ->where('last_active_at', '<', $inactiveLimit) + ->update([ + 'status' => 0, + 'id_workstations' => null, + 'elemental_tasks_id' => null, + 'entry_date' => null + ]); + + // Adicione outras tarefas necessárias aqui + })->everyMinute(); } /** diff --git a/app/Http/Controllers/CreateProjectController.php b/app/Http/Controllers/CreateProjectController.php index 2a0b3e45..ce28ecd4 100755 --- a/app/Http/Controllers/CreateProjectController.php +++ b/app/Http/Controllers/CreateProjectController.php @@ -605,7 +605,7 @@ public function EditEquipment(Request $request) // } // $executionOrder = 1; - + // foreach ($request->input('ordemTasks') as $key => $value) { // $orderEquipmentTask = OrderEquipmentTasks::where('equipment_id', $request->equipmentId) // ->where('elemental_tasks_id', $key) @@ -654,10 +654,10 @@ public function EditEquipment(Request $request) // Retorna uma resposta // return redirect()->route('articulated_2', ['id' => $request->numberProject]) // ->with('success', 'Equipamento ' . $dataEquipment->equipment_tag . ' Editado com Sucesso!!!'); - // ->with('taskExecutionOrders', $taskExecutionOrders); + // ->with('taskExecutionOrders', $taskExecutionOrders); - // return back()->with('success', 'Ação concluída com sucesso!') - return back(); + // return back()->with('success', 'Ação concluída com sucesso!') + return back(); } @@ -1499,12 +1499,14 @@ public function showStep3($company_projects_id) foreach ($equipments as $equipment) { $tags = []; + // Se for psv tem o id 3 e atualmente sao os unicos tipos de valvulas que tem obturador (cv),(isv) nao apresentam. if ($equipment->equipment_type_id == 3) { $tags = ['@Corpo', '@Flange', '@Obturador']; - } elseif ($equipment->equipment_type_id == 1) { + } else { $tags = ['@Corpo', '@Flange']; } + foreach ($tags as $tag) { $associatedEquipment = QrcodesAssociatedEquipment::where('equipment_id', $equipment->equipment_id) ->where('component_tag', 'LIKE', '%' . $tag) @@ -1525,16 +1527,25 @@ public function showStep3($company_projects_id) } } - // 3. Verificar se há algum equipment_id em QrcodesAssociatedEquipment que não existe mais em Equipment e, se sim, excluí-lo. - $allEquipmentIds = Equipment::where('company_projects_id', $company_projects_id)->pluck('equipment_id')->toArray(); - $orphanedEntries = QrcodesAssociatedEquipment::whereNotIn('equipment_id', $allEquipmentIds)->get(); + // Obter IDs de equipamentos ativos do projeto especificado. + $activeEquipmentIds = Equipment::where('company_projects_id', $company_projects_id) + ->pluck('equipment_id') + ->toArray(); - foreach ($orphanedEntries as $orphanedEntry) { - $orphanedEntry->delete(); + // Identificar todos os equipment_id em QrcodesAssociatedEquipment. + $equipmentIdsInQrcodes = QrcodesAssociatedEquipment::pluck('equipment_id')->unique()->toArray(); + + // Verificar quais desses equipment_id foram desassociados de qualquer projeto na tabela Equipment. + $orphanEquipmentIds = Equipment::whereIn('equipment_id', $equipmentIdsInQrcodes) + ->whereNull('company_projects_id') + ->pluck('equipment_id') + ->toArray(); + + // Excluir todas as entradas em QrcodesAssociatedEquipment para os equipment_id desassociados. + foreach ($orphanEquipmentIds as $orphanId) { + QrcodesAssociatedEquipment::where('equipment_id', $orphanId)->delete(); } - - //Sempre que entrar na view ja verifica se existe 'Workstations' preparadas para esta obra. $listWorkstations = ConstructionWorkstation::where('company_projects_id', $company_projects_id)->get(); diff --git a/app/Http/Controllers/Pending_UserController.php b/app/Http/Controllers/Pending_UserController.php index da980dbe..ace4db22 100755 --- a/app/Http/Controllers/Pending_UserController.php +++ b/app/Http/Controllers/Pending_UserController.php @@ -28,7 +28,7 @@ public function ShowFormUser($id){ } - public function store(Request $request){ + public function store(Request $request){ $request->validate([ 'name' => 'required', diff --git a/app/Http/Controllers/WorkstationsJobsController.php b/app/Http/Controllers/WorkstationsJobsController.php index 7b20a207..f585709a 100755 --- a/app/Http/Controllers/WorkstationsJobsController.php +++ b/app/Http/Controllers/WorkstationsJobsController.php @@ -17,9 +17,105 @@ class WorkstationsJobsController extends Controller { + + // public function reloadWsPage(Request $request, $controlEquipmentId) + // { + // $active = $request->input('active', false); + // if (!$active) { + // // Se o 'active' for false, isso significa que o usuário saiu da página + // // e você deve fazer a limpeza necessária. + // $receiveDataControlEquipment = ControlEquipmentWorkstation::find($controlEquipmentId); + // if ($receiveDataControlEquipment) { + // $receiveDataControlEquipment->delete(); + // } + // } else { + // // Se o 'active' for true, atualize o timestamp para refletir que o usuário ainda está ativo. + // ControlEquipmentWorkstation::where('control_equipment_workstation_id', $controlEquipmentId) + // ->update(['last_active_at' => now()]); + // } + // return response()->json(['success' => true]); + // } + + // public function reloadWsPage(Request $request, $controlEquipmentId) + // { + // dd($controlEquipmentId); + // // Aqui você pode implementar a lógica para atualizar ou excluir o registro + // $receiveDataControlEquipment = ControlEquipmentWorkstation::find($controlEquipmentId); + // if($receiveDataControlEquipment){ + // $receiveDataControlEquipment->delete(); + // } + // return response()->json(['success' => true]); + // } + + // public function reloadWsPage(Request $request, $controlEquipmentId) + // { + // // Ao buscar o id da control vamos desassociar a Ws atual com a linha de dados da control atual, sendo assim ele ficara disponivel para os outros metados, + // $receiveDataControlEquipment = ControlEquipmentWorkstation::find($controlEquipmentId); + // if ($receiveDataControlEquipment) { + // $receiveDataControlEquipment->id_workstations = null; + // $receiveDataControlEquipment->save(); + // } + + // // Não precisa retornar uma resposta detalhada pois sendBeacon não manipula respostas + // return response()->json(['success' => true]); + // } + + + // public function updateWorkstationStatus(Request $request) + // { + // $controlEquipmentId = $request->id; + // $status = $request->status; + + // $controlEquipment = ControlEquipmentWorkstation::find($controlEquipmentId); + // if ($controlEquipment) { + // $controlEquipment->status = $status; + // $controlEquipment->save(); + // } + + // return response()->json(['success' => true]); + // } + + // public function closeWorkstationSession(Request $request) + // { dd($request); + // $controlEquipmentId = $request->id; + + // $controlEquipment = ControlEquipmentWorkstation::find($controlEquipmentId); + // if ($controlEquipment) { + // $controlEquipment->delete(); // Ou defina status como inativo, conforme a lógica do negócio. + // } + + // return response()->json(['success' => true]); + // } + public function updateSessionStatus(Request $request, $controlEquipmentId) + { + + $controlEquipment = ControlEquipmentWorkstation::find($controlEquipmentId); + if ($controlEquipment) { + $controlEquipment->status = $request->input('status', 1); // Assume 1 como padrão para sessão ativa + $controlEquipment->last_active_at = now(); // Atualiza o timestamp da última atividade + $controlEquipment->save(); + + return response()->json(['success' => true, 'message' => 'Sessão atualizada com sucesso.']); + } + + return response()->json(['success' => false, 'message' => 'Equipamento não encontrado.']); + } + + // public function closeSession(Request $request, $controlEquipmentId) + // { + // $controlEquipment = ControlEquipmentWorkstation::find($controlEquipmentId); + // if ($controlEquipment) { + // $controlEquipment->status = 0; // Marca a sessão como inativa + // $controlEquipment->save(); + + // return response()->json(['success' => true, 'message' => 'Sessão fechada com sucesso.']); + // } + + // return response()->json(['success' => false, 'message' => 'Equipamento não encontrado.']); + // } + public function receiveAnswersEquipment(Request $request, $control_equipment_workstation_id) { - // dd($request); //No request recebemos ID(NUmero da tarela elementar) , esta variavel vai receber este ID apos selerar o id da string $elementalTaskID = 0; @@ -113,7 +209,7 @@ public function receiveAnswersEquipment(Request $request, $control_equipment_wor } // Ao selecionar o equipamento para se inicializar a tarefa deve mostrar os dados relacionados. - public function getEquipmentData($equipment_id) + public function getEquipmentData($equipment_id, $component_tag) { //vai receber o email atual, no caso o da workstation que se encontra $userEmail = Auth::user(); @@ -121,14 +217,34 @@ public function getEquipmentData($equipment_id) // Busca os dados da Ws com base no Login $receiveDataWs = ConstructionWorkstation::where('name_workstations', $userEmail->user_name)->first(); + // Recebe os dados do Equipamento $receiveDataEquipment = Equipment::where('equipment_id', $equipment_id)->first(); + // Recebe o id do Historico do equipamento, em sua obra atual $receiveEquipmentWorkHistory = EquipmentWorkHistory::where('equipment_id', $receiveDataEquipment->equipment_id) ->where('company_projects_id', $receiveDataEquipment->company_projects_id) ->first(); + + + + //Verificar se o equipamento ja esta sendo utilizado em outra Ws se sim, retorna para a pagina anterior. + $equipmentInUse = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistory->equipmentWorkHistorys_id) + ->whereNull('departure_date') + ->whereNotNull('id_workstations') + ->where('id_workstations', '!=', $receiveDataWs->id_workstations) + ->where('status', 1) + ->exists(); + + // Se o equipamento já estiver em uso, redirecione com uma mensagem de erro + if ($equipmentInUse) { + return redirect()->back()->with('danger', 'O equipamento já se encontra a executar tarefas noutro posto de trabalho.'); + } + // Recebe todas as tarefas elementares do equipamento. $recebeTasksForEquipment = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistory->equipmentWorkHistorys_id)->get(); + + //Busca as tarefas que podem ser feitas pela WS Atual a partir do Email $userTasks = DB::table('users as u') ->join('construction_workstations as cw', 'u.user_name', '=', 'cw.name_workstations') @@ -138,7 +254,6 @@ public function getEquipmentData($equipment_id) ->groupBy('cw.id_workstations', 'cw.name_workstations') ->get(); - // Primeiro, obtenha todos os IDs de tarefas elementares e outras tarefas de $userTasks $userTasksIds = $userTasks->pluck('all_tasks')->map(function ($tasks) { // Transforma a string 'all_tasks' em um array e remove espaços em branco @@ -149,25 +264,65 @@ public function getEquipmentData($equipment_id) $equipmentTasksIds = $recebeTasksForEquipment->pluck('elemental_tasks_id')->filter()->unique(); // Agora, compare os dois conjuntos de IDs para encontrar os IDs comuns - $commonIds = $equipmentTasksIds->intersect($userTasksIds); + $comparisonBetweenBothTasks = $equipmentTasksIds->intersect($userTasksIds); //recebe as tarefas que a Ws atual pode fazer. $divisionElementalTasks = [ - 1 => $commonIds->all(), + 1 => $comparisonBetweenBothTasks->all(), ]; // IDs que estão em $recebeTasksForEquipment mas não em $userTasks ou seja sao os ids que a Ws nao pode executar estas tarefas. - $uniqueEquipmentTasksIds = $equipmentTasksIds->diff($userTasksIds); + $receiveTasksThatCannotBeDone = $equipmentTasksIds->diff($userTasksIds); // Adicione esses IDs únicos ao array $divisionElementalTasks na chave [2] - $divisionElementalTasks[2] = $uniqueEquipmentTasksIds->all(); + $divisionElementalTasks[2] = $receiveTasksThatCannotBeDone->all(); - // Ao selecionar um equipamento cria na ControlEquipmentWorkstation dados sobre o mesmo indicando quando entrou. - $newDataControlEquipment = new ControlEquipmentWorkstation; - $newDataControlEquipment->equipmentWorkHistorys_id = $receiveEquipmentWorkHistory->equipmentWorkHistorys_id; - $newDataControlEquipment->id_workstations = $receiveDataWs->id_workstations; - $newDataControlEquipment->entry_date = now(); - $newDataControlEquipment->save(); + //Aplica 2 condicoes a variavel a primeira e se os 3 campos forem nulos e a segunda e se a id_workstations nao for null e tiver o valor igual ao da sessao atual, + $existingDataControlEquipment = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistory->equipmentWorkHistorys_id) + ->where(function ($query) use ($receiveDataWs) { + $query->where(function ($q) { + $q->whereNull('elemental_tasks_id') + ->whereNull('departure_date') + ->whereNull('id_workstations'); + })->orWhere(function ($q) use ($receiveDataWs) { + $q->whereNotNull('id_workstations') + ->where('id_workstations', $receiveDataWs->id_workstations) + ->whereNull('departure_date'); + }); + }) + ->first(); + + + if ($existingDataControlEquipment) { + // Registro existente encontrado, atualize conforme necessário + if (strpos($component_tag, '@Obturador') !== false) { + $existingDataControlEquipment->elemental_tasks_id = 9; + } + $existingDataControlEquipment->id_workstations = $receiveDataWs->id_workstations; + $existingDataControlEquipment->entry_date = now(); + $existingDataControlEquipment->status = 1; + $existingDataControlEquipment->last_active_at = now(); + + $existingDataControlEquipment->save(); + + $receiveDataControlEquipment = $existingDataControlEquipment; + } else { + // Nenhum registro existente encontrado, crie um novo + $newDataControlEquipment = new ControlEquipmentWorkstation; + $newDataControlEquipment->equipmentWorkHistorys_id = $receiveEquipmentWorkHistory->equipmentWorkHistorys_id; + $newDataControlEquipment->id_workstations = $receiveDataWs->id_workstations; + $newDataControlEquipment->entry_date = now(); + + if (strpos($component_tag, '@Obturador') !== false) { + $newDataControlEquipment->elemental_tasks_id = 9; + } + + $newDataControlEquipment->status = 1; + $newDataControlEquipment->save(); + + $receiveDataControlEquipment = $newDataControlEquipment; + } + // Primeiro, obtenha o registro de ControlEquipmentWorkstation que não deve ter 'elemental_tasks_id' e 'departure_date' como null $completedTasks = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistory->equipmentWorkHistorys_id) @@ -199,7 +354,6 @@ public function getEquipmentData($equipment_id) elseif (in_array($task->elemental_tasks_id, $divisionElementalTasks[2])) { $task->cardType = 'card-primary'; $task->cardTypeStyle = 'gray'; // Define o estilo de cor - // $task->InputInCardOnlyReadOrNot = 'readonly'; // Consulta ControlEquipmentWorkstation para verificar as condições especificadas $controlEquipment = ControlEquipmentWorkstation::where('elemental_tasks_id', $task->elemental_tasks_id) ->whereNotNull('entry_date') @@ -265,24 +419,43 @@ public function getEquipmentData($equipment_id) // Atribui o array formatado ao task $task->formatted_answers = $formattedAnswers; } - } } return $task; }); - // dd($recebeTasksForEquipment); + + // 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) + $recebeTasksForEquipment = $recebeTasksForEquipment->filter(function ($task) { + return $task->elemental_tasks_id == 9; + }); + } else { + //Se a Tag nao contém '@Obturador' significa que e um '@Corpo' sendo assim vai ser organizado o Menor para o maior entre as tarefas de acordo com o elemental_tasks_id + // Alem de remover o 'elemental_tasks_id == 9' das tarefas, pois se é o corpo, nao faz sentido fazer a tarefas de (Retificação e lapidação), sendo assim para realizar esta tarefa so se entrar com a 'TAG de Obturador'. + $recebeTasksForEquipment = $recebeTasksForEquipment->reject(function ($task) { + return $task->elemental_tasks_id == 9; + })->sortBy('elemental_tasks_id'); + + // Se desejar aplicar a ordenação de forma geral, independente da condição + $recebeTasksForEquipment = $recebeTasksForEquipment->sortBy('elemental_tasks_id'); + } + + dd($receiveDataControlEquipment); + return view('workstations.workstations', [ - // Deve receber o atual COntrol ID ? tudo a vez que atualizar atualiza ?? - 'dataControlEquipment' => $newDataControlEquipment, + // Deve receber o atual COntrol ID ? tudo a vez que atualizar ?? + 'dataControlEquipment' => $receiveDataControlEquipment, 'receiveDataEquipment' => $receiveDataEquipment, 'recebeTasksForEquipment' => $recebeTasksForEquipment, - 'divisionElementalTasks' => $divisionElementalTasks, + 'receiveComponentTag' => $component_tag + // 'divisionElementalTasks' => $divisionElementalTasks, ]); } - public function cancelElementalTaskForEquipment($equipmentID) + public function cancelElementalTaskForEquipment($equipmentID,) { //Nesta funcao se o utilizador da Ws utilizar o botao cancelar na view principal,o equipamento deve se desvincular na Ws atual e poder ser selecionado por outra. // Assim sendo mais pratico excluindo o ultimo dado desta Ws da tabela control_equipment_workstation, quando seu 'elemental_tasks_id' e 'departure_date' forem 'Null' @@ -296,7 +469,17 @@ public function cancelElementalTaskForEquipment($equipmentID) $existingControlEquipment = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistory->equipmentWorkHistorys_id) ->whereNull('elemental_tasks_id') ->whereNull('departure_date') - ->delete(); + ->first(); + + if ($existingControlEquipment) { + $existingControlEquipment->id_workstations = null; + $existingControlEquipment->elemental_tasks_id = null; + $existingControlEquipment->status = 0; + $existingControlEquipment->entry_date = null; + $existingControlEquipment->last_active_at = null; + $existingControlEquipment->save(); + } + return redirect(route('enterWorkstation')); } diff --git a/app/Http/Middleware/CheckUserType.php b/app/Http/Middleware/CheckUserType.php index ac578601..52d879df 100755 --- a/app/Http/Middleware/CheckUserType.php +++ b/app/Http/Middleware/CheckUserType.php @@ -18,10 +18,12 @@ class CheckUserType public function handle(Request $request, Closure $next) { + //Se o utilizador nao estiver autentificado vai para o login if (!auth()->check()) { return redirect()->route('login'); } + //Recebe o tipo de utilizador $userType = auth()->user()->type_users; // Esta linha obtém o nome da rota que está sendo acessada na requisição atual. @@ -53,16 +55,27 @@ protected function getAllowedRoutesForUserType($userType) switch ($userType) { case 5: // Técnico return ['enterWorkstation', 'getEquipmentData', 'receiveAnswersEquipment']; - case 3: - // Empresa + case 3: // Empresa return ['dashboardClient','reportingDataClient', 'manageAssetsClient', // Obras em Execussao 'ExecutionProject', //Relatorios 'showDataDetailsProjectClient','showReportingForAmbitsProject', //Api.s - 'getDataAmbitsOfProject','getDataEquipmentsOfProject','getEquipmentsOfAmbit' - ]; + 'getDataAmbitsOfProject','getDataEquipmentsOfProject','getEquipmentsOfAmbit']; + case 2: // Administrador + return ['home', + 'createProject','processStep1','articulated_2', + 'showAllClientsForProjectReports', + 'manageAssets', + 'users.company','users.Show','users.edit','users.destroy','users.update','users.list', + 'CreateUsers', + 'enviar.formulario', + 'projectDetails_1','workStation_3','addFurtherTasks','deleteFurtherTasks', + + ]; + + // Adicione mais casos conforme necessário... default: @@ -76,7 +89,7 @@ protected function getAllowedRoutesForUserType($userType) protected function getDefaultRouteForUserType($userType) { switch ($userType) { - case 1: // Super_Administrador + case 2: // Administrador return 'home'; case 5: // Técnico return 'enterWorkstation'; diff --git a/app/Http/ViewComposers/WorkstationComposer.php b/app/Http/ViewComposers/WorkstationComposer.php index 55267d6a..3433c9d7 100755 --- a/app/Http/ViewComposers/WorkstationComposer.php +++ b/app/Http/ViewComposers/WorkstationComposer.php @@ -6,6 +6,8 @@ use App\Models\ControlEquipmentWorkstation; use App\Models\Equipment; use App\Models\EquipmentWorkHistory; +use App\Models\OrderEquipmentTasks; +use App\Models\QrcodesAssociatedEquipment; use App\Models\User; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; @@ -21,25 +23,175 @@ public function compose(View $view) $receiveDataWs = ConstructionWorkstation::where('name_workstations', $receiveDataEmail->user_name)->first(); - $receiveAllEquipmentOfProject = Equipment::where('company_projects_id', $receiveDataWs->company_projects_id) - ->whereHas('equipmentWorkHistory', function ($query) use ($receiveDataWs) { - $query->where('company_projects_id', $receiveDataWs->company_projects_id); - }) - ->whereDoesntHave('equipmentWorkHistory.controlEquipmentWorkstation', function ($query) { - $query->whereNull('elemental_tasks_id') - ->whereNull('departure_date'); - }) - ->get(); + // Busca todos os equipamentos associados a um determinado projeto. + + // $receiveAllEquipmentOfProject = Equipment::where('company_projects_id', $receiveDataWs->company_projects_id) + // // Verifica se existe histórico de trabalho associado ao equipamento e ao projeto específico. + // ->whereHas('equipmentWorkHistory', function ($query) use ($receiveDataWs) { + // $query->where('company_projects_id', $receiveDataWs->company_projects_id); + // }) + // // Exclui os equipamentos cujo histórico de trabalho mais recente (controlEquipmentWorkstation) tem 'elemental_tasks_id' e 'departure_date' nulos. + // ->whereDoesntHave('equipmentWorkHistory.controlEquipmentWorkstation', function ($query) { + // $query->where(function ($q) { + // $q->whereNull('elemental_tasks_id') + // ->WhereNull('departure_date') + // ->WhereNotNull('id_workstations'); + // }) ; + // }) + + // // Carrega o histórico de trabalho associado ao equipamento e ao projeto específico. + // ->with([ + // 'equipmentWorkHistory' => function ($query) use ($receiveDataWs) { + // // Filtra o histórico de trabalho pelo 'company_projects_id' para obter os registros relevantes. + // $query->where('company_projects_id', $receiveDataWs->company_projects_id) + // ->select('equipment_id', 'equipmentWorkHistorys_id'); // Seleciona apenas os campos necessários. + // } + // ]) + // ->get() // Obtém os resultados da consulta. + // ->map(function ($equipment) { + // // Supondo que cada equipamento tem apenas um 'equipmentWorkHistory' relevante para este contexto + // if (!$equipment->equipmentWorkHistory->isEmpty()) { + // $equipmentWorkHistory = $equipment->equipmentWorkHistory->first(); + // $equipment->equipmentWorkHistoryId = $equipmentWorkHistory->equipmentWorkHistorys_id; + // } else { + // // Definir como null ou algum valor padrão se não houver histórico correspondente + // $equipment->equipmentWorkHistoryId = null; + // } + // return $equipment; + // }); + + // $receiveAllEquipmentOfProject = Equipment::where('company_projects_id', $receiveDataWs->company_projects_id) + // // Primeiro filtro: Equipamentos sem ocorrência em ControlEquipmentWorkstation + // ->whereDoesntHave('equipmentWorkHistory.controlEquipmentWorkstation') + // // Segundo filtro: Equipamentos com ocorrências onde id_workstations e elemental_tasks_id são nulos + // ->orWhereHas('equipmentWorkHistory.controlEquipmentWorkstation', function ($query) { + // $query->whereNull('id_workstations') + // ->whereNull('elemental_tasks_id'); + // }) + // // Terceiro filtro: Equipamentos com todas as ocorrências onde id_workstations, elemental_tasks_id e departure_date não são nulos + // ->orWhereHas('equipmentWorkHistory.controlEquipmentWorkstation', function ($query) { + // $query->whereNotNull('id_workstations') + // ->whereNotNull('elemental_tasks_id') + // ->whereNotNull('departure_date'); + // }) + // // Carrega o histórico de trabalho associado ao equipamento e ao projeto específico + // ->with([ + // 'equipmentWorkHistory' => function ($query) use ($receiveDataWs) { + // $query->where('company_projects_id', $receiveDataWs->company_projects_id) + // ->select('equipment_id', 'equipmentWorkHistorys_id'); + // } + // ]) + // ->get() + // ->map(function ($equipment) { + // if (!$equipment->equipmentWorkHistory->isEmpty()) { + // $equipmentWorkHistory = $equipment->equipmentWorkHistory->first(); + // $equipment->equipmentWorkHistoryId = $equipmentWorkHistory->equipmentWorkHistorys_id; + // } else { + // $equipment->equipmentWorkHistoryId = null; + // } + // return $equipment; + // }); + + + $receiveAllEquipmentOfProject = Equipment::where('company_projects_id', $receiveDataWs->company_projects_id) + ->where(function ($query) use ($receiveDataWs) { + // Primeiro filtro: Equipamentos sem ocorrência em ControlEquipmentWorkstation + $query->whereDoesntHave('equipmentWorkHistory.controlEquipmentWorkstation'); + + // Segundo filtro: Equipamentos com ocorrências onde id_workstations e elemental_tasks_id são nulos + $query->orWhereHas('equipmentWorkHistory.controlEquipmentWorkstation', function ($subQuery) { + $subQuery->whereNull('id_workstations') + ->whereNull('elemental_tasks_id'); + }); + + // Terceiro filtro: Equipamentos com todas as ocorrências onde id_workstations, elemental_tasks_id e departure_date não são nulos + // Inclui a condição para elemental_tasks_id = 9 + $query->orWhereHas('equipmentWorkHistory.controlEquipmentWorkstation', function ($subQuery) { + $subQuery->whereNotNull('id_workstations') + ->where(function ($innerQuery) { + $innerQuery->whereNotNull('elemental_tasks_id') + ->whereNotNull('departure_date') + ->orWhere('elemental_tasks_id', 9); // Inclui equipamentos com elemental_tasks_id = 9 independentemente de outros critérios + }); + }); + }) + ->with([ + 'equipmentWorkHistory' => function ($query) use ($receiveDataWs) { + $query->where('company_projects_id', $receiveDataWs->company_projects_id) + ->select('equipment_id', 'equipmentWorkHistorys_id'); + } + ]) + ->get() + ->map(function ($equipment) { + if (!$equipment->equipmentWorkHistory->isEmpty()) { + $equipmentWorkHistory = $equipment->equipmentWorkHistory->first(); + $equipment->equipmentWorkHistoryId = $equipmentWorkHistory->equipmentWorkHistorys_id; + } else { + $equipment->equipmentWorkHistoryId = null; + } + return $equipment; + }); + + + + $completedEquipments = collect(); // Coleção para armazenar equipamentos concluídos + + foreach ($receiveAllEquipmentOfProject as $equipment) { + // Agora 'equipmentWorkHistoryId' contém um único ID, então não usamos 'pluck' + $workHistoryId = $equipment->equipmentWorkHistoryId; // Obter ID do histórico de trabalho diretamente + + // Verifica se existe um workHistoryId antes de prosseguir + if (is_null($workHistoryId)) { + continue; // Se não houver histórico de trabalho, continua para o próximo equipamento + } + + $taskIds = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $workHistoryId) + ->pluck('elemental_tasks_id'); // Obter IDs de tarefas elementares baseado em um único workHistoryId + + if ($taskIds->isEmpty()) { + continue; // Se não houver tarefas, continua para o próximo equipamento + } + + $workstationTaskCounts = ControlEquipmentWorkstation::whereIn('elemental_tasks_id', $taskIds) + ->select('elemental_tasks_id', DB::raw('count(*) as total')) + ->groupBy('elemental_tasks_id') + ->pluck('total', 'elemental_tasks_id'); // Contagem de tarefas nas estações de trabalho + + // Verificar se todas as tarefas foram concluídas pelo menos uma vez + $allTasksCompleted = $taskIds->every(function ($taskId) use ($workstationTaskCounts) { + return isset ($workstationTaskCounts[$taskId]) && $workstationTaskCounts[$taskId] >= 1; + }); + + if ($allTasksCompleted && $workstationTaskCounts->count() >= $taskIds->count()) { + $completedEquipments->push($equipment); // Adicionar equipamento à lista de concluídos + } + } + + // Remover equipamentos concluídos da coleção original + $receiveAllEquipmentOfProject = $receiveAllEquipmentOfProject->reject(function ($equipment) use ($completedEquipments) { + return $completedEquipments->contains($equipment); + }); + + + $equipmentIds = $receiveAllEquipmentOfProject->pluck('equipment_id'); + + $receiveQrcodeEquipmentsProject = QrcodesAssociatedEquipment::whereIn('equipment_id', $equipmentIds)->get(); + + //VAMOS filtrar os valores recebidos e terar todas as correspondencias de Flange, ja nao e uma tag que nao vai entrar no percurso do Equipamento. + $filteredQrcodeEquipments = $receiveQrcodeEquipmentsProject->reject(function ($item) { + return strpos($item->component_tag, '@Flange') !== false; + }); + - $receiceCountAllEquipmentOfProject = count($receiveAllEquipmentOfProject); //Returning values of the queries to workstations layout $view->with([ 'receiveAllEquipmentOfProject' => $receiveAllEquipmentOfProject, - 'receiceCountAllEquipmentOfProject' => $receiceCountAllEquipmentOfProject, + // foi alterado para a variavel 'filteredQrcodeEquipments' pois nao tem a necessidade do utilizador selecionar 'Flange'(AINDA NAO !) + 'receiveQrcodeEquipmentsProject' => $filteredQrcodeEquipments, + 'completedEquipments' => $completedEquipments, 'receiveDataWs' => $receiveDataWs, ]); - } } diff --git a/public/user_logos/1707911835.jpg b/public/user_logos/1707911835.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce91928d0f401447090aff08728e76d05dcb677a GIT binary patch literal 12412 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
-
+
Editar Utilizador : {{ $user->user_name }}
@@ -33,14 +33,14 @@
-
+
-
+
@@ -50,14 +50,14 @@
-
+
-
+
@@ -67,14 +67,14 @@
-
+
-
+
@@ -82,17 +82,20 @@
-
+
diff --git a/resources/views/Admin/CrudUsers/listCompany.blade.php b/resources/views/Admin/CrudUsers/listCompany.blade.php index 6fb588f3..b924ed62 100755 --- a/resources/views/Admin/CrudUsers/listCompany.blade.php +++ b/resources/views/Admin/CrudUsers/listCompany.blade.php @@ -57,13 +57,13 @@ class="actions-btn btn btn-light circle "> - {{-- --}} -
@@ -2116,21 +2169,26 @@ class="form-control select2" style="width: 100%;" class="form-control select2" style="width: 100%;" @if ($task_todo->cardTypeStyle == 'gray') disabled @endif> + @if (isset($task_todo->formatted_answers['valve_adjustment_rings']) && + $task_todo->formatted_answers['valve_adjustment_rings'] == 'ok') selected @endif> + Está OK + @if (isset($task_todo->formatted_answers['valve_adjustment_rings']) && + $task_todo->formatted_answers['valve_adjustment_rings'] == 'replace') selected @endif> + É para substituir + @if (isset($task_todo->formatted_answers['valve_adjustment_rings']) && + $task_todo->formatted_answers['valve_adjustment_rings'] == 'reparar') selected @endif> + Reparar + @if (isset($task_todo->formatted_answers['valve_adjustment_rings']) && + $task_todo->formatted_answers['valve_adjustment_rings'] == 'accept') selected @endif> + Aceitar
@@ -2145,23 +2203,29 @@ class="form-control select2" style="width: 100%;"
@@ -2173,25 +2237,26 @@ class="form-control select2" @if ($task_todo->cardTypeStyle == 'gray') disabled
-
@@ -2214,10 +2279,13 @@ class="form-control select2" style="width: 100%;" style="color: red;">*
- cardTypeStyle == 'gray') readonly @endif required> + cardTypeStyle == 'gray') readonly @endif + required>
@@ -2232,8 +2300,10 @@ class="form-control select2" style="width: 100%;" cardTypeStyle == 'gray') readonly @endif required> + style="width: 100%;" placeholder="" + value="{{ $task_todo->formatted_answers['spring_diameter'] ?? '' }}" + @if ($task_todo->cardTypeStyle == 'gray') readonly @endif + required>
@@ -2246,10 +2316,12 @@ class="form-control select2" style="width: 100%;"
cardTypeStyle == 'gray') readonly @endif required> + name="ID5[spring_diameter_ext-number]" + type="number" step="0.01" class="form-control" + style="width: 100%;" placeholder="" + value="{{ $task_todo->formatted_answers['spring_diameter_ext'] ?? '' }}" + @if ($task_todo->cardTypeStyle == 'gray') readonly @endif + required>
@@ -2262,10 +2334,12 @@ class="form-control select2" style="width: 100%;"
cardTypeStyle == 'gray') readonly @endif required> + name="ID5[spring_pitch_glands-number]" + type="number" step="1" class="form-control" + style="width: 100%;" placeholder="" + value="{{ $task_todo->formatted_answers['spring_pitch_glands'] ?? '' }}" + @if ($task_todo->cardTypeStyle == 'gray') readonly @endif + required>
@@ -2278,10 +2352,12 @@ class="form-control select2" style="width: 100%;"
cardTypeStyle == 'gray') readonly @endif required> + name="ID5[spring_number_glands-number]" + type="number" step="1" class="form-control" + style="width: 100%;" placeholder="" + value="{{ $task_todo->formatted_answers['spring_number_glands'] ?? '' }}" + @if ($task_todo->cardTypeStyle == 'gray') readonly @endif + required>
@@ -2289,7 +2365,8 @@ class="form-control select2" style="width: 100%;"
-
@@ -2304,11 +2381,11 @@ class="form-control select2" style="width: 100%;" @if ($task_todo->cardTypeStyle != 'gray') - + @endif
@@ -2906,7 +2983,7 @@ class="btn btn-primary float-right">Guardar @if ($task_todo->elemental_tasks_id == 7) - +
@@ -2927,7 +3004,7 @@ class="btn btn-primary float-right">Guardar action="{{ route('receiveAnswersEquipment', $dataControlEquipment->control_equipment_workstation_id) }}" method="POST" id="form7"> @csrf - +
@@ -2940,13 +3017,14 @@ class="btn btn-primary float-right">Guardar
formatted_answers['validate_technical_specifications'] ?? '' == 'on') checked @endif @if ($task_todo->cardTypeStyle == 'gray') disabled @endif required>
@@ -2956,7 +3034,7 @@ class="btn btn-primary float-right">Guardar
@@ -2976,15 +3054,22 @@ class="btn btn-primary float-right">Guardar
@@ -2994,23 +3079,22 @@ class="form-control select2"
- +
@@ -3019,23 +3103,21 @@ class="form-control select2"
- +
@@ -3058,16 +3140,16 @@ class="form-control select2"
@@ -3076,23 +3158,23 @@ class="form-control select2" required
- +
@@ -3101,8 +3183,7 @@ class="form-control select2"
- +
@@ -3126,8 +3207,8 @@ class="form-control select2"
-
@@ -3136,14 +3217,14 @@ class="form-control select2" class="form-control select2" @if ($task_todo->cardTypeStyle == 'gray') disabled @endif> + @if ($task_todo->formatted_answers['components_seal'] ?? '' == 'yes') selected @endif> + Sim + @if ($task_todo->formatted_answers['components_seal'] ?? '' == 'no') selected @endif> + Nao + @if ($task_todo->formatted_answers['components_seal'] ?? '' == 'n_a') selected @endif> + N/A
@@ -3152,8 +3233,7 @@ class="form-control select2"
- +
@@ -3186,14 +3266,14 @@ class="form-control select2" class="form-control select2" @if ($task_todo->cardTypeStyle == 'gray') disabled @endif> + @if ($task_todo->formatted_answers['components_knob'] ?? '' == 'yes') selected @endif> + Sim + @if ($task_todo->formatted_answers['components_knob'] ?? '' == 'no') selected @endif> + Nao + @if ($task_todo->formatted_answers['components_knob'] ?? '' == 'n_a') selected @endif> + N/A @@ -3202,8 +3282,7 @@ class="form-control select2"
- +
@@ -3269,36 +3348,42 @@ class="btn btn-primary float-right">Guardar method="POST" id="form8"> @csrf -
+
- -
-
- -
-
- -
+ +
+
+
- - -
- - - @if ($task_todo->cardTypeStyle != 'gray') - + + +
+ + + @if ($task_todo->cardTypeStyle != 'gray') + + @endif +
- + @endif @@ -3307,7 +3392,7 @@ class="btn btn-primary float-right">Guardar
+ style="background-color: {{ $task_todo->cardTypeStyle }}">

{{ $task_todo->elementalTask->elemental_tasks_code }} - @@ -3324,7 +3409,7 @@ class="btn btn-primary float-right">Guardar action="{{ route('receiveAnswersEquipment', $dataControlEquipment->control_equipment_workstation_id) }}" method="POST" id="form9"> @csrf - +
@@ -3340,10 +3425,9 @@ class="btn btn-primary float-right">Guardar
cardTypeStyle == 'gray') readonly @endif - required> + type="number" step="0.01" class="form-control" + value="{{ $task_todo->formatted_answers['seat_phi_int'] ?? '' }}" + @if ($task_todo->cardTypeStyle == 'gray') readonly @endif required>

@@ -3356,10 +3440,9 @@ class="form-control" value="{{ $task_todo->formatted_answers['seat_phi_int'] ??
cardTypeStyle == 'gray') readonly @endif - required> + type="number" step="0.01" class="form-control" + value="{{ $task_todo->formatted_answers['seat_phi_ext'] ?? '' }}" + @if ($task_todo->cardTypeStyle == 'gray') readonly @endif required>
@@ -3371,35 +3454,31 @@ class="form-control" value="{{ $task_todo->formatted_answers['seat_phi_ext'] ??
- +
cardTypeStyle == 'gray') readonly @endif - required> + type="number" step="0.01" class="form-control" + value="{{ $task_todo->formatted_answers['shutter_cam'] ?? '' }}" + @if ($task_todo->cardTypeStyle == 'gray') readonly @endif required>
- + @if ($task_todo->cardTypeStyle != 'gray') - + @endif - + - - @endif @@ -3426,311 +3505,362 @@ class="btn btn-primary float-right">Guardar action="{{ route('receiveAnswersEquipment', $dataControlEquipment->control_equipment_workstation_id) }}" method="POST" id="form10"> @csrf -
- +
+ - -
-
- formatted_answers['confirm_label_compliance']) && - $task_todo->formatted_answers['confirm_label_compliance'] == 'on') checked @endif - @if ($task_todo->cardTypeStyle == 'gray') disabled @endif required> - -
-
- - -
-
- -
-
- -
+ +
+
+ formatted_answers['confirm_label_compliance']) && + $task_todo->formatted_answers['confirm_label_compliance'] == 'on') checked @endif + @if ($task_todo->cardTypeStyle == 'gray') disabled @endif required> +
- +
- -
-
- -
-
- -
+ + + + +
+
+
- - - -
-
- -
-
- -
+
+
- +
+ - -
-
- -
-
- -
+ +
+
+
- - - -
-
- -
-
- -
+
+
- +
+ - -
-
- -
-
- -
+ +
+
+
- - - -
-
- -
-
- -
+
+
- +
+ - -
-
- -
-
- -
+ +
+
+
- - - -
-
- -
-
- -
+
+
- +
+ - -
-
- -
-
- -
+ +
+
+
- - - - -
- - - @if ($task_todo->cardTypeStyle != 'gray') - + + + +
+
+ +
+
+ +
+
+ + + +
+
+ +
+
+ +
+
+ + + +
+
+ +
+
+ +
+
+ + + +
+
+ +
+
+ +
+
+ + + +
+
+ +
+
+ +
+
+ + + + +
+ + + @if ($task_todo->cardTypeStyle != 'gray') + + @endif
-
+
@endif - + + + + @if ($task_todo->elemental_tasks_id == 11)
@@ -3754,7 +3884,7 @@ class="btn btn-primary float-right">Guardar action="{{ route('receiveAnswersEquipment', $dataControlEquipment->control_equipment_workstation_id) }}" method="POST" id="form11"> @csrf - +
@@ -3774,26 +3904,26 @@ class="btn btn-primary float-right">Guardar
-
@@ -3803,29 +3933,32 @@ class="form-control select2"
- +
@@ -3835,29 +3968,28 @@ class="form-control select2"
- +
-
@@ -3867,29 +3999,28 @@ class="form-control select2"
- +
-
@@ -3906,22 +4037,26 @@ class="form-control select2"
@@ -3931,29 +4066,28 @@ class="form-control select2"
- +
-
@@ -3963,29 +4097,28 @@ class="form-control select2"
- +
-
@@ -3999,29 +4132,32 @@ class="form-control select2"
- +
@@ -4031,29 +4167,30 @@ class="form-control select2"
- +
@@ -4063,29 +4200,33 @@ class="form-control select2"
- +
@@ -4102,22 +4243,27 @@ class="form-control select2"
@@ -4127,29 +4273,33 @@ class="form-control select2"
- +
@@ -4170,22 +4320,27 @@ class="form-control select2"
@@ -4202,22 +4357,27 @@ class="form-control select2"
@@ -4234,22 +4394,27 @@ class="form-control select2"
@@ -4266,22 +4431,27 @@ class="form-control select2"
@@ -4298,22 +4468,27 @@ class="form-control select2"
@@ -4323,29 +4498,33 @@ class="form-control select2"
- +
@@ -4374,22 +4553,27 @@ class="form-control select2"
@@ -4406,22 +4590,27 @@ class="form-control select2"
@@ -4441,8 +4630,7 @@ class="form-control select2"
cardTypeStyle == 'gray') readonly @endif>
@@ -4474,8 +4662,8 @@ class="form-control"
cardTypeStyle == 'gray') readonly @endif>
@@ -4491,8 +4679,8 @@ class="form-control" placeholder=""
cardTypeStyle == 'gray') readonly @endif>
@@ -4508,8 +4696,8 @@ class="form-control" placeholder=""
cardTypeStyle == 'gray') readonly @endif>
@@ -4523,13 +4711,11 @@ class="form-control" placeholder=""
- +
- cardTypeStyle == 'gray') readonly @endif>
@@ -4539,13 +4725,11 @@ class="form-control" placeholder=""
- +
cardTypeStyle == 'gray') readonly @endif>
@@ -4560,9 +4744,8 @@ class="form-control"
cardTypeStyle == 'gray') readonly @endif>
@@ -4576,11 +4759,11 @@ class="form-control" style="color: red;">*
- cardTypeStyle == 'gray') readonly @endif > + value="{{ $task_todo->formatted_answers['seal_material'] ?? '' }}" + required + @if ($task_todo->cardTypeStyle == 'gray') readonly @endif>
@@ -4593,11 +4776,11 @@ class="form-control"
cardTypeStyle == 'gray') readonly @endif > + name="ID11[seal_phi_int-number]" type="number" + step="0.01" class="form-control" placeholder="" + value="{{ $task_todo->formatted_answers['seal_phi_int'] ?? '' }}" + required + @if ($task_todo->cardTypeStyle == 'gray') readonly @endif>
@@ -4610,11 +4793,11 @@ class="form-control" placeholder=""
cardTypeStyle == 'gray') readonly @endif > + name="ID11[seal_phi_ext-number]" type="number" + step="0.01" class="form-control" placeholder="" + value="{{ $task_todo->formatted_answers['seal_phi_ext'] ?? '' }}" + required + @if ($task_todo->cardTypeStyle == 'gray') readonly @endif>
@@ -4627,11 +4810,11 @@ class="form-control" placeholder=""
cardTypeStyle == 'gray') readonly @endif > + name="ID11[seal_thickness-number]" type="number" + step="0.01" class="form-control" placeholder="" + value="{{ $task_todo->formatted_answers['seal_thickness'] ?? '' }}" + required + @if ($task_todo->cardTypeStyle == 'gray') readonly @endif>
@@ -4642,7 +4825,7 @@ class="form-control" placeholder=""
- + @if ($task_todo->cardTypeStyle != 'gray') @endif -
+ - - - @endif @@ -4684,7 +4864,7 @@ class="btn btn-primary float-right">Guardar action="{{ route('receiveAnswersEquipment', $dataControlEquipment->control_equipment_workstation_id) }}" method="POST" id="form12"> @csrf - +
@@ -4700,26 +4880,26 @@ class="btn btn-primary float-right">Guardar style="color: red;">*
-
@@ -4729,29 +4909,29 @@ class="form-control select2"
- +
@@ -4761,29 +4941,29 @@ class="form-control select2"
- +
@@ -4799,23 +4979,24 @@ class="form-control select2"
@@ -4825,29 +5006,29 @@ class="form-control select2"
- +
@@ -4857,29 +5038,29 @@ class="form-control select2"
- +
@@ -4889,29 +5070,29 @@ class="form-control select2"
- +
@@ -4921,29 +5102,29 @@ class="form-control select2"
- +
@@ -4957,26 +5138,26 @@ class="form-control select2" style="color: red;">*
-
@@ -4986,29 +5167,29 @@ class="form-control select2"
- +
@@ -5028,8 +5209,8 @@ class="form-control select2"
cardTypeStyle == 'gray') readonly @endif required>
@@ -5045,7 +5226,8 @@ class="form-control" value="{{ $task_todo->formatted_answers['bonnet_gasket_mate
cardTypeStyle == 'gray') readonly @endif required>
@@ -5068,8 +5250,8 @@ class="form-control" value="{{ $task_todo->formatted_answers['bonnet_gasket_mate
cardTypeStyle == 'gray') readonly @endif required>
@@ -5085,8 +5267,8 @@ class="form-control" value="{{ $task_todo->formatted_answers['bonnet_gasket_phi_
cardTypeStyle == 'gray') readonly @endif required>
@@ -5102,8 +5284,8 @@ class="form-control" value="{{ $task_todo->formatted_answers['bonnet_gasket_phi_
cardTypeStyle == 'gray') readonly @endif required>
@@ -5117,13 +5299,12 @@ class="form-control" value="{{ $task_todo->formatted_answers['bonnet_gasket_thic
- +
- cardTypeStyle == 'gray') readonly @endif required>
@@ -5133,13 +5314,12 @@ class="form-control" value="{{ $task_todo->formatted_answers['bonnet_gasket_thic
- +
cardTypeStyle == 'gray') readonly @endif required>
@@ -5154,9 +5334,9 @@ class="form-control" value="{{ $task_todo->formatted_answers['seal_type'] ?? ''
cardTypeStyle == 'gray') readonly @endif required>
@@ -5171,8 +5351,9 @@ class="form-control" value="{{ $task_todo->formatted_answers['seal_material'] ??
cardTypeStyle == 'gray') readonly @endif required>
@@ -5187,9 +5368,9 @@ class="form-control" value="{{ $task_todo->formatted_answers['seal_material'] ??
cardTypeStyle == 'gray') readonly @endif required>
@@ -5204,9 +5385,9 @@ class="form-control" value="{{ $task_todo->formatted_answers['seal_phi_int'] ??
cardTypeStyle == 'gray') readonly @endif required>
@@ -5221,9 +5402,9 @@ class="form-control" value="{{ $task_todo->formatted_answers['seal_phi_ext'] ??
cardTypeStyle == 'gray') readonly @endif required>
@@ -5276,7 +5457,7 @@ class="btn btn-primary float-right">Guardar @csrf
- +
@@ -5285,8 +5466,7 @@ class="btn btn-primary float-right">Guardar
- cardTypeStyle == 'gray') readonly @endif @@ -5304,11 +5484,10 @@ class="form-control float-right"
cardTypeStyle == 'gray') readonly @endif - required> + name="ID13[calibration_pressure-number]" type="number" + step="0.01" class="form-control" placeholder="" + value="{{ $task_todo->formatted_answers['calibration_pressure'] ?? '' }}" + @if ($task_todo->cardTypeStyle == 'gray') readonly @endif required>
@@ -5322,9 +5501,9 @@ class="form-control" placeholder="" value="{{ $task_todo->formatted_answers['cal
cardTypeStyle == 'gray') readonly @endif - required> + class="form-control" placeholder="" + value="{{ $task_todo->formatted_answers['bubbles_minute'] ?? '' }}" + @if ($task_todo->cardTypeStyle == 'gray') readonly @endif required>
@@ -5332,14 +5511,11 @@ class="form-control" placeholder="" value="{{ $task_todo->formatted_answers['bub
- +
- @@ -5386,9 +5562,9 @@ class="form-control select2"
cardTypeStyle == 'gray') readonly @endif>
@@ -5397,13 +5573,22 @@ class="form-control"
- +
- cardTypeStyle == 'gray') disabled @endif> + + +
@@ -5415,12 +5600,10 @@ class="form-control"
- cardTypeStyle == 'gray') readonly @endif - required> + cardTypeStyle == 'gray') readonly @endif required>
@@ -5428,19 +5611,26 @@ class="form-control"
- +
- cardTypeStyle == 'gray') disabled @endif> + +
- + @if ($task_todo->cardTypeStyle != 'gray')
-
-
+
+
@csrf - +
@@ -5885,9 +6076,9 @@ class="btn btn-primary float-right">Guardar
cardTypeStyle == 'gray') readonly @endif required>
@@ -5902,9 +6093,9 @@ class="btn btn-primary float-right">Guardar
cardTypeStyle == 'gray') readonly @endif required>
@@ -5918,9 +6109,9 @@ class="btn btn-primary float-right">Guardar
cardTypeStyle == 'gray') readonly @endif required>
@@ -5934,9 +6125,9 @@ class="btn btn-primary float-right">Guardar
cardTypeStyle == 'gray') readonly @endif required>
@@ -5950,9 +6141,9 @@ class="btn btn-primary float-right">Guardar
cardTypeStyle == 'gray') readonly @endif required>
@@ -5966,9 +6157,9 @@ class="btn btn-primary float-right">Guardar
cardTypeStyle == 'gray') readonly @endif required>
@@ -5982,9 +6173,9 @@ class="btn btn-primary float-right">Guardar
cardTypeStyle == 'gray') readonly @endif required>
@@ -5994,12 +6185,20 @@ class="btn btn-primary float-right">Guardar
- +
- cardTypeStyle == 'gray') disabled @endif + required> + +
@@ -6008,12 +6207,20 @@ class="btn btn-primary float-right">Guardar
- +
- cardTypeStyle == 'gray') disabled @endif + required> + +
@@ -6029,9 +6236,9 @@ class="btn btn-primary float-right">Guardar
cardTypeStyle == 'gray') readonly @endif required>
@@ -6045,9 +6252,9 @@ class="form-control" placeholder="" value="{{ $task_todo->formatted_answers['val
cardTypeStyle == 'gray') readonly @endif required>
@@ -6061,11 +6268,11 @@ class="form-control" placeholder="" value="{{ $task_todo->formatted_answers['val
cardTypeStyle == 'gray') readonly @endif - required> + required>
@@ -6077,11 +6284,11 @@ class="form-control" placeholder="" value="{{ $task_todo->formatted_answers['val
cardTypeStyle == 'gray') readonly @endif - required> + required>
@@ -6093,11 +6300,11 @@ class="form-control" placeholder="" value="{{ $task_todo->formatted_answers['val
cardTypeStyle == 'gray') readonly @endif - required> + required>
@@ -6112,12 +6319,20 @@ class="form-control" placeholder="" value="{{ $task_todo->formatted_answers['val
- +
- cardTypeStyle == 'gray') disabled @endif + required> + +
@@ -6126,12 +6341,20 @@ class="form-control" placeholder="" value="{{ $task_todo->formatted_answers['val
- +
- cardTypeStyle == 'gray') disabled @endif + required> + +
@@ -6140,12 +6363,20 @@ class="form-control" placeholder="" value="{{ $task_todo->formatted_answers['val
- +
- cardTypeStyle == 'gray') disabled @endif + required> + +
@@ -6162,8 +6393,8 @@ class="form-control" placeholder="" value="{{ $task_todo->formatted_answers['val
cardTypeStyle == 'gray') readonly @endif required>
@@ -6180,10 +6411,17 @@ class="form-control" placeholder="" value="{{ $task_todo->formatted_answers['val @@ -6196,9 +6434,8 @@ class="form-control select2" style="color: red;">*
- cardTypeStyle == 'gray') readonly @endif required> @@ -6214,9 +6451,9 @@ class="form-control" placeholder=""
cardTypeStyle == 'gray') readonly @endif required>
@@ -6232,8 +6469,8 @@ class="form-control" placeholder=""
cardTypeStyle == 'gray') readonly @endif required>
@@ -6249,11 +6486,18 @@ class="form-control" placeholder=""
@@ -6274,8 +6518,8 @@ class="form-control select2" - - + + @if ($task_todo->cardTypeStyle != 'gray') - + @endif @@ -6313,134 +6557,133 @@ class="btn btn-primary float-right">Guardar action="{{ route('receiveAnswersEquipment', $dataControlEquipment->control_equipment_workstation_id) }}" method="POST" id="form20"> @csrf -
- -
-
- -
-
- -
+
+ +
+
+
- - - -
-
- -
-
- cardTypeStyle == 'gray') readonly @endif - required> -
+
+
- +
+ - -
-
- -
-
- cardTypeStyle == 'gray') readonly @endif - required> -
-
- - - -
-
-
+ - -
-
-
+
+ +
@if ($task_todo->cardTypeStyle != 'gray') @@ -6456,8 +6699,8 @@ class="btn btn-primary float-right">Guardar
@endif - - @if ($task_todo->elemental_tasks_id == 21) + + @if ($task_todo->elemental_tasks_id == 21)
Guardar action="{{ route('receiveAnswersEquipment', $dataControlEquipment->control_equipment_workstation_id) }}" method="POST" id="form21"> @csrf - +
- +
formatted_answers['validate_technical_specifications'] ?? '' == 'on') checked @endif - @if ($task_todo->cardTypeStyle == 'gray') disabled @endif - required> + @if ($task_todo->cardTypeStyle == 'gray') disabled @endif required>
- +
- +
- +
- cardTypeStyle == 'gray') readonly @endif - required> + cardTypeStyle == 'gray') readonly @endif required>
- +
- cardTypeStyle == 'gray') readonly @endif - required> + cardTypeStyle == 'gray') readonly @endif required>
- +
- cardTypeStyle == 'gray') readonly @endif - required> + cardTypeStyle == 'gray') readonly @endif required>
- +
- cardTypeStyle == 'gray') readonly @endif - required> + cardTypeStyle == 'gray') readonly @endif required>
- +
- +
- cardTypeStyle == 'gray') readonly @endif - required> + cardTypeStyle == 'gray') readonly @endif required>
- +
- +
- cardTypeStyle == 'gray') readonly @endif - required> + cardTypeStyle == 'gray') readonly @endif required>
- +
- +
- cardTypeStyle == 'gray') readonly @endif - required> + cardTypeStyle == 'gray') readonly @endif required>
- +
@if ($task_todo->cardTypeStyle != 'gray') - + @endif
- - - - @endif + @empty +

O obturador do equipamento selecionado não tem tarefas associadas. Por favor, feche e selecione o obturador de outro equipamento. Este equipamento não inclui a tarefa TE6 - Retificação e lapidação.

+ @endforelse - @endforeach - -
- -
+
@@ -6650,6 +6889,12 @@ class="btn btn-danger float-left">Fechar + + + + + + - - - - + {{ $dataControlEquipment->control_equipment_workstation_id }} + + {{-- --}} + + {{-- --}} + + + + @endsection + + \ No newline at end of file diff --git a/routes/web.bak.php b/routes/web.bak.php new file mode 100644 index 00000000..0e2466ce --- /dev/null +++ b/routes/web.bak.php @@ -0,0 +1,301 @@ +name('formulario'); + +Route::post('formulario/receive', [Pending_UserController::class, 'store'])->name('criarUser'); + +Route::post('/register', [CustomRegistrationController::class, 'store'])->name('register'); + + +// Rotas protegidas que exigem esta logado +Route::middleware(['auth'])->group(function () { + + /* + |-------------------------------------------------------------------------- + | User_Type (Super_Administrador) + |-------------------------------------------------------------------------- + |*** Routes unique access to the Super_Administrator, Administrator + + */ + Route::get('usersProfiles/{id}', [userController::class, 'UserProfile'])->name('usersProfiles'); + Route::post('editProfile/{id}', [userController::class, 'EditProfile'])->name('editProfile'); + + + + Route::middleware(['checkUserType:home'])->group(function () { + + Route::get('/', [ProjectoDatacontroller::class, ('HomePage')])->name('home'); + + Route::controller(CreateProjectController::class) + ->group(function () { + //Rotas de Criacao de Obra e de sua visualização da Obra no Planeamento + Route::get('createProject', 'createProjectForStep1')->name('createProject'); + Route::post('newProject1', 'processStep1')->name('processStep1'); + Route::get('articulated_2/{id}', 'showStep2')->name('articulated_2'); + }); + // Pagina de Rolatórios + Route::get('showAllClientsForProjectReports', [ProjectoDatacontroller::class, 'showAllClientsForProjectReports'])->name('showAllClientsForProjectReports'); + + // Pagina de Gestao de Ativos + Route::get('manageAssets', [ProjectoDatacontroller::class, 'ManageAssets'])->name('manageAssets'); + + + /* + |-------------------------------------------------------------------------- + | CRUD - users + |-------------------------------------------------------------------------- + | + */ + Route::controller(userController::class) + ->group(function () { + + Route::get('users/listUsers', 'listUsers')->name('users.list'); //oK + Route::get('users/listCompanies', 'listCompanies')->name('users.company'); //oK + Route::get('users/{id}', 'show')->name('users.Show'); //ok + Route::get('users/{id}/edit', 'edit')->name('users.edit'); // OK + Route::put('users/{user}', 'update')->name('users.update'); //ok + Route::delete('users/{user}', 'destroy')->name('users.destroy'); //ok + + }); + + /* + |-------------------------------------------------------------------------- + | Management of projects created + |-------------------------------------------------------------------------- + | + */ + Route::controller(CreateProjectController::class) + ->group(function () { + + // indication of progress bar to projects that are in 'Planning' + Route::get('projectDetails_1/{id}', 'showStep1')->name('projectDetails_1'); //ok + Route::get('workStation_3/{id}', 'showStep3')->name('workStation_3'); //ok + + // Para adicionar uma tarefa Complementar + Route::post('addFurtherTasks', 'addFurtherTasks')->name('addFurtherTasks'); //ok + Route::post('deleteFurtherTasks', 'deleteFurtherTasks')->name('deleteFurtherTasks'); //ok + + + Route::post('receiveEquipmentToAssociateTasks', 'receiveEquipmentToAssociateTasks')->name('receiveEquipmentToAssociateTasks'); + Route::get('finishCreatingProject/{numberProject}', 'finishCreatingProject')->name('finishCreatingProject'); + Route::get('testDataTables', 'testDataTables')->name('testDataTables'); + Route::get('workstationsAssociationTasks', 'workstationsAssociationTasks')->name('workstationsAssociationTasks'); + Route::get('AddNomenclatureWorkstation', 'AddNomenclatureWorkstation')->name('AddNomenclatureWorkstation'); + Route::get('removeProjectEquipment', 'removeProjectEquipment')->name('removeProjectEquipment'); + Route::delete('deleteWorkstation/{name}', 'deleteWorkstation')->name('deleteWorkstation'); + Route::post('editEquipment', 'EditEquipment')->name('editEquipment'); + Route::post('createWorkStations', 'createWorkStations')->name('createWorkStations'); + + Route::post('projectDetails_1', 'EditprocessStep1')->name('EditprocessStep1'); + Route::post('articulated_2', 'processStep2')->name('processStep2'); + Route::post('articulated_2CreateEquipment', 'createEquipmentManual')->name('articulated_2CreateEquipment'); + Route::post('workStation_3', 'processStep3'); + Route::delete('removeEquipment/{id}', 'removePendingEquipment')->name('removeEquipment'); + Route::post('CreateNewEquipmentFromPendingEquipment/{id}', 'CreateNewEquipmentFromPendingEquipment')->name('CreateNewEquipmentFromPendingEquipment'); + Route::post('create-equipament-project', 'createEquipamentProject')->name('createEquipamentProject'); + Route::get('equipments/{id}/attributes', 'getAttributes'); + + /* + |-------------------------------------------------------------------------- + | Template Excel + |-------------------------------------------------------------------------- + */ + Route::get('template1/{numberProject}', 'receiveUnitsForExcelTemplate')->name('download'); + }); + + Route::get('user-data', [PreparedProjectController::class, 'getData1'])->name('getData'); + Route::get('preparedProject/{ProjectId}', [PreparedProjectController::class, 'PreparedProject'])->name('preparedProject'); + Route::get('EditProjectForArticulated', [PreparedProjectController::class, 'editProjectForArticulated'])->name('EditProjectForArticulated'); + + Route::get('ExecutionProject/{ProjectId}', [ExecutionProjectController::class, 'receiveExecutionProject'])->name('ExecutionProject'); + Route::get('/ReceiveEquipmentIdForShowModal/{EquipmentID}', [ExecutionProjectController::class, 'receiveEquipmentIdForShowModal'])->name('ReceiveEquipmentIdForShowModal '); + + + //Gerir os Ativos gerais + Route::get('units/{id}', [ProjectoDatacontroller::class, 'showUnit'])->name('showUnit'); + + Route::post('enviar-formulario', [FormController::class, 'enviarEmail'])->name('enviar.formulario'); + + Route::get('/CreateUsers/{id}', [Pending_UserController::class, 'ShowFormUser'])->name('ShowPendingUser'); + Route::get('/CreateUsers', [Pending_UserController::class, 'ListPendingUsers'])->name('CreateUsers'); + + // Mostrar Instalação click + + }); + + /*manageAssets + |-------------------------------------------------------------------------- + | User_Type (tecnico) + |-------------------------------------------------------------------------- + |*** Routes unique access to the technical + */ + Route::middleware(['checkUserType:enterWorkstation'])->group(function () { + + Route::get('enterWorkstation', function () { + return view('workstations.start'); + })->name('enterWorkstation'); + + Route::get('/getEquipmentData/{equipment_id}', [WorkstationsJobsController::class, 'getEquipmentData'])->name('getEquipmentData'); + Route::post('receiveAnswersEquipment/{control_equipment_workstation_id}', [WorkstationsJobsController::class, 'receiveAnswersEquipment'])->name('receiveAnswersEquipment'); + }); + + Route::middleware(['checkUserType:testClient'])->group(function () { + // Dashboard + Route::get('dashboardClient', [ClientController::class, 'receiveProjectsClient'])->name('dashboardClient'); + // Relatorios + Route::get('reportingDataClient/{clientID?}', [ClientController::class, 'reportingDataClient'])->name('reportingDataClient'); + //Api + Route::get('/api/receiveMonths/{yearsProjects}', [ClientController::class, 'receiveMonths']); + Route::get('/api/receiveDays/{yearProjects}/{monthProjects}', [ClientController::class, 'receiveDays']); + + // Equipamentos do Cliente + Route::get('manageAssetsClient', [ClientController::class, 'receiveManageAssetsClient'])->name('manageAssetsClient'); + + //Relatorios Obras Concluidas + Route::get('showDataDetailsProjectClient/{projectID?}', [ClientController::class, 'showDataDetailsProjectClient'])->name('showDataDetailsProjectClient'); + //Api + Route::get('getDataAmbitsOfProject', [ClientController::class, 'getDataAmbitsOfProject'])->name('getDataAmbitsOfProject'); + Route::get('getDataEquipmentsOfProject', [ClientController::class, 'getDataEquipmentsOfProject'])->name('getDataEquipmentsOfProject'); + + // Relatorio por Ambito de uma Determinada Obra. + Route::get('showReportingForAmbitsProject/{ambitId}/{projectId}', [ClientController::class, 'showReportingForAmbitsProject'])->name('showReportingForAmbitsProject'); + //Api + Route::get('getEquipmentsOfAmbit', [ClientController::class, 'getEquipmentsOfAmbit'])->name('getEquipmentsOfAmbit'); + + }); + + +}); + + + +route::get('changeStateProject/{projectId}', [CreateProjectController::class, 'changeStateProject'])->name('changeStateProject'); + +route::get('deleteProject/{projectId}', [CreateProjectController::class, 'deleteProject'])->name('deleteProject'); + +Route::get('/checkProjectIsptNumber/{projectId?}', [ProjectoDatacontroller::class, 'checkProjectIsptNumber'])->name('checkProjectIsptNumber'); + +Route::post('deletePendingEquipments', [CreateProjectController::class, 'deletePendingEquipments'])->name('deletePendingEquipments'); + + + +Route::get('showDetailsEquipmentForQrCode/{equipmentId}/{projectId}', [PreparedProjectController::class, 'showDetailsEquipmentForQrCode'])->name('showDetailsEquipmentForQrCode'); + +Route::get('showAllEquipmentsInProjectForQrCode/{projectId}', [PreparedProjectController::class, 'showAllEquipmentsInProjectForQrCode'])->name('showAllEquipmentsInProjectForQrCode'); + + +Route::get('testRelatorio', [ProjectoDatacontroller::class, 'testRelatorio'])->name('testRelatorio'); + + +Route::get('showAllClientsForProjectReportsTable', [ProjectoDatacontroller::class, 'showAllClientsForProjectReportsTable'])->name('showAllClientsForProjectReportsTable'); + + +Route::get('cancelElementalTaskForEquipment/{equipmentID}', [WorkstationsJobsController::class, 'cancelElementalTaskForEquipment'])->name('cancelElementalTaskForEquipment'); + +Route::get('articulated_2/{projectID}/{equipmentID}', [ProjectoDatacontroller::class, 'projectDetails_11'])->name('projectDetails_11'); +Route::get('manageAssets/{equipmentID}', [ProjectoDatacontroller::class, 'articulated_22'])->name('articulated_22'); +Route::get('showAmbitDetailsProjectHistory/{projectID}/{equipmentID}', [ProjectoDatacontroller::class, 'showAmbitDetailsProjectHistory'])->name('showAmbitDetailsProjectHistory'); + + +Route::get('getDataEquipment', [ExecutionProjectController::class, 'getDataEquipment'])->name('getDataEquipment'); + +Route::post('deleteEquipmentInProject', [CreateProjectController::class, 'deleteEquipmentInProject'])->name('deleteEquipmentInProject'); +Route::post('changeAmbitEquipment', [CreateProjectController::class, 'changeAmbitEquipment'])->name('changeAmbitEquipment'); + +Route::get('getDataEquipmentClient', [ExecutionProjectController::class, 'getDataEquipmentClient'])->name('getDataEquipmentClient'); + + +Route::get('getDataProjectsClient', [ClientController::class, 'getDataProjectsClient'])->name('getDataProjectsClient'); +Route::get('showReportingEquipmentProject/{dataEquipment}', [ClientController::class, 'showReportingEquipmentProject'])->name('showReportingEquipmentProject'); //oK + +Route::get('showReportingForAmbitsProjectPdf/{ambitId}/{projectId}', [ClientController::class, 'showReportingForAmbitsProjectPdf'])->name('showReportingForAmbitsProjectPdf'); //ok + +Route::get('getDataAllEquipmentsForAmbitOfProject', [ClientController::class, 'getDataAllEquipmentsForAmbitOfProject'])->name('getDataAllEquipmentsForAmbitOfProject'); + + +Route::post('language/switch', [LanguageController::class, 'switchLanguage'])->name('language.switch'); + + + +// Email +Route::get('/your-verification-route/{id}/{hash}', [UserController::class, 'yourVerificationMethod']) + ->middleware(['auth', 'signed', 'throttle:6,1']) + ->name('verification.verify'); + + + + + + +// *** All api routes have been moved to api.php *** +Route::get('/api/receiveEquipmentsExecutionProject/{receiveNumberProject}', [ExecutionProjectController::class, 'receiveEquipmentsExecutionProject'])->name('receiveEquipmentsExecutionProject'); +Route::get('/api/receiveAllEquipments', [ProjectoDatacontroller::class, 'receiveAllEquipments']); +Route::get('/api/receiveEquipmentsProject/{receiveNumberProject}', [ProjectoDatacontroller::class, 'receiveEquipmentsProject']); +Route::get('/api/receiveWorkstationProject/{receiveNumberProject}', [ProjectoDatacontroller::class, 'receiveWorkstationProject']); +Route::get('/api/getEquipmentDetails/{receiveListEquipmentId}', [ProjectoDatacontroller::class, 'getEquipmentDetails']); +// Route::get('/api/receiveAllInstallationEquipment/{receiveNumberProject}', [ProjectoDatacontroller::class, 'receiveAllInstallationEquipment']); +Route::get('/api/receiveAllInstallationEquipment', [ProjectoDatacontroller::class, 'receiveAllInstallationEquipment'])->name('api_receiveAllInstallationEquipment'); + +Route::get('/api/receveTasksWorkstationPlanning/{WorkstationId}', [CreateProjectController::class, 'receveTasksWorkstationPlanning']); +Route::get('/api/ambits/prepared{equipmentType}', [PreparedProjectController::class, 'getAmbits']); +Route::get('/api/equipment/{id}', [CreateProjectController::class, 'showJson']); +Route::get('/api/installations/', [CreateProjectController::class, 'getByUserNif']); +Route::get('/api/ambits/{equipmentType}', [CreateProjectController::class, 'getAmbits']); + + +Route::get('/api/receiveUnits/{numberProject}', [CreateProjectController::class, 'receiveUnits']); + +Route::get('api/receivePlants/{receiveAllClients}', [ProjectoDatacontroller::class, 'receivePlants']); + +Route::get('api/receiveUnitsManageAssets/{receivePlantClientRelated}', [ProjectoDatacontroller::class, 'receiveUnitsManageAssets']); + + + + + + + + +// // Rotas para o tipo de usuário 'Técnico' + +// Rotas para o tipo de usuário 'Empresa' +Route::middleware(['auth', 'checkUserType:dashboardClient'])->group(function () { + Route::get('dashboardClient', [ClientController::class, 'receiveProjectsClient'])->name('dashboardClient'); + // Adicione outras rotas específicas para 'Empresa' aqui +}); \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 5b91afea..ab6e1e7e 100755 --- a/routes/web.php +++ b/routes/web.php @@ -135,7 +135,7 @@ return view('workstations.start'); })->name('enterWorkstation'); - Route::get('/getEquipmentData/{equipment_id}', [WorkstationsJobsController::class, 'getEquipmentData'])->name('getEquipmentData'); + Route::get('/getEquipmentData/{equipment_id}/{component_tag}', [WorkstationsJobsController::class, 'getEquipmentData'])->name('getEquipmentData'); Route::post('receiveAnswersEquipment/{control_equipment_workstation_id}', [WorkstationsJobsController::class, 'receiveAnswersEquipment'])->name('receiveAnswersEquipment'); }); @@ -293,6 +293,18 @@ Route::get('api/receiveUnitsManageAssets/{receivePlantClientRelated}', [ProjectoDatacontroller::class, 'receiveUnitsManageAssets']); +// Route::get('api/reloadWsPage{controlEquipmentId}',[WorkstationsJobsController::class,'reloadWsPage']); +// Route::post('/api/reloadWsPage/{controlEquipmentId}', [WorkstationsJobsController::class, 'reloadWsPage']); +// Route::post('/api/reloadWsPage/{controlEquipmentId}', [WorkstationsJobsController::class, 'reloadWsPage']); + +// Route::post('/api/updateWorkstationStatus/', [WorkstationsJobsController::class, 'updateWorkstationStatus']); +// Route::post('/api/closeWorkstationSession/', [WorkstationsJobsController::class, 'closeWorkstationSession']); + +Route::post('/api/updateSessionStatus/{controlEquipmentId}', [WorkstationsJobsController::class, 'updateSessionStatus']); +Route::post('/api/closeSession/{controlEquipmentId}', [WorkstationsJobsController::class, 'closeSession']); + + +