From fa669b7419d5246cb5c939af2fe0b9c6f6c5c4af Mon Sep 17 00:00:00 2001 From: ygbanzato Date: Mon, 24 Jul 2023 12:22:04 +0100 Subject: [PATCH] update modal for receive elemental tasks and for every equipments, and uptade workstation. --- .../Controllers/CreateProjectController.php | 185 +++++++--- .../Controllers/ProjectoDatacontroller.php | 6 +- .../projectsClients/articulated_2.blade.php | 323 +++++++++--------- .../projectsClients/workStation_3.blade.php | 168 ++++++--- routes/web.php | 1 + 5 files changed, 417 insertions(+), 266 deletions(-) diff --git a/app/Http/Controllers/CreateProjectController.php b/app/Http/Controllers/CreateProjectController.php index 921b2a92..eb4a62d4 100644 --- a/app/Http/Controllers/CreateProjectController.php +++ b/app/Http/Controllers/CreateProjectController.php @@ -19,6 +19,7 @@ use App\Models\AmbitsEquipment; use App\Models\EquipmentAssociationAmbit; use App\Models\ConstructionWorkstation; +use App\Models\ElementalTasks; use App\Models\OrderEquipmentTasks; use App\Models\FurtherTasks; use App\Models\WorkstationsAssociationTasks; @@ -40,32 +41,56 @@ public function finishCreatingProject($numberProject) return redirect()->route('home'); } - // public function testDataTables(Request $request){ - // dd($request); - // if ($request->ajax()) { - // $data = User::select('id','name','email')->get(); - // return Datatables::of($data)->addIndexColumn() - // ->addColumn('action', function($data){ - // $button = ''; - // $button .= ' '; - // return $button; - // }) - // ->make(true); - // } - // return view('recebeIdiota'); - // } - public function deleteWorkstation($name) { - $workstation = ConstructionWorkstation::where('name_workstations', $name)->first(); - if ($workstation) { + $removeAcountUserWorkstation = User::where('user_name', $workstation->name_workstations)->first(); + + if ($workstation && $removeAcountUserWorkstation) { $workstation->delete(); + $removeAcountUserWorkstation->delete(); + + // pegar o número da estação de trabalho que está sendo deletada + preg_match('/workstation(\d+)-/', $workstation->name_workstations, $matches); + $deletedWorkstationNumber = $matches[1]; + + // pega o número do projeto da estação de trabalho que está sendo deletada + $projectNumber = explode('-', $workstation->name_workstations)[1]; + + // pegar todas as estações de trabalho e usuários com números maiores que o deletado e renumerá-los + $workstationsToUpdate = ConstructionWorkstation::where('company_projects_id', $projectNumber) + ->whereRaw("SUBSTRING_INDEX(name_workstations, '-', 1) REGEXP '^workstation[0-9]+$'") + ->whereRaw("CAST(SUBSTRING(SUBSTRING_INDEX(name_workstations, '-', 1), 12) AS UNSIGNED) >= ?", [$deletedWorkstationNumber]) + ->orderByRaw("CAST(SUBSTRING(SUBSTRING_INDEX(name_workstations, '-', 1), 12) AS UNSIGNED) DESC") + ->get(); + + foreach ($workstationsToUpdate as $workstationToUpdate) { + // pegar o número da estação de trabalho atual + preg_match('/workstation(\d+)-/', $workstationToUpdate->name_workstations, $matches); + $currentWorkstationNumber = $matches[1]; + + // atualizar nome da estação de trabalho + $workstationToUpdate->name_workstations = 'workstation' . ($currentWorkstationNumber - 1) . '-' . $projectNumber; + $workstationToUpdate->save(); + + // atualizar usuário associado + $userToUpdate = User::where('user_name', 'workstation' . $currentWorkstationNumber . '-' . $projectNumber)->first(); + if ($userToUpdate) { + $userToUpdate->user_name = 'workstation' . ($currentWorkstationNumber - 1) . '-' . $projectNumber; + $userToUpdate->save(); + } + } + return back()->with('success', 'Posto de Trabalho removido com sucesso!'); } return back()->with('danger', 'Posto de Trabalho não encontrado!'); } + + + + + public function AddNomenclatureWorkstation(Request $request) { foreach ($request->nameWorkstations as $key => $value) { @@ -158,15 +183,14 @@ public function EditEquipmentsProjects(Request $request) // Se nao selecionar nenhuma tarefas ele devolve um erro , pois e necessario pelo menos uma if (!in_array('on', $request->input('ordemTasks'))) { - return redirect()->back()->with('danger', 'É necessário selecionar pelo menos uma tarefa, Para o Equipamento : '.$equipment->equipment_tag ); + return redirect()->back()->with('danger', 'É necessário selecionar pelo menos uma tarefa, Para o Equipamento : ' . $equipment->equipment_tag); } - $executionOrder = 1; - + $executionOrder = 1; + foreach ($request->input('ordemTasks') as $key => $value) { $orderEquipmentTask = OrderEquipmentTasks::where('equipment_id', $request->equipmentId) ->where('elemental_tasks_id', $key) ->first(); - // dd($orderEquipmentTask); if ($value == "on") { if (!$orderEquipmentTask) { @@ -176,28 +200,29 @@ public function EditEquipmentsProjects(Request $request) } $orderEquipmentTask->execution_order = $executionOrder; $orderEquipmentTask->save(); - + $executionOrder++; } elseif ($value == "off" && $orderEquipmentTask) { $orderEquipmentTask->delete(); } } - + + $executionOrder = 1; // Reinicia a contagem de ordem de execução $remainingOrderEquipmentTasks = OrderEquipmentTasks::where('equipment_id', $request->equipmentId) ->orderBy('execution_order', 'asc') ->get(); - + foreach ($remainingOrderEquipmentTasks as $orderEquipmentTask) { $orderEquipmentTask->execution_order = $executionOrder; $orderEquipmentTask->save(); $executionOrder++; } - + $orderTasks = OrderEquipmentTasks::where('equipment_id', $request->equipmentId) ->orderBy('execution_order', 'asc') ->get(); - + $taskExecutionOrders = []; foreach ($orderTasks as $task) { $taskExecutionOrders[$task->elemental_tasks_id] = $task->execution_order; @@ -213,10 +238,21 @@ public function showJson($id) { $attributes = SpecificAttributesEquipmentType::where('equipment_id', $id)->get(); $OrdemTasks = OrderEquipmentTasks::where('equipment_id', $id)->get(); + $allElementalTasks = ElementalTasks::all(); return response()->json([ 'attributes' => $attributes, - 'OrdemTasks' => $OrdemTasks + 'OrdemTasks' => $OrdemTasks, + 'allElementalTasks' => $allElementalTasks + ]); + } + + public function receveTasksWorkstationPlanning($WorkstationId) + { + $workstationsAssociationTasks = WorkstationsAssociationTasks::where('id_workstations', $WorkstationId)->get(); + + return response()->json([ + 'workstationsAssociationTasks' => $workstationsAssociationTasks ]); } @@ -230,10 +266,12 @@ public function createWorkStations(Request $request) $numberProject = $request->numberProject; $listWorkstations = ConstructionWorkstation::where('company_projects_id', $numberProject)->get(); + $receveProjectCompanyNumber = CompanyProject::where('company_projects_id', $numberProject)->first(); // Pega o último elemento da lista $lastWorkstation = $listWorkstations->last(); + // Se houver uma estação de trabalho anterior, extrai o número dela $startNumber = 1; if ($lastWorkstation) { @@ -241,28 +279,26 @@ public function createWorkStations(Request $request) $startNumber = intval(str_replace('workstation', '', $parts[0])) + 1; } - // Loop para criar as estações de trabalho + // Loop para criar as estações de trabalho e seus logins for ($i = $startNumber; $i < $startNumber + $numberWorkstations; $i++) { $workstation = new ConstructionWorkstation(); $workstation->name_workstations = 'workstation' . $i . '-' . $numberProject; $workstation->company_projects_id = $numberProject; $workstation->save(); + + preg_match('/workstation(\d+)-/', $workstation->name_workstations, $matches); + $receiveNumberWorkstation = $matches[1]; + + //Apos criar a Workstation vamos criar um login para pode aceder os postos de trabalho na obra + $loginWorkStation = new User; + $loginWorkStation->user_name = $workstation->name_workstations; + $loginWorkStation->email = $receveProjectCompanyNumber->project_company_number . '-' . $receiveNumberWorkstation . '@isptgroup.com'; + $loginWorkStation->password = bcrypt($receveProjectCompanyNumber->project_company_number . '-' . $receiveNumberWorkstation); + $loginWorkStation->type_users = 5; + $loginWorkStation->user_nif = $receveProjectCompanyNumber->project_company_number . '-' . $receiveNumberWorkstation; + $loginWorkStation->save(); } - preg_match('/workstation(\d+)-/', $workstation->name_workstations, $matches); - $receiveNumberWorkstation = $matches[1]; - - $receveProjectCompanyNumber = CompanyProject::where('company_projects_id',$numberProject)->first(); - - //Apos criar a Workstation vamos criar um login para pode aceder os postos de trabalho na obra - $loginWorkStation = new User; - $loginWorkStation->user_name = $workstation->name_workstations; - $loginWorkStation->email = $receveProjectCompanyNumber->project_company_number.'-'.$receiveNumberWorkstation.'@isptgroup.com'; - $loginWorkStation->password = bcrypt($receveProjectCompanyNumber->project_company_number.'-'.$receiveNumberWorkstation) ; - $loginWorkStation->type_users = 5; - $loginWorkStation->user_nif = $receveProjectCompanyNumber->project_company_number.'-'.$receiveNumberWorkstation; - $loginWorkStation->save(); - // Redireciona para onde você quiser após a criação das workstations return redirect()->route('test3', ['id' => $request->numberProject]) ->with('success', $numberWorkstations . ' Postos de Trabalho criados !!!') @@ -338,7 +374,7 @@ public function CreateNewEquipmentFromPendingEquipment(Request $request, $id) $newEquipmentAssociationAmbits->equipment_id = $receiveEquipmentID; $newEquipmentAssociationAmbits->save(); - + $checkPendingEquipment->delete(); @@ -751,26 +787,73 @@ public function showStep3($company_projects_id) public function workstationsAssociationTasks(Request $request) { + // dd($request); + $workStation = ConstructionWorkstation::where('id_workstations', $request->idWorkStation)->first(); + // Trocar o nome se for diferente do recebido if ($workStation) { $workStation->nomenclature_workstation = $request->nameWorkstation; $workStation->save(); } + // então, iteramos sobre as três listas de tarefas e as associamos à estação de trabalho $taskTypes = ['generalTasks', 'PsvTasks', 'CvTasks']; + // dd($taskTypes); + // foreach ($taskTypes as $taskType) { + // if (isset($request->$taskType)) { + // foreach ($request->$taskType as $taskId) { + // dd($taskId); + // $taskAssociation = new WorkstationsAssociationTasks; + // $taskAssociation->id_workstations = $workStation->id_workstations; + // $taskAssociation->elemental_tasks_id = $taskId; // assumindo que $taskId é o id da tarefa + // $taskAssociation->company_projects_id = $workStation->company_projects_id; + // $taskAssociation->save(); + // } + // } + // } - foreach ($taskTypes as $taskType) { - if (isset($request->$taskType)) { - foreach ($request->$taskType as $taskId) { - $taskAssociation = new WorkstationsAssociationTasks; - $taskAssociation->id_workstations = $workStation->id_workstations; - $taskAssociation->elemental_tasks_id = $taskId; // assumindo que $taskId é o id da tarefa - $taskAssociation->company_projects_id = $workStation->company_projects_id; - $taskAssociation->save(); + // foreach($taskTypes as $groupTasks){ + // if (isset($request[$groupTasks])) { // Checar se esse grupo de tarefas existe no request + // foreach ($request[$groupTasks] as $taskID => $check) { + // if ($check == 'on') { + // $taskAssociation = new WorkstationsAssociationTasks; + // $taskAssociation->id_workstations = $workStation->id_workstations; + // $taskAssociation->elemental_tasks_id = $taskID; // Usando $taskID, que é a key + // $taskAssociation->company_projects_id = $workStation->company_projects_id; + // $taskAssociation->save(); + // } + // } + // } + // } + + foreach ($taskTypes as $groupTasks) { + if (isset($request[$groupTasks])) { // Checar se esse grupo de tarefas existe no request + foreach ($request[$groupTasks] as $taskID => $check) { + // Encontra a tarefa existente, se houver + $taskAssociation = WorkstationsAssociationTasks::where('id_workstations', $workStation->id_workstations) + ->where('elemental_tasks_id', $taskID) + ->where('company_projects_id', $workStation->company_projects_id) + ->first(); + + if ($check == 'on') { + if (!$taskAssociation) { + $taskAssociation = new WorkstationsAssociationTasks; + $taskAssociation->id_workstations = $workStation->id_workstations; + $taskAssociation->elemental_tasks_id = $taskID; // Usando $taskID, que é a key + $taskAssociation->company_projects_id = $workStation->company_projects_id; + } + $taskAssociation->save(); + } elseif ($check == 'off' && $taskAssociation) { + $taskAssociation->delete(); + } } } } + + + + // Redirecionar de volta com uma mensagem de sucesso return back()->with('success', 'Posto de trabalho : ' . $workStation->name_workstations . ' atualizado com sucesso!'); } diff --git a/app/Http/Controllers/ProjectoDatacontroller.php b/app/Http/Controllers/ProjectoDatacontroller.php index 1d2fc988..028b373f 100644 --- a/app/Http/Controllers/ProjectoDatacontroller.php +++ b/app/Http/Controllers/ProjectoDatacontroller.php @@ -103,12 +103,12 @@ public function receiveEquipmentsProject($receiveNumberProject) ->addColumn('order_tasks', function ($row) { return $row->orderEquipmentTasks->map(function ($task) { return $task->elementalTask->elemental_tasks_code; - })->implode('-'); + })->implode(' ||'); }) ->addColumn('current_task', function ($row) { return $row->controlEquipmentWorkstation->map(function ($task) { return $task->elementalTask->elemental_tasks_code; - })->implode('-'); + })->implode(' ||'); }) ->addColumn('Inspec', function ($row) { return $row->hasInspectionYes() ? 'Sim' : 'Nao'; @@ -124,7 +124,7 @@ public function receiveWorkstationProject($receiveNumberProject) ->addColumn('workstations_Association_Tasks', function ($row) { return $row->workstationsAssociationTasks->map(function ($task) { return $task->elementalTask->elemental_tasks_code; - })->implode('-'); + })->implode(' ||'); }) ->toJson(); diff --git a/resources/views/projectsClients/articulated_2.blade.php b/resources/views/projectsClients/articulated_2.blade.php index 9f6b1109..dd26c417 100644 --- a/resources/views/projectsClients/articulated_2.blade.php +++ b/resources/views/projectsClients/articulated_2.blade.php @@ -1639,7 +1639,7 @@ class="form-control card_inputs"

Lista de Tarefas Elementares : - {{ $listEquipmentsProject->equipmentAssociationAmbit->first()->ambitsEquipment->ambits_description }} + {{ $listEquipmentsProject->equipmentAssociationAmbit->ambitsEquipment->ambits_description }}

@@ -1674,7 +1674,7 @@ class="form-control card_inputs" - @@ -1740,9 +1740,11 @@ class="form-control card_inputs" componentes + name="ordemTasks[10]" + value="off"> + name="ordemTasks[10]" + value="on"> @@ -1753,9 +1755,11 @@ class="form-control card_inputs" Calibrar e certificar + name="ordemTasks[13]" + value="off"> + name="ordemTasks[13]" + value="on"> @@ -1766,9 +1770,11 @@ class="form-control card_inputs" Pintura + name="ordemTasks[14]" + value="off"> + name="ordemTasks[14]" + value="on"> @@ -1782,7 +1788,7 @@ class="form-control card_inputs" - @@ -1797,7 +1803,7 @@ class="form-control card_inputs" - @@ -2194,7 +2200,7 @@ class="form-control card_inputs"

Ambito : - {{-- {{ $listEquipmentsProject->equipmentAssociationAmbit->first()->ambitsEquipment->ambits_description }} --}} + {{ $listEquipmentsProject->equipmentAssociationAmbit->ambitsEquipment->ambits_description }}

@@ -2822,7 +2815,7 @@ class="form-control card_inputs"

Ambito : - {{ $listEquipmentsProject->equipmentAssociationAmbit->first()->ambitsEquipment->ambits_description }} + {{ $listEquipmentsProject->equipmentAssociationAmbit->ambitsEquipment->ambits_description }}

-
- + @csrf