diff --git a/app/Http/Controllers/ClientController.php b/app/Http/Controllers/ClientController.php new file mode 100644 index 00000000..5c14643a --- /dev/null +++ b/app/Http/Controllers/ClientController.php @@ -0,0 +1,33 @@ +user_id; + + $recevePlantClient = Plant::where('user_id', $client)->get(); + + // Extrai os plant_id da coleção $recevePlantClient + $plantIds = $recevePlantClient->pluck('plant_id'); + + // Busca todos os CompanyProject que têm um plant_id dentro da lista $plantIds + $allProjectsClient = CompanyProject::whereIn('plant_id', $plantIds)->get(); + + return view('userClient.dashboardClient',compact('allProjectsClient')); + } + + public function receiveManageAssetsClient(){ + // return view() + + } +} diff --git a/app/Http/Controllers/ClienteController.php b/app/Http/Controllers/ClienteController.php new file mode 100644 index 00000000..90b1e231 --- /dev/null +++ b/app/Http/Controllers/ClienteController.php @@ -0,0 +1,29 @@ +user_id; + + $recevePlantClient = Plant::where('user_id', $client)->get(); + + // Extrai os plant_id da coleção $recevePlantClient + $plantIds = $recevePlantClient->pluck('plant_id'); + + // Busca todos os CompanyProject que têm um plant_id dentro da lista $plantIds + $allProjectsClient = CompanyProject::whereIn('plant_id', $plantIds)->get(); + + + return view('dashboardClient',compact('allProjectsClient')); + } +} diff --git a/app/Http/Controllers/CreateProjectController.php b/app/Http/Controllers/CreateProjectController.php index b1c67662..088f43c9 100755 --- a/app/Http/Controllers/CreateProjectController.php +++ b/app/Http/Controllers/CreateProjectController.php @@ -34,12 +34,14 @@ // use DataTables; -class CreateProjectController extends Controller { +class CreateProjectController extends Controller +{ - public function receiveUnits($numberProject) { + public function receiveUnits($numberProject) + { $PlantData = CompanyProject::where('company_projects_id', $numberProject)->first(); - if(!$PlantData) { + if (!$PlantData) { return response()->json([]); } @@ -57,7 +59,8 @@ public function receiveUnits($numberProject) { } - public function deleteFurtherTasks(Request $request) { + public function deleteFurtherTasks(Request $request) + { $receiveDataEquipment = Equipment::where('equipment_id', $request->equipmentID)->first(); // Buscar os registros que correspondem ao equipmentID e que têm further_tasks_id nos selectedTasks $tasksToDelete = OrderEquipmentTasks::where('equipment_id', $request->equipmentID) @@ -65,12 +68,12 @@ public function deleteFurtherTasks(Request $request) { ->get(); // Excluir esses registros - foreach($tasksToDelete as $task) { + foreach ($tasksToDelete as $task) { $task->delete(); } // Se o treatmentFurtherTask for "DeleteFurtherTask", exclua os registros da tabela principal FurtherTasks - if($request->treatmentFurtherTask == "DeleteFurtherTask") { + if ($request->treatmentFurtherTask == "DeleteFurtherTask") { FurtherTasks::whereIn('further_tasks_id', $request->selectedTasks)->delete(); } @@ -80,15 +83,16 @@ public function deleteFurtherTasks(Request $request) { ->get(); $executionOrder = 1; - foreach($remainingTasks as $task) { + foreach ($remainingTasks as $task) { $task->execution_order = $executionOrder; $task->save(); $executionOrder++; } - return redirect()->back()->with('success', 'Ordem de execução do equipamento: '.$receiveDataEquipment->equipment_tag.' Atulizada!'); + return redirect()->back()->with('success', 'Ordem de execução do equipamento: ' . $receiveDataEquipment->equipment_tag . ' Atulizada!'); } - public function addFurtherTasks(Request $request) { + public function addFurtherTasks(Request $request) + { // Recebe e organiza os dados do equipameto recebido : ($request->equipmentID) e organiza em asc de acordo com a Ordem de execução $equipmentId = $request->equipmentID; $tasksToReorder = OrderEquipmentTasks::where('equipment_id', $equipmentId) @@ -107,15 +111,15 @@ public function addFurtherTasks(Request $request) { $newFurtherTaskId = $elementalTasksCount + $furtherTasksCount + 1; // Calcule o valor de further_tasks_name - $newFurtherTaskName = 'TC'.($furtherTasksCount + 1); + $newFurtherTaskName = 'TC' . ($furtherTasksCount + 1); $insertPosition = $request->ArrayListElementsTasks + 1; // Incrementar a execution_order das tarefas após a posição de inserção - foreach($tasksToReorder as $task) { - if($task->execution_order >= $insertPosition) { + foreach ($tasksToReorder as $task) { + if ($task->execution_order >= $insertPosition) { $task->execution_order += 1; $task->save(); } @@ -128,7 +132,7 @@ public function addFurtherTasks(Request $request) { $newOrderEquipmentTask->elemental_tasks_id = null; // Se o selectedFurtherTaskExisting for null quer dizer que e uma TC complementar criada e nova se nao for null quer dizer que vamos criar uma TC existente. - if($request->selectedFurtherTaskExisting == 'null') { + if ($request->selectedFurtherTaskExisting == 'null') { // Cria uma nova tarefa Complementar $newFurtherTask = new FurtherTasks; @@ -146,17 +150,18 @@ public function addFurtherTasks(Request $request) { $newOrderEquipmentTask->inspection = 2; $newOrderEquipmentTask->save(); - return redirect()->back()->with('success', 'Ordem de execução do equipamento: '.$receiveDataEquipment->equipment_tag.' Atulizada!'); + return redirect()->back()->with('success', 'Ordem de execução do equipamento: ' . $receiveDataEquipment->equipment_tag . ' Atulizada!'); } - public function receiveEquipmentToAssociateTasks(Request $request) { + public function receiveEquipmentToAssociateTasks(Request $request) + { // dd($request); - foreach($request->equipment as $equipment) { + foreach ($request->equipment as $equipment) { $equipmentModel = Equipment::where('equipment_id', $equipment['equipment_id'])->first(); - if($equipmentModel) { + if ($equipmentModel) { $equipmentModel->company_projects_id = $request->receiveNumberProject; $equipmentModel->save(); } @@ -164,7 +169,8 @@ public function receiveEquipmentToAssociateTasks(Request $request) { return redirect()->back()->with('success', 'Equipametos associados a Obra com Sucesso !'); } - public function receiveUnitsForExcelTemplate($numberProject) { + public function receiveUnitsForExcelTemplate($numberProject) + { $receveCompanyProject = CompanyProject::where('company_projects_id', $numberProject)->first(); $recevePlant = Plant::where('plant_id', $receveCompanyProject->plant_id)->first(); $receveUnits = Unit::where('plant_id', $recevePlant->plant_id)->get(); @@ -174,16 +180,17 @@ public function receiveUnitsForExcelTemplate($numberProject) { // Get the second sheet $sheet = $spreadsheet->getSheet(1); // Sheet index starts from 0 $row = 1; // Row number where you want to start inserting data - foreach($receveUnits as $unit) { + foreach ($receveUnits as $unit) { // Set value for column D - $sheet->setCellValue('D'.$row, $unit->unit_name); + $sheet->setCellValue('D' . $row, $unit->unit_name); $row++; } // Generate and return the download response return $this->createDownloadResponse($spreadsheet, 'Valves_Template.xlsx'); } - protected function createDownloadResponse($spreadsheet, $filename) { + protected function createDownloadResponse($spreadsheet, $filename) + { // Create a writer object $writer = new Xlsx($spreadsheet); // Create a StreamedResponse with a callback @@ -194,13 +201,14 @@ function () use ($writer) { ); // Set headers to indicate we're sending an Excel file $response->headers->set('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); - $response->headers->set('Content-Disposition', 'attachment;filename="'.$filename.'"'); + $response->headers->set('Content-Disposition', 'attachment;filename="' . $filename . '"'); $response->headers->set('Cache-Control', 'max-age=0'); return $response; } - public function finishCreatingProject($numberProject) { + public function finishCreatingProject($numberProject) + { // recebe atraves de sessao toda a vez quem entra no componente 'SelectElementalTasksInWonkstation' para selecionar as tarefas de cada Workstation $receiveAllFurtherTasks = session('receiveAllFurtherTasks'); $receiveElementalTasks = session('receiveElementalTasks'); @@ -213,12 +221,12 @@ public function finishCreatingProject($numberProject) { // Recebe todos os dados dos postos de Trabalho $receiveWorkstaions = ConstructionWorkstation::where('company_projects_id', $numberProject)->get(); - foreach($receiveWorkstaions as $workstation) { + foreach ($receiveWorkstaions as $workstation) { // Verifica se o ID da workstation está presente na tabela WorkstationsAssociationTasks $exists = WorkstationsAssociationTasks::where('id_workstations', $workstation->id_workstations)->exists(); // Se não existe na tabela, adiciona à lista das workstations onde nao tem tarefas atribuidas ainda. - if(!$exists) { + if (!$exists) { $missingWorkstations[$workstation->id_workstations] = [ 'name_workstations' => $workstation->name_workstations, 'nomenclature_workstation' => $workstation->nomenclature_workstation @@ -230,22 +238,22 @@ public function finishCreatingProject($numberProject) { $workstationIds = $receiveWorkstaions->pluck('id_workstations')->toArray(); // Iterar sobre cada tarefa em $receiveElementalTasks - foreach($receiveElementalTasks as $taskGroup) { - foreach($taskGroup as $taskId => $taskDetails) { + foreach ($receiveElementalTasks as $taskGroup) { + foreach ($taskGroup as $taskId => $taskDetails) { // Verificar se a tarefa está associada a algum id_workstations $exists = WorkstationsAssociationTasks::whereIn('id_workstations', $workstationIds) ->where('elemental_tasks_id', $taskId) ->exists(); // Se não existe, adicionar à lista de tarefas faltantes - if(!$exists) { + if (!$exists) { $missingElementalTasks[$taskId] = $taskDetails; } } } // Iterar sobre cada tarefa em $receiveAllFurtherTasks - foreach($receiveAllFurtherTasks as $furtherTask) { + foreach ($receiveAllFurtherTasks as $furtherTask) { // Obter o ID da tarefa $taskId = $furtherTask->further_tasks_id; @@ -255,7 +263,7 @@ public function finishCreatingProject($numberProject) { ->exists(); // Se não existe, adicionar à lista de tarefas faltantes - if(!$exists) { + if (!$exists) { $missingFurtherTasksDetails[$taskId] = [ 'name' => $furtherTask->further_tasks_name, 'description' => $furtherTask->further_tasks_description @@ -272,7 +280,7 @@ public function finishCreatingProject($numberProject) { // Verificar se todos os arrays internos estão vazios $isEmpty = empty($allMissingTasks['elemental']) && empty($allMissingTasks['further']) && empty($allMissingTasks['workstation']); - if(!$isEmpty) { + if (!$isEmpty) { return redirect()->back()->with('errors', $allMissingTasks); } else { $project = CompanyProject::find($numberProject); @@ -283,11 +291,12 @@ public function finishCreatingProject($numberProject) { } } - public function deleteWorkstation($name) { + public function deleteWorkstation($name) + { $workstation = ConstructionWorkstation::where('name_workstations', $name)->first(); $removeAcountUserWorkstation = User::where('user_name', $workstation->name_workstations)->first(); - if($workstation && $removeAcountUserWorkstation) { + if ($workstation && $removeAcountUserWorkstation) { $workstation->delete(); $removeAcountUserWorkstation->delete(); @@ -305,19 +314,19 @@ public function deleteWorkstation($name) { ->orderByRaw("CAST(SUBSTRING(SUBSTRING_INDEX(name_workstations, '-', 1), 12) AS UNSIGNED) DESC") ->get(); - foreach($workstationsToUpdate as $workstationToUpdate) { + 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->name_workstations = 'workstation' . ($currentWorkstationNumber - 1) . '-' . $projectNumber; $workstationToUpdate->save(); // atualizar Utilizador associado - $userToUpdate = User::where('user_name', 'workstation'.$currentWorkstationNumber.'-'.$projectNumber)->first(); - if($userToUpdate) { - $userToUpdate->user_name = 'workstation'.($currentWorkstationNumber - 1).'-'.$projectNumber; + $userToUpdate = User::where('user_name', 'workstation' . $currentWorkstationNumber . '-' . $projectNumber)->first(); + if ($userToUpdate) { + $userToUpdate->user_name = 'workstation' . ($currentWorkstationNumber - 1) . '-' . $projectNumber; $userToUpdate->save(); } } @@ -327,11 +336,12 @@ public function deleteWorkstation($name) { return back()->with('danger', 'Posto de Trabalho não encontrado!'); } - public function removeProjectEquipment(Request $request) { + public function removeProjectEquipment(Request $request) + { $equipment = Equipment::find($request->EquipmentID); - if($request->removalType == 'total') { + if ($request->removalType == 'total') { $equipment->delete(); return back()->with('success', 'Equipamento Excluido com sucesso!'); @@ -341,7 +351,8 @@ public function removeProjectEquipment(Request $request) { return back()->with('success', 'Equipamento retirado da obra !'); } - public function EditEquipmentsProjects(Request $request) { + public function EditEquipmentsProjects(Request $request) + { // dd($request); // Localiza o equipment pelo numberProject $equipment = Equipment::find($request->equipmentId); @@ -355,22 +366,22 @@ public function EditEquipmentsProjects(Request $request) { $equipment->save(); - if($request->input('attributes')) { - foreach($request->input('attributes') as $key => $value) { + if ($request->input('attributes')) { + foreach ($request->input('attributes') as $key => $value) { // Verifica se o valor é null e a chave é um número (correspondendo aos general_attributes_equipment_id) - if($value == null && is_numeric($key)) { + if ($value == null && is_numeric($key)) { // Procura o registro relevante em SpecificAttributesEquipmentType $specificAttributes = SpecificAttributesEquipmentType::where('equipment_id', $request->equipmentId) ->where('general_attributes_equipment_id', $key) ->first(); // Se o registro existir, o deleta - if($specificAttributes) { + if ($specificAttributes) { $specificAttributes->delete(); } } // Se o valor não for null, atualiza ou cria um novo registro - elseif($value !== null && is_numeric($key)) { + elseif ($value !== null && is_numeric($key)) { // Procura o registro relevante em SpecificAttributesEquipmentType $specificAttributes = SpecificAttributesEquipmentType::where('equipment_id', $request->equipmentId) @@ -378,7 +389,7 @@ public function EditEquipmentsProjects(Request $request) { ->first(); // Se o registro existir, atualiza o valor - if($specificAttributes) { + if ($specificAttributes) { $specificAttributes->specific_attributes_value = $value; $specificAttributes->save(); } @@ -398,18 +409,18 @@ public function EditEquipmentsProjects(Request $request) { // Se não 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); + 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); } $executionOrder = 1; - foreach($request->input('ordemTasks') as $key => $value) { + foreach ($request->input('ordemTasks') as $key => $value) { $orderEquipmentTask = OrderEquipmentTasks::where('equipment_id', $request->equipmentId) ->where('elemental_tasks_id', $key) ->first(); - if($value == "on") { - if(!$orderEquipmentTask) { + if ($value == "on") { + if (!$orderEquipmentTask) { $orderEquipmentTask = new OrderEquipmentTasks(); $orderEquipmentTask->equipment_id = $request->equipmentId; $orderEquipmentTask->elemental_tasks_id = $key; @@ -418,7 +429,7 @@ public function EditEquipmentsProjects(Request $request) { $orderEquipmentTask->save(); $executionOrder++; - } elseif($value == "off" && $orderEquipmentTask) { + } elseif ($value == "off" && $orderEquipmentTask) { $orderEquipmentTask->delete(); } } @@ -429,7 +440,7 @@ public function EditEquipmentsProjects(Request $request) { ->orderBy('execution_order', 'asc') ->get(); - foreach($remainingOrderEquipmentTasks as $orderEquipmentTask) { + foreach ($remainingOrderEquipmentTasks as $orderEquipmentTask) { $orderEquipmentTask->execution_order = $executionOrder; $orderEquipmentTask->save(); $executionOrder++; @@ -440,17 +451,18 @@ public function EditEquipmentsProjects(Request $request) { ->get(); $taskExecutionOrders = []; - foreach($orderTasks as $task) { + foreach ($orderTasks as $task) { $taskExecutionOrders[$task->elemental_tasks_id] = $task->execution_order; } // Retorna uma resposta return redirect()->route('test2', ['id' => $request->numberProject]) - ->with('success', 'Equipamento '.$equipment->equipment_tag.' Editado com Sucesso!!!') + ->with('success', 'Equipamento ' . $equipment->equipment_tag . ' Editado com Sucesso!!!') ->with('taskExecutionOrders', $taskExecutionOrders); } - public function showJson($id) { + public function showJson($id) + { $attributes = SpecificAttributesEquipmentType::where('equipment_id', $id)->get(); $OrdemTasks = OrderEquipmentTasks::where('equipment_id', $id)->get(); $allElementalTasks = ElementalTasks::all(); @@ -462,7 +474,8 @@ public function showJson($id) { ]); } - public function receveTasksWorkstationPlanning($WorkstationId) { + public function receveTasksWorkstationPlanning($WorkstationId) + { $workstationsAssociationTasks = WorkstationsAssociationTasks::where('id_workstations', $WorkstationId)->get(); return response()->json([ @@ -471,7 +484,8 @@ public function receveTasksWorkstationPlanning($WorkstationId) { } - public function createWorkStations(Request $request) { + public function createWorkStations(Request $request) + { // Pega o número de estações de trabalho do request $numberWorkstations = $request->numberWorkstations; @@ -487,15 +501,15 @@ public function createWorkStations(Request $request) { // Se houver uma estação de trabalho anterior, extrai o número dela $startNumber = 1; - if($lastWorkstation) { + if ($lastWorkstation) { $parts = explode('-', $lastWorkstation->name_workstations); $startNumber = intval(str_replace('workstation', '', $parts[0])) + 1; } // Loop para criar as estações de trabalho e seus logins - for($i = $startNumber; $i < $startNumber + $numberWorkstations; $i++) { + for ($i = $startNumber; $i < $startNumber + $numberWorkstations; $i++) { $workstation = new ConstructionWorkstation(); - $workstation->name_workstations = 'workstation'.$i.'-'.$numberProject; + $workstation->name_workstations = 'workstation' . $i . '-' . $numberProject; $workstation->company_projects_id = $numberProject; $workstation->save(); @@ -505,22 +519,23 @@ public function createWorkStations(Request $request) { //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->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->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 !!!') + ->with('success', $numberWorkstations . ' Postos de Trabalho criados !!!') ->with('listWorkstations', $listWorkstations); } // Funcao apenas para retornar os dados necessarios para a view criar uma Obra. - public function createProjectForStep1() { + public function createProjectForStep1() + { $companies = User::where('type_users', 3)->get(); // Apos terminar não vai ficar step 1 return view('projectsClients/createProject', ['step' => 1], ['companies' => $companies]); @@ -528,7 +543,8 @@ public function createProjectForStep1() { // Progress Bar //Devolve para a primeira para na Descrição do projecto apenas user com ID 3, quer dizer que apenas as "empresas" - public function showStep1($company_projects_id) { + public function showStep1($company_projects_id) + { // $projects = CompanyProject::find($company_projects_id); $projects = CompanyProject::with('user')->find($company_projects_id); @@ -541,16 +557,19 @@ public function showStep1($company_projects_id) { } // Se forem alterados dados dos Detalhes da Obra, vai ser alterado - public function EditprocessStep1(Request $request) { + public function EditprocessStep1(Request $request) + { } - public function removePendingEquipment($id) { + public function removePendingEquipment($id) + { $equipment = PendingEquipment::findOrFail($id); $equipment->delete(); return back()->with('success', 'Equipamento pendente removido com sucesso!'); } - public function CreateNewEquipmentFromPendingEquipment(Request $request, $id) { + public function CreateNewEquipmentFromPendingEquipment(Request $request, $id) + { $checkPendingEquipment = PendingEquipment::findOrFail($id); $counter = 2; @@ -558,15 +577,15 @@ public function CreateNewEquipmentFromPendingEquipment(Request $request, $id) { $baseDescription = $checkPendingEquipment->pending_equipment_description; // Ciclo para verificar se ja existe um equipamento com o mesmo nome se existir vai criando com o contador iniciado a partir de (2) - while(Equipment::where('equipment_tag', $baseTag."({$counter})")->orWhere('equipment_description', $baseDescription."({$counter})")->exists()) { + while (Equipment::where('equipment_tag', $baseTag . "({$counter})")->orWhere('equipment_description', $baseDescription . "({$counter})")->exists()) { $counter++; } $newEquipment = new Equipment; $newEquipment->unit_id = $checkPendingEquipment->pending_equipment_unit_id; $newEquipment->equipment_type_id = $checkPendingEquipment->pending_equipment_type_id; - $newEquipment->equipment_tag = $baseTag."({$counter})"; - $newEquipment->equipment_description = $baseDescription."({$counter})"; + $newEquipment->equipment_tag = $baseTag . "({$counter})"; + $newEquipment->equipment_description = $baseDescription . "({$counter})"; $newEquipment->equipment_serial_number = $checkPendingEquipment->pending_equipment_serial_number; $newEquipment->equipment_brand = $checkPendingEquipment->pending_equipment_brand; $newEquipment->equipment_model = $checkPendingEquipment->pending_equipment_model; @@ -585,15 +604,16 @@ public function CreateNewEquipmentFromPendingEquipment(Request $request, $id) { $checkPendingEquipment->delete(); - return back()->with('success', 'Equipamento '.$newEquipment->equipment_tag.' criado com sucesso'); + return back()->with('success', 'Equipamento ' . $newEquipment->equipment_tag . ' criado com sucesso'); } - public function processStep1(Request $request) { + public function processStep1(Request $request) + { // Validação... $installationId = $request->input('installation_id'); - if($installationId == 'new_install') { + if ($installationId == 'new_install') { // Criar uma nova instalação... $newInstallation = new Plant; @@ -617,7 +637,7 @@ public function processStep1(Request $request) { $project->project_company_responsible = $request->input('responsible_project_company'); // Verifica se e igual a nulo , se for usa a data ja existente - if($request->date_started === null) { + if ($request->date_started === null) { $project->date_started = $request->input('date_started_present'); } else $project->date_started = $request->input('date_started'); @@ -637,7 +657,8 @@ public function processStep1(Request $request) { ->with('success', 'Detalhes, Projecto criado com sucesso'); } - public function showStep2($company_projects_id) { + public function showStep2($company_projects_id) + { // Verifique se a etapa 1 foi concluída // if (!session('form_data.step1')) { @@ -686,10 +707,10 @@ public function showStep2($company_projects_id) { // dd($checkUnits); $pendingEquipments = PendingEquipment::where('pending_company_projects_id', $numberProject)->get(); - if(!$pendingEquipments->isEmpty()) { + if (!$pendingEquipments->isEmpty()) { // Retornamos para a view 'step' => 2 indicando conclusao da primeira parte, $numberProject para associacao de equipamentos a esta obra, alem de todos os equipamentos e fabricao ja existente com base na Instalação que se iniciou a obra. return view('projectsClients/articulated_2', ['step' => 2, 'numberProject' => $numberProject]) - ->with('danger', 'Equipamentos Pendentes: '.count($pendingEquipments)) + ->with('danger', 'Equipamentos Pendentes: ' . count($pendingEquipments)) ->with('pendingEquipments', $pendingEquipments) ->with('listEquipmentsProjects', $listEquipmentsProjects) ->with('typeEquipments', $typeEquipments) @@ -705,7 +726,8 @@ public function showStep2($company_projects_id) { ->with('receiveNumberProject', $project); } - public function createEquipmentManual(Request $request) { + public function createEquipmentManual(Request $request) + { // EquipmentAmbit // *** Recebe a Instalação(Plant), com base no número da Obra Criada $receivePlant = DB::table('plants') @@ -726,7 +748,7 @@ public function createEquipmentManual(Request $request) { 'unit_id' => $request->unit_id ]); - if($existingEquipment) { + if ($existingEquipment) { return redirect()->route('test2', ['id' => $request->numberProject]) ->with('danger', 'Equipamento ja Existe !!') ->with('listEquipmentsProjects', $listEquipmentsProjects); @@ -736,7 +758,7 @@ public function createEquipmentManual(Request $request) { $newEquipmentProject = new Equipment; // Se for uma fabrica(Unit) existente - if($request->new_unit_name == null) { + if ($request->new_unit_name == null) { $newEquipmentProject->unit_id = $request->unit_id; } else { @@ -772,8 +794,8 @@ public function createEquipmentManual(Request $request) { // Recebe esta associacao, e cria um array para cada 'name'(inputs) igual ao 'general_attributes_equipment_description', contanto que seu valor(input) seja diferente de *NULL, assim o "$receivesAssociationAttributes" recebe o id de acordo com a tabela , o nome de acordo com a tabela e o valor do $request recebido associado ao campo $receivesAssociationAttributes = []; - foreach($checkAtributs as $description => $id) { - if($request[$description] !== null) { + foreach ($checkAtributs as $description => $id) { + if ($request[$description] !== null) { $receivesAssociationAttributes[] = [ 'general_attributes_equipment_id' => $id, 'general_attributes_equipment_description' => $description, @@ -782,7 +804,7 @@ public function createEquipmentManual(Request $request) { } } // Para cada um dos Arrays criados acima, vai criar os novos dados na tabela 'SpecificAttributesEquipmentType' - foreach($receivesAssociationAttributes as $receivesAssociationAttribute) { + foreach ($receivesAssociationAttributes as $receivesAssociationAttribute) { $AddAtributsEquipments = new SpecificAttributesEquipmentType; $AddAtributsEquipments->equipment_id = $equipmentID; $AddAtributsEquipments->equipment_type_id = $request->equipmentTypeId; @@ -803,7 +825,7 @@ public function createEquipmentManual(Request $request) { //Recebe a tabela com as associoacoes entre Âmbitos e tarefas Elementares $TasksAssociationAmbits = TasksAssociationAmbits::all()->where('ambits_equipment_id', $AssociationEquipmentAmbit->ambits_id); - foreach($TasksAssociationAmbits as $TasksAssociationAmbit) { + foreach ($TasksAssociationAmbits as $TasksAssociationAmbit) { $JoinsEquipmentsWithTasks = new OrderEquipmentTasks; $JoinsEquipmentsWithTasks->equipment_id = $equipmentID; $JoinsEquipmentsWithTasks->execution_order = $execution_order++; @@ -819,20 +841,26 @@ public function createEquipmentManual(Request $request) { ->with('success', 'Equipamento criado com sucesso') ->with('listEquipmentsProjects', $listEquipmentsProjects); } - public function receiveIdEquipment(Equipment $equipment) { + public function receiveIdEquipment(Equipment $equipment) + { // return response()->json($equipment); return view('projectsClients/articulated_2', ['equipment' => $equipment]); } - public function processStep2(Request $request) { + public function processStep2(Request $request) + { + // Valide e processe os dados do formulário $file = $request->file('documento'); // Recebe a id do Projecto criado $company_projects_id = $request->numberProject; + // Inicializa o contador para ispt_number + $isptNumber = 1; + // Certifique-se de que um arquivo foi enviado - if($file) { + if ($file) { // Carregue o arquivo Excel $spreadsheet = IOFactory::load($file->path()); @@ -849,19 +877,19 @@ public function processStep2(Request $request) { $countNewEquipment = 0; // Comece a partir da sexta linha - for($i = 6; $i < count($data); $i++) { + for ($i = 6; $i < count($data); $i++) { $dadosLinha = $data[$i]; // Verifica se os 5 primeiros campos essenciais estao preenchidos, um deles não estiver preenchido ele ignora e não cria o equipamento $isEmpty = false; - for($j = 0; $j < 5; $j++) { - if(empty($dadosLinha[$j])) { + for ($j = 0; $j < 5; $j++) { + if (empty($dadosLinha[$j])) { $isEmpty = true; break; } } - if($isEmpty) { + if ($isEmpty) { continue; } @@ -884,7 +912,7 @@ public function processStep2(Request $request) { ->where('equipment_tag', $datas['tag']) ->first(); - if($existingEquipment) { + if ($existingEquipment) { // Se o equipamento existir, crie o novo equipamento na tabela pending_equipaments. $pendingEquipament = new PendingEquipment; @@ -914,20 +942,22 @@ public function processStep2(Request $request) { $newEquipament->equipment_tag = $datas['tag']; $newEquipament->equipment_serial_number = $datas['n_serie']; $newEquipament->equipment_model = $datas['modelo']; + $newEquipament->ispt_number = $isptNumber; $newEquipament->company_projects_id = $company_projects_id; $newEquipament->save(); - $countNewEquipment++; + $isptNumber++; + // Guardo os valores de 'id' e do 'tipo de equipamento' que nosso novo equipamento acabado de criar $receveEquipment_ID = $newEquipament->equipment_id; $receveEquipament_type_ID = $newEquipament->equipment_type_id; $ambit = AmbitsEquipment::where('ambits_description', $datas['ambito'])->first(); - if($ambit) { + if ($ambit) { $ambit_id = $ambit->ambits_id; } @@ -943,7 +973,7 @@ public function processStep2(Request $request) { //Recebe a tabela com as associoacoes entre Âmbitos e tarefas Elementares $TasksAssociationAmbits = TasksAssociationAmbits::all()->where('ambits_equipment_id', $AssociationEquipmentAmbit->ambits_id); - foreach($TasksAssociationAmbits as $TasksAssociationAmbit) { + foreach ($TasksAssociationAmbits as $TasksAssociationAmbit) { $JoinsEquipmentsWithTasks = new OrderEquipmentTasks; $JoinsEquipmentsWithTasks->equipment_id = $receveEquipment_ID; $JoinsEquipmentsWithTasks->execution_order = $execution_order++; @@ -957,9 +987,9 @@ public function processStep2(Request $request) { $generalAttributes = GeneralAttributesEquipment::all(); - foreach($generalAttributes as $generalAttribute) { + foreach ($generalAttributes as $generalAttribute) { // Verifica se a chave existe em $datas, comparando com os dados da tabela : GeneralAttributesEquipment assim adicionando todos diferentes de NULL relacionados com o equipamento acabado de cria - if(isset($datas[$generalAttribute->general_attributes_equipment_description])) { + if (isset($datas[$generalAttribute->general_attributes_equipment_description])) { $specificAttribute = new SpecificAttributesEquipmentType; $specificAttribute->equipment_id = $receveEquipment_ID; @@ -976,15 +1006,15 @@ public function processStep2(Request $request) { $pendingEquipments = PendingEquipment::where('pending_company_projects_id', $request->numberProject)->get(); // $pendingEquipments = session('pendingEquipments'); - if($countPendingEquipments != 0) { + if ($countPendingEquipments != 0) { // return redirect()->route('test2')->with('Danger', 'Equipamentos Pendentes')->with('listValves', $listValves)->with('pendingEquipments', $pendingEquipments); return redirect()->route('test2', ['id' => $request->numberProject]) - ->with('danger', 'Equipamentos Pendentes criados : '.$countPendingEquipments) + ->with('danger', 'Equipamentos Pendentes criados : ' . $countPendingEquipments) ->with('pendingEquipments', $pendingEquipments); // ->with('success', 'Equipamentos Criados :' . count($listValves)) } return redirect()->route('test2', ['id' => $request->numberProject]) - ->with('success', 'Equipamentos Criados :'.$countNewEquipment); + ->with('success', 'Equipamentos Criados :' . $countNewEquipment); } //Nao chega aqui ainda pois volta para a pagina com dados ja carregados. @@ -995,33 +1025,34 @@ public function processStep2(Request $request) { return redirect('/test3'); } - public function showStep3($company_projects_id) { + public function showStep3($company_projects_id) + { $equipments = Equipment::where('company_projects_id', $company_projects_id) ->get(); - foreach($equipments as $equipment) { + foreach ($equipments as $equipment) { $tags = []; - if($equipment->equipment_type_id == 3) { + if ($equipment->equipment_type_id == 3) { $tags = ['@Corpo', '@Flange', '@Obturador']; - } elseif($equipment->equipment_type_id == 1) { + } elseif ($equipment->equipment_type_id == 1) { $tags = ['@Corpo', '@Flange']; } - foreach($tags as $tag) { + foreach ($tags as $tag) { $associatedEquipment = QrcodesAssociatedEquipment::where('equipment_id', $equipment->equipment_id) - ->where('component_tag', 'LIKE', '%'.$tag) + ->where('component_tag', 'LIKE', '%' . $tag) ->first(); - if($associatedEquipment) { + if ($associatedEquipment) { // Atualizar a coluna component_tag para ser igual à equipment_tag, mantendo a parte após o "@" - $newComponentTag = $equipment->equipment_tag.$tag; + $newComponentTag = $equipment->equipment_tag . $tag; $associatedEquipment->component_tag = $newComponentTag; $associatedEquipment->save(); } else { // Criar uma nova entrada QrcodesAssociatedEquipment::create([ 'equipment_id' => $equipment->equipment_id, - 'component_tag' => $equipment->equipment_tag.$tag + 'component_tag' => $equipment->equipment_tag . $tag ]); } } @@ -1031,7 +1062,7 @@ public function showStep3($company_projects_id) { $allEquipmentIds = Equipment::where('company_projects_id', $company_projects_id)->pluck('equipment_id')->toArray(); $orphanedEntries = QrcodesAssociatedEquipment::whereNotIn('equipment_id', $allEquipmentIds)->get(); - foreach($orphanedEntries as $orphanedEntry) { + foreach ($orphanedEntries as $orphanedEntry) { $orphanedEntry->delete(); } @@ -1049,13 +1080,14 @@ public function showStep3($company_projects_id) { ->with('futherTasks', $futherTasks); } - public function workstationsAssociationTasks(Request $request) { + 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) { + if ($workStation) { $workStation->nomenclature_workstation = $request->nameWorkstation; $workStation->save(); } @@ -1063,11 +1095,11 @@ public function workstationsAssociationTasks(Request $request) { // Atualizar a lista de tipos de tarefas para incluir os novos grupos $taskTypes = ['generalTasks', '1', '2', '3', 'FurtherTasks']; - foreach($taskTypes as $groupTasks) { - if(isset($request[$groupTasks])) { // Checar se esse grupo de tarefas existe no request - foreach($request[$groupTasks] as $taskID => $check) { + foreach ($taskTypes as $groupTasks) { + if (isset($request[$groupTasks])) { // Checar se esse grupo de tarefas existe no request + foreach ($request[$groupTasks] as $taskID => $check) { - if($groupTasks == 'FurtherTasks') { + if ($groupTasks == 'FurtherTasks') { // Encontra a tarefa existente, se houver, para FurtherTasks $taskAssociation = WorkstationsAssociationTasks::where('id_workstations', $workStation->id_workstations) ->where('further_tasks_id', $taskID) @@ -1081,11 +1113,11 @@ public function workstationsAssociationTasks(Request $request) { ->first(); } - if($check == 'on') { - if(!$taskAssociation) { + if ($check == 'on') { + if (!$taskAssociation) { $taskAssociation = new WorkstationsAssociationTasks; $taskAssociation->id_workstations = $workStation->id_workstations; - if($groupTasks == 'FurtherTasks') { + if ($groupTasks == 'FurtherTasks') { $taskAssociation->further_tasks_id = $taskID; // Usando $taskID, que é a key } else { $taskAssociation->elemental_tasks_id = $taskID; // Usando $taskID, que é a key @@ -1093,7 +1125,7 @@ public function workstationsAssociationTasks(Request $request) { $taskAssociation->company_projects_id = $workStation->company_projects_id; } $taskAssociation->save(); - } elseif($check == 'off' && $taskAssociation) { + } elseif ($check == 'off' && $taskAssociation) { $taskAssociation->delete(); } } @@ -1102,10 +1134,11 @@ public function workstationsAssociationTasks(Request $request) { // Redirecionar de volta com uma mensagem de sucesso - return back()->with('success', 'Posto de trabalho : '.$workStation->name_workstations.' atualizado com sucesso!'); + return back()->with('success', 'Posto de trabalho : ' . $workStation->name_workstations . ' atualizado com sucesso!'); } - public function processStep3(Request $request) { + public function processStep3(Request $request) + { // Valide e processe os dados do formulário // ... session(['form_data.step3' => $request->all()]); @@ -1115,7 +1148,8 @@ public function processStep3(Request $request) { // ... } - public function index() { + public function index() + { // $results = DB::table('equipaments') // ->join('specific_attributes_equipament_types', 'equipaments.equipment_ID', '=', 'specific_attributes_equipament_types.tb_equipament_id') // ->join('general_attributes_equipaments', 'specific_attributes_equipament_types.specific_Attributes_Equipment_Type_ID', '=', 'general_attributes_equipaments.general_Attributes_Equipment_ID') @@ -1133,8 +1167,8 @@ public function index() { $groupedEquipments = []; - foreach($results as $result) { - if(!isset($groupedEquipments[$result->tag])) { + foreach ($results as $result) { + if (!isset($groupedEquipments[$result->tag])) { $groupedEquipments[$result->tag] = []; } @@ -1146,8 +1180,8 @@ public function index() { $equipments = DB::table('equipments')->get(); - foreach($equipments as $equipment) { - if(isset($groupedEquipments[$equipment->tag])) { + foreach ($equipments as $equipment) { + if (isset($groupedEquipments[$equipment->tag])) { $equipment->specific_attributes = $groupedEquipments[$equipment->tag]; } } @@ -1159,18 +1193,20 @@ public function index() { } - public function listCompanies() { + public function listCompanies() + { $companies = User::where('type_users', 3)->get(); return view('projectsClients/createProject', ['companies' => $companies]); } - public function createProject(Request $request) { + public function createProject(Request $request) + { // Validação... $installationId = $request->input('installation_id'); - if($installationId == 'new_install') { + if ($installationId == 'new_install') { // Criar uma nova instalação... $newInstallation = new Unit; $newInstallation->installation_name = $request->input('new_company_name'); @@ -1201,8 +1237,9 @@ public function createProject(Request $request) { } - public function storeProject(Request $request) { - if($request->input('company_id') == 'new') { + public function storeProject(Request $request) + { + if ($request->input('company_id') == 'new') { $company = new CompanyProject; // Substitua "Company" pelo nome do seu modelo de empresas $company->name = $request->input('new_company_name'); $company->save(); @@ -1215,7 +1252,8 @@ public function storeProject(Request $request) { // Agora, você pode usar $company_id ao criar o projeto } - public function getByUserNif(Request $request) { + public function getByUserNif(Request $request) + { // dd(Plant::where('user_id', $request->input('user_id'))->get()); @@ -1225,7 +1263,8 @@ public function getByUserNif(Request $request) { return response()->json($installations); } - public function getAmbits($equipmentType) { + public function getAmbits($equipmentType) + { $ambits = DB::table('ambits_equipments') ->select('ambits_equipments.*') @@ -1234,7 +1273,8 @@ public function getAmbits($equipmentType) { return response()->json($ambits); } - public function getAttributes($id) { + public function getAttributes($id) + { $equipment = Equipment::with('specificAttributes')->find($id); return response()->json($equipment->specificAttributes); } diff --git a/app/Http/Controllers/ExecutionProjectController.php b/app/Http/Controllers/ExecutionProjectController.php index 44bf0296..b6157797 100755 --- a/app/Http/Controllers/ExecutionProjectController.php +++ b/app/Http/Controllers/ExecutionProjectController.php @@ -34,7 +34,7 @@ public function getDataEquipment(Request $request) // Query padrão que todas as dataTables recebem, a partir dele fazemos os filt $query = Equipment::with('equipmentType', 'unit') - ->select(['equipment_id', 'equipment_tag', 'unit_id', 'equipment_type_id']); + ->select(['equipment_id','ispt_number' ,'equipment_tag', 'unit_id', 'equipment_type_id']); // Consultas para a Criacao da Obra, Ambas vao ser diferentes, pois na creacao, recebes os equipamentos por obra, porem no portifolio vamos buscar todos. if ($numberProject) { @@ -96,13 +96,6 @@ public function getDataEquipment(Request $request) return $actionBtn; }) - // ->addColumn('action', function ($equipment) use ($numberProject) { - // // Lógica para a coluna de ação com o link correto - // $actionBtn = ''; - // return $actionBtn; - // }) - - ->editColumn('unit_id', function ($equipment) { // Isto irá substituir 'unit_id' pelo 'unit_name' associado return $equipment->unit->unit_name ?? 'N/A'; diff --git a/app/Http/Middleware/CheckUserType.php b/app/Http/Middleware/CheckUserType.php index be7de576..618edcd2 100755 --- a/app/Http/Middleware/CheckUserType.php +++ b/app/Http/Middleware/CheckUserType.php @@ -16,18 +16,64 @@ class CheckUserType * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next */ - public function handle(Request $request, Closure $next, $routeType) + public function handle(Request $request, Closure $next) { - $userType = auth()->user()->userType->type_user; - - if ($routeType == 'enterWorkstation' && $userType != 'Técnico') { - return redirect()->route('home'); // ou qualquer rota padrão para redirecionar + if (!auth()->check()) { + return redirect()->route('login'); } - if ($routeType == 'home' && $userType != 'Super_Administrador') { - return redirect()->route('enterWorkstation'); // ou qualquer rota padrão para redirecionar + $userType = auth()->user()->userType->type_user; + $currentRouteName = $request->route()->getName(); + + // Permitir que o Super_Administrador acesse qualquer rota + if ($userType === 'Super_Administrador') { + return $next($request); + } + + // Obter as rotas permitidas para o tipo de usuário atual + $allowedRoutes = $this->getAllowedRoutesForUserType($userType); + + // Verificar se a rota atual está permitida para o tipo de usuário + if (!in_array($currentRouteName, $allowedRoutes)) { + // Redirecionar para a rota padrão do tipo de usuário + return redirect()->route($this->getDefaultRouteForUserType($userType)); } return $next($request); } + + /** + * Retorna as rotas permitidas para um dado tipo de usuário. + */ + protected function getAllowedRoutesForUserType($userType) + { + switch ($userType) { + case 'Técnico': + return ['enterWorkstation', 'getEquipmentData', 'receiveAnswersEquipment']; + case 'Empresa': + return ['dashboardClient', 'manageAssetsClient']; + // Adicione mais casos conforme necessário + default: + return []; + } + } + + /** + * Retorna a rota padrão para um dado tipo de usuário. + */ + protected function getDefaultRouteForUserType($userType) + { + switch ($userType) { + case 'Super_Administrador': + return 'home'; + case 'Técnico': + return 'enterWorkstation'; + case 'Empresa': + return 'dashboardClient'; + // Adicione mais casos conforme necessário + default: + } + } + + } diff --git a/resources/views/Templates/templateClient.blade.php b/resources/views/Templates/templateClient.blade.php new file mode 100644 index 00000000..74cdf2b2 --- /dev/null +++ b/resources/views/Templates/templateClient.blade.php @@ -0,0 +1,398 @@ + + + +
+ + + + + + + + + + {{-- --}} + + {{-- --}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{-- Graficos para gestao com chart.js --}} + + + + + + + + + + + + + +
+