Updating filter methods in tables with yajra and structure, as well as adding responsiveness to tables

This commit is contained in:
ygbanzato 2023-12-08 20:29:47 +00:00
parent 9112766a74
commit 5dca96d473
7 changed files with 1910 additions and 445 deletions

View File

@ -34,10 +34,30 @@
// use DataTables;
class CreateProjectController extends Controller
{
public function deleteFurtherTasks(Request $request)
{
class CreateProjectController extends Controller {
public function receiveUnits($numberProject) {
$PlantData = CompanyProject::where('company_projects_id', $numberProject)->first();
if(!$PlantData) {
return response()->json([]);
}
$receiveUnits = Unit::where('plant_id', $PlantData->plant_id)->get();
// Formatar a resposta para o formato esperado pelo JavaScript
$formattedUnits = $receiveUnits->map(function ($unit) {
return [
'id' => $unit->receiveUnits, // Ajuste para o nome da sua coluna correta
'name' => $unit->unit_name // Ajuste para o nome da sua coluna correta
];
});
return response()->json($formattedUnits);
}
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)
@ -45,12 +65,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();
}
@ -60,16 +80,15 @@ 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)
@ -88,15 +107,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();
}
@ -109,7 +128,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;
@ -127,25 +146,17 @@ 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();
}
@ -153,8 +164,7 @@ 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();
@ -164,17 +174,16 @@ 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
@ -185,14 +194,13 @@ 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');
@ -205,12 +213,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
@ -222,22 +230,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;
@ -247,7 +255,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
@ -264,7 +272,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);
@ -275,12 +283,11 @@ 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();
@ -298,19 +305,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();
}
}
@ -320,12 +327,11 @@ 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!');
@ -335,8 +341,7 @@ 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);
@ -350,22 +355,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)
@ -373,7 +378,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();
}
@ -393,18 +398,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;
@ -413,7 +418,7 @@ public function EditEquipmentsProjects(Request $request)
$orderEquipmentTask->save();
$executionOrder++;
} elseif ($value == "off" && $orderEquipmentTask) {
} elseif($value == "off" && $orderEquipmentTask) {
$orderEquipmentTask->delete();
}
}
@ -424,7 +429,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++;
@ -435,18 +440,17 @@ 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();
@ -458,8 +462,7 @@ public function showJson($id)
]);
}
public function receveTasksWorkstationPlanning($WorkstationId)
{
public function receveTasksWorkstationPlanning($WorkstationId) {
$workstationsAssociationTasks = WorkstationsAssociationTasks::where('id_workstations', $WorkstationId)->get();
return response()->json([
@ -468,8 +471,7 @@ 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;
@ -485,15 +487,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();
@ -503,32 +505,30 @@ 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]);
}
// 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,19 +541,16 @@ 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;
@ -561,15 +558,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;
@ -588,16 +585,15 @@ 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;
@ -621,7 +617,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');
@ -641,8 +637,7 @@ 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')) {
@ -677,19 +672,24 @@ public function showStep2($company_projects_id)
// $listEquipmentsProjects = Equipment::with(['unit', 'equipmentType', 'equipmentAssociationAmbit.ambitsEquipment'])
// ->where('company_projects_id', $company_projects_id)
// ->get();
$listEquipmentsProjects = Equipment::with(['unit', 'equipmentType', 'equipmentAssociationAmbit.ambitsEquipment', 'specificAttributes' => function ($query) {
$query->orderBy('specific_attributes_value', 'asc');
}])
$listEquipmentsProjects = Equipment::with([
'unit',
'equipmentType',
'equipmentAssociationAmbit.ambitsEquipment',
'specificAttributes' => function ($query) {
$query->orderBy('specific_attributes_value', 'asc');
}
])
->where('company_projects_id', $company_projects_id)
->get();
// 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,8 +705,7 @@ 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')
@ -727,7 +726,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);
@ -737,7 +736,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 {
@ -773,8 +772,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,
@ -783,7 +782,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;
@ -804,7 +803,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++;
@ -820,14 +819,12 @@ 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');
@ -835,7 +832,7 @@ public function processStep2(Request $request)
$company_projects_id = $request->numberProject;
// Certifique-se de que um arquivo foi enviado
if ($file) {
if($file) {
// Carregue o arquivo Excel
$spreadsheet = IOFactory::load($file->path());
@ -852,19 +849,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;
}
@ -887,7 +884,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;
@ -930,7 +927,7 @@ public function processStep2(Request $request)
$ambit = AmbitsEquipment::where('ambits_description', $datas['ambito'])->first();
if ($ambit) {
if($ambit) {
$ambit_id = $ambit->ambits_id;
}
@ -946,7 +943,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++;
@ -960,9 +957,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;
@ -979,15 +976,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.
@ -998,34 +995,33 @@ 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
]);
}
}
@ -1035,7 +1031,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();
}
@ -1053,14 +1049,13 @@ 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();
}
@ -1068,11 +1063,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)
@ -1086,11 +1081,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
@ -1098,7 +1093,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();
}
}
@ -1107,11 +1102,10 @@ 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()]);
@ -1121,8 +1115,7 @@ 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')
@ -1140,8 +1133,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] = [];
}
@ -1153,8 +1146,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];
}
}
@ -1166,20 +1159,18 @@ 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');
@ -1210,9 +1201,8 @@ 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();
@ -1225,8 +1215,7 @@ 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());
@ -1236,8 +1225,7 @@ 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.*')
@ -1246,8 +1234,7 @@ 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);
}

View File

@ -9,74 +9,110 @@
use App\Models\Equipment;
use App\Models\EquipmentComments;
use App\Models\EquipmentType;
use App\Models\OrderEquipmentTasks;
use App\Models\SpecificAttributesEquipmentType;
use App\Models\ElementalTasks;
use Yajra\DataTables\Facades\DataTables;
class ExecutionProjectController extends Controller
{
public function test11($equipmentID)
{
$dataEquipment =Equipment::find($equipmentID);
// dd($dataEquipment);
$attributes = SpecificAttributesEquipmentType::where('equipment_id', $equipmentID)->get(); // recebe todos os atributos espesificos do equipamento
$OrdemTasks = OrderEquipmentTasks::where('equipment_id', $equipmentID)->get(); // Todas as tarefas que o equipamento vai realizar :
$OrdemTasksIds = $OrdemTasks->pluck('elemental_tasks_id')->all(); // Array de IDs
return view ('projectsClients.articulated_2_ShowEquipment',compact('dataEquipment','OrdemTasks','OrdemTasksIds'));
}
public function getDataEquipment(Request $request)
{
// pode receber um request ou nao, depende de onde for chamado.
$numberProject = $request->get('numberProject');
$numberProject = $request->get('numberProject');
$checkUnits = $request->get('checkUnits');
$tipo_valvulasList = $request->get('tipo_valvulasList');
// Inicia a consulta
$query = Equipment::with('equipmentType')
->select(['equipment_id', 'equipment_tag', 'unit_id', 'equipment_type_id']);
$receiveAllClients = $request->get('receiveAllClients');
// Adiciona a cláusula where se numberProject for fornecido
if ($numberProject) {
$query->where('company_projects_id', $numberProject);
}
$receiveAllPlants = $request->get('receiveAllPlants');
// Executa a consulta e obtém os resultados
$equipment = $query->get();
$receiveAllUnits = $request->get('receiveAllUnits');
$receiveEquipmentsType = $request->get('receiveEquipmentsType');
// 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']);
// 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) {
$query->where('company_projects_id', $numberProject);
if ($checkUnits && $checkUnits !== '#') {
$query->where('unit_id', $checkUnits);
}
if ($tipo_valvulasList && $tipo_valvulasList !== '#') {
$query->where('equipment_type_id', $tipo_valvulasList);
}
}
//Filtar equipamentos por um cliente especifico.
if ($receiveAllClients && $receiveAllClients !== '#') {
// Filtra os equipamentos cujas unidades estão associadas às plantas do usuário especificado
$query->whereHas('unit.plant', function ($query) use ($receiveAllClients) {
$query->where('user_id', $receiveAllClients);
});
}
//Filtar equipamentos por uma instalacao especifica.
if ($receiveAllPlants && $receiveAllPlants !== '#') {
$query->whereHas('unit', function ($query) use ($receiveAllPlants) {
$query->where('plant_id', $receiveAllPlants);
});
}
if ($receiveAllUnits && $receiveAllUnits !== '#') {
$query->where('unit_id', $receiveAllUnits);
}
if ($receiveEquipmentsType && $receiveEquipmentsType !== '#') {
$query->where('equipment_type_id', $receiveEquipmentsType);
}
// Executa a consulta e obtém os resultados
$equipment = $query->get();
return DataTables::of($equipment)
->addColumn('unit_name', function ($equipment) {
// Retorna 'unit_name' do relacionamento 'unit'
return $equipment->unit ? $equipment->unit->unit_name : 'N/A';
})
->addColumn('equipment_type_name', function ($equipment) {
// Retorna 'equipment_type_name' do relacionamento 'equipmentType'
return $equipment->equipmentType ? $equipment->equipmentType->equipment_type_name : 'N/A';
})
->addColumn('action', function ($equipment) use ($numberProject) {
// Verifica se $numberProject não é nulo
if (!is_null($numberProject)) {
// Se não for nulo, usa a rota 'test11'
$actionBtn = '<a title="Detalhes do equipamento" href="' . route('test11', ['projectID' => $numberProject, 'equipmentID' => $equipment->equipment_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
} else {
// Se for nulo, usa a rota 'test22'
$actionBtn = '<a title="Detalhes do equipamento" href="' . route('test22', ['equipmentID' => $equipment->equipment_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
}
return $actionBtn;
})
// ->addColumn('action', function ($equipment) use ($numberProject) {
// // Lógica para a coluna de ação com o link correto
// $actionBtn = '<a title="Detalhes do equipamento" href="' . route('test11', ['equipmentID' => $equipment->equipment_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
// return $actionBtn;
// })
// $equipment = Equipment::with('equipmentType') // Certifique-se de que o método 'equipmentType' existe no modelo 'Equipment'
// ->select(['equipment_id', 'equipment_tag', 'unit_id', 'equipment_type_id'])
// ->where('company_projects_id', $numberProject);
return DataTables::of($equipment)
->addColumn('unit_name', function ($equipment) {
// Retorna 'unit_name' do relacionamento 'unit'
return $equipment->unit ? $equipment->unit->unit_name : 'N/A';
})
->addColumn('equipment_type_name', function ($equipment) {
// Retorna 'equipment_type_name' do relacionamento 'equipmentType'
return $equipment->equipmentType ? $equipment->equipmentType->equipment_type_name : 'N/A';
})
->addColumn('action', function ($equipment) use ($numberProject) {
// Lógica para a coluna de ação com o link correto
$actionBtn = '<a title="Detalhes do equipamento" href="' . route('test11', ['projectID' => $numberProject, 'equipmentID' => $equipment->equipment_id]) . '"><i class="fa-solid fa-eye text-primary"></i></a>';
return $actionBtn;
})
->editColumn('unit_id', function ($equipment) {
// Isto irá substituir 'unit_id' pelo 'unit_name' associado
return $equipment->unit->unit_name ?? 'N/A';
})
->editColumn('equipment_type_id', function ($equipment) {
// Isto irá substituir 'equipment_type_id' pelo 'equipment_type_name' associado
return $equipment->equipmentType->equipment_type_name ?? 'N/A';
})
->rawColumns(['action'])
->make(true);
->editColumn('unit_id', function ($equipment) {
// Isto irá substituir 'unit_id' pelo 'unit_name' associado
return $equipment->unit->unit_name ?? 'N/A';
})
->editColumn('equipment_type_id', function ($equipment) {
// Isto irá substituir 'equipment_type_id' pelo 'equipment_type_name' associado
return $equipment->equipmentType->equipment_type_name ?? 'N/A';
})
->rawColumns(['action'])
->make(true);
}
public function enterWorkstation()
@ -119,7 +155,7 @@ public function receiveEquipmentIdForShowModal($EquipmentID)
return $task->elementalTask->elemental_tasks_code;
})->toArray();
$receveControlEquipment = ControlEquipmentWorkstation::where('equipment_id', $EquipmentID)->get();
$receveControlEquipment = ControlEquipmentWorkstation::where('equipment_id', $EquipmentID)->get();
$receiveCommentsEquipment = EquipmentComments::where('equipment_id', $EquipmentID)->get();

View File

@ -3,6 +3,7 @@
namespace App\Http\Controllers;
use App\Models\AmbitsEquipment;
use App\Models\Unit;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
@ -13,6 +14,9 @@
use App\Models\CompanyProject;
use App\Models\User;
use App\Models\OrderEquipmentTasks;
use App\Models\SpecificAttributesEquipmentType;
use App\Models\ConstructionWorkstation;
use App\Models\EquipmentType;
@ -20,16 +24,64 @@
class ProjectoDatacontroller extends Controller
{
public function receivePlants($clientId)
{
if ($clientId == 'all') {
$allPlants = Plant::all();
return response()->json($allPlants);
}
dd($clientId);
public function receiveUnitsManageAssets($receivePlantClientRelated){
$UnitsData = Unit::where('plant_id',$receivePlantClientRelated)->get();
$formattedData = $UnitsData->map(function ($item) {
return [
'id' => $item->unit_id,
'name'=> $item->unit_name
];
});
return response()->json($formattedData);
}
public function receivePlants($receiveAllClients) {
$PlantData = Plant::where('user_id', $receiveAllClients)->get();
// Criando um array para armazenar os dados formatados
$formattedData = $PlantData->map(function ($item) {
return [
'id' => $item->plant_id,
'name' => $item->plant_name
];
});
// Retorna os dados em formato JSON
return response()->json($formattedData);
}
//Funcao que recebe a Acoes do dataTables das obrar em Planeamento.
public function test11($projectID,$equipmentID)
{
$dataEquipment =Equipment::find($equipmentID);
$attributes = SpecificAttributesEquipmentType::where('equipment_id', $equipmentID)->get(); // recebe todos os atributos espesificos do equipamento
$OrdemTasks = OrderEquipmentTasks::where('equipment_id', $equipmentID)->get(); // Todas as tarefas que o equipamento vai realizar :
$OrdemTasksIds = $OrdemTasks->pluck('elemental_tasks_id')->all(); // Array de IDs
return view ('projectsClients.articulated_2_ShowEquipment',compact('dataEquipment','OrdemTasks','OrdemTasksIds'));
}
//Funcao que recebe a Acoes do dataTables do portifolio.
public function test22($equipmentID){
$dataEquipment =Equipment::find($equipmentID);
$attributes = SpecificAttributesEquipmentType::where('equipment_id', $equipmentID)->get(); // recebe todos os atributos espesificos do equipamento
$OrdemTasks = OrderEquipmentTasks::where('equipment_id', $equipmentID)->get(); // Todas as tarefas que o equipamento vai realizar :
$OrdemTasksIds = $OrdemTasks->pluck('elemental_tasks_id')->all(); // Array de IDs
return view ('projectsClients.testRoute',compact('dataEquipment','OrdemTasks','OrdemTasksIds'));
}
public function getEquipmentDetails($receiveListEquipmentId)
{
$ids = explode(',', $receiveListEquipmentId);
@ -90,7 +142,9 @@ public function ManageAssets()
->join('users', 'plants.user_id', '=', 'users.user_id')
->select('plants.*', 'units.unit_name', 'users.user_name as user_name')
->get();
$equipments = Equipment::all();
// $equipaments = DB::table('equipaments')
// ->join('factories','equipaments.factory_id', '=', 'factories.factories_id')
// ->join('equipament_types', 'equipaments.equipament_type_id', '=' , 'equipament_types.equipament_type_id')
@ -98,6 +152,7 @@ public function ManageAssets()
// ->get();
$allEquipmentType = EquipmentType::all();
$allClients = User::where('type_users', 3)->get();
return view('Admin/DataManagement/manageassets', compact('units', 'equipments', 'allEquipmentType', 'allClients'));

View File

@ -17,7 +17,6 @@
</div>
</div><!-- /.container-fluid -->
</section>
<!-- /.content-header -->
<!-- Main content -->
@ -41,185 +40,204 @@ class="btn btn-block bg-gradient-primary btn-lg">{{ __('messages.portfolio.chang
<br>
<div class="card-light" id="cardAssetsTable">
<div class="card-header">
<h3 class="card-title">{{ __('messages.portfolio.change_buttons.asset_table') }}</h3>
</div>
<!-- /.card-header -->
<div class="card-body">
<table id="showProjectEquipment1" class="table table-bordered table-striped">
<thead>
<tr>
<th>ID</th>
<th>Tag</th>
<th>Fabrica</th>
<th>Tipo</th>
<th>Ações</th>
</tr>
</thead>
</table>
<div class="row text-center">
<div class="form-group col-sm">
<label>Cliente </label>
<select id="receiveAllClients" name="receiveAllClients" class="form-control">
<option value='#' selected>Mostrar Todos</option>
@foreach ($allClients as $client)
<option value="{{ $client->user_id }}">
{{ $client->user_name }}</option>
@endforeach
</select>
</div>
<script>
$(document).ready(function() {
<div class="form-group col-sm" id="card-receivePlantClientRelated">
<label>Instalações </label>
<select id="receivePlantClientRelated" name="receivePlantClientRelated"
class="form-control">
</select>
</div>
$('#showProjectEquipment1').DataTable({
processing: true,
serverSide: true,
ajax: {
url: '{{ route('getDataEquipment') }}',
type: 'GET',
},
columns: [{
data: 'equipment_id',
name: 'equipment_id'
},
{
data: 'equipment_tag',
name: 'equipment_tag'
},
{
data: 'unit_id',
name: 'unit_id'
},
{
data: 'equipment_type_id',
name: 'equipment_type_id'
},
{
data: 'action',
name: 'action',
orderable: false,
searchable: false
},
],
});
});
</script>
<div class="col-sm" id="card-receiveUnitsClientRelated">
<div class="form-group">
<label>Fábricas </label>
<select id="receiveUnitsClientRelated" name="receiveUnitsClientRelated"
class="form-control">
</select>
</div>
</div>
<div class="form-group col-sm">
<label>Tipo de Equipamento </label>
<select id="tipo_valvulasList" name="equipmentTypeId" class="form-control">
<option value='#' selected>Mostrar Todos</option>
@foreach ($allEquipmentType as $equipmentsType)
<option value="{{ $equipmentsType->equipment_type_id }}">
{{ $equipmentsType->equipment_type_name }}</option>
@endforeach
</select>
</div>
</div>
<!-- row text-center -->
<table id="showProjectEquipment1" class="table table-bordered table-striped">
<thead>
<tr>
<th>ID</th>
<th>Tag</th>
<th>Fabrica</th>
<th>Tipo</th>
<th>Ações</th>
</tr>
</thead>
</table>
</div>
<!-- /.card-body -->
</div>
{{-- ./cardAssetsTable --}}
{{-- <div class="card card-primary" id="cardCreateAssets">
</div> --}}
</div>
{{-- ./col-md-12 --}}
</div>
{{-- ./justify-content-center --}}
</section>
{{-- ./content --}}
@endsection
@section('scriptsTemplateAdmin')
<script>
$(function() {
$("#assetsTable").DataTable({
"responsive": true,
"lengthChange": false,
"autoWidth": false,
"buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"]
}).buttons().container().appendTo('#assetsTable_wrapper .col-md-6:eq(0)');
<script type="text/javascript">
var dataTables;
$(document).ready(function() {
dataTables = $('#showProjectEquipment1').DataTable({
responsive: true,
processing: true,
serverSide: true,
ajax: {
url: '{{ route('getDataEquipment') }}',
type: 'GET',
data: function(d) {
// Envia as variaveis de acordo com as opcoes selecionadas para o DataTables
d.receiveAllClients = $('#receiveAllClients').val();
d.receiveAllPlants = $('#receivePlantClientRelated').val();
d.receiveAllUnits = $('#receiveUnitsClientRelated').val();
d.receiveEquipmentsType = $('#tipo_valvulasList').val();
}
},
columns: [{
data: 'equipment_id',
name: 'equipment_id'
},
{
data: 'equipment_tag',
name: 'equipment_tag'
},
{
data: 'unit_id',
name: 'unit_id'
},
{
data: 'equipment_type_id',
name: 'equipment_type_id'
},
{
data: 'action',
name: 'action',
orderable: false,
searchable: false
},
],
});
});
//De acordo com os valores deste campos, como anteriormente ja sao enviados para a DataTables para fazer as filtragens, agora atualizamos a Tabela com base no filtros feitos
$('#receiveAllClients,#receivePlantClientRelated,#receiveUnitsClientRelated,#tipo_valvulasList').on('change',
function() {
dataTables.ajax.reload();
});
</script>
{{--
<script type="text/javascript">
$(document).ready(function() {
// $('#cardAssetsTable').hide();
$('#cardCreateAssets').hide();
// Esconde os cards inicialmente
$('#card-receivePlantClientRelated').hide();
$('#card-receiveUnitsClientRelated').hide();
$('#receiveAllClients').on('change', function() {
var receiveAllClients = $(this).val();
console.log(receiveAllClients);
if (receiveAllClients) {
// Esconde ambos os cards ao mudar o cliente
$('#card-receivePlantClientRelated').hide();
$('#card-receiveUnitsClientRelated').hide();
//Se existir receiveAllClients e for diferente de '#'
if (receiveAllClients && receiveAllClients !== '#') {
$('#card-receivePlantClientRelated').show(); // Mostra o card de Plantas
// Faz a requisição AJAX para receber as plantas
$.ajax({
url: '/api/receivePlants/' + receiveAllClients,
type: 'GET',
success: function(data) {
console.log(data);
var select = $('#receivePlantClientRelated');
select.empty(); // Limpa o select atual
select.append($('<option>', {
value: '#',
text: 'Mostrar Todas'
}));
// Preenche o select de Plantas
$.each(data, function(index, item) {
select.append($('<option>', {
value: item.id,
text: item.name
}));
});
}
})
});
}
})
})
</script> --}}
{{-- Script para DataTables Yajra --}}
{{-- <script>
$(document).ready(function() {
$('#assetsTable').DataTable({
autoWidth: false,
processing: true,
serverSide: true,
ajax: {
url: '/api/receiveAllEquipments/',
// data: function(d) {
// d.equipment_type_id = $('#tipo_valvulasList').val();
// },
},
columns: [{
data: 'equipment_tag',
name: 'equipment_tag'
},
// {
// data: 'equipment_type',
// name: 'equipment_type'
// },
// {
// data: 'Unit',
// name: 'Unit'
// },
{
data: 'equipment_description',
name: 'equipment_description'
},
],
rowId: 'equipment_id'
});
})
</script> --}}
$('#receivePlantClientRelated').on('change', function() {
var receivePlantClientRelated = $(this).val();
if (receivePlantClientRelated && receivePlantClientRelated !== '#') {
$('#card-receiveUnitsClientRelated').show(); // Mostra o card de Unidades
{{-- <script>
$(function() {
$('input[name="daterange"]').daterangepicker({
opens: 'right'
}, function(start, end, label) {
console.log("A new date selection was made: " + start.format('YYYY-MM-DD') + ' to ' + end
.format('YYYY-MM-DD'));
// Faz a requisição AJAX para receber as unidades
$.ajax({
url: 'api/receiveUnitsManageAssets/' + receivePlantClientRelated,
type: 'GET',
success: function(data) {
var select = $('#receiveUnitsClientRelated');
select.empty();
select.append($('<option>', {
value: '#',
text: 'Mostrar Todas'
}));
// Preenche o select de Unidades
$.each(data, function(index, item) {
select.append($('<option>', {
value: item.id,
text: item.name
}));
});
}
});
} else {
$('#card-receiveUnitsClientRelated').hide(); // Esconde o card de Unidades
}
});
});
</script> --}}
{{-- <script>
$(function() {
$("#TableEquipments").DataTable({
"responsive": true,
"lengthChange": false,
"autoWidth": false,
"buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"]
}).buttons().container().appendTo('#TableEquipments_wrapper .col-md-6:eq(0)');
$("#example1").DataTable({
"responsive": true,
"lengthChange": false,
"autoWidth": false,
"buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"]
}).buttons().container().appendTo('#example1_wrapper .col-md-6:eq(0)');
$("#example2").DataTable({
"responsive": true,
"lengthChange": false,
"autoWidth": false,
"buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"]
}).buttons().container().appendTo('#example2_wrapper .col-md-6:eq(0)');
$("#example3").DataTable({
"responsive": true,
"lengthChange": false,
"autoWidth": false,
"buttons": ["copy", "csv", "excel", "pdf", "print", "colvis"]
}).buttons().container().appendTo('#example3_wrapper .col-md-6:eq(0)');
});
</script> --}}
</script>
@endsection

View File

@ -1182,6 +1182,40 @@ class="btn btn-info">Baixar Template</a>
</div>
</div>
<div class="row text-center">
<div class="col-sm" id="card-receiveUnitsClientRelated">
<div class="form-group">
<label>Fábricas </label>
<select class="form-control" id="receiveUnitsClientRelated1"
name="receiveUnitsClientRelated">
<option value='#' selected>Mostrar Todos</option>
@foreach ($checkUnits as $checkUnit)
<option value="{{ $checkUnit->unit_id }}">
{{ $checkUnit->unit_name }}
</option>
@endforeach
</select>
</div>
</div>
<div class="form-group col-sm">
<label>Tipo de Equipamento </label>
<select id="tipo_valvulasList" name="equipmentTypeId" class="form-control">
<option value='#' selected>Mostrar Todos</option>
@foreach ($typeEquipments as $typeEquipment)
<option value="{{ $typeEquipment->equipment_type_id }}">
{{ $typeEquipment->equipment_type_name }}</option>
@endforeach
</select>
</div>
</div>
<!-- row text-center -->
<table id="showProjectEquipment" class="table table-bordered table-striped">
<thead>
<tr>
@ -1194,46 +1228,6 @@ class="btn btn-info">Baixar Template</a>
</thead>
</table>
<script>
$(document).ready(function() {
var numberProject = $('#receiveNumberProject').val();
$('#showProjectEquipment').DataTable({
processing: true,
serverSide: true,
ajax: {
url: '{{ route('getDataEquipment') }}',
type: 'GET',
data: {
'numberProject': numberProject
}
},
columns: [{
data: 'equipment_id',
name: 'equipment_id'
},
{
data: 'equipment_tag',
name: 'equipment_tag'
},
{
data: 'unit_id',
name: 'unit_id'
},
{
data: 'equipment_type_id',
name: 'equipment_type_id'
},
{
data: 'action',
name: 'action',
orderable: false,
searchable: false
},
],
});
});
</script>
@ -1425,6 +1419,120 @@ class="btn btn-primary float-right">Seguinte</a>
@endforeach
@endif
<script>
var dataTable;
$(document).ready(function() {
dataTable = $('#showProjectEquipment').DataTable({
responsive: true,
processing: true,
serverSide: true,
ajax: {
url: '{{ route('getDataEquipment') }}',
type: 'GET',
data: function(d) {
d.numberProject = $('#receiveNumberProject').val();
d.checkUnits = $('#receiveUnitsClientRelated1').val();
d.tipo_valvulasList = $('#tipo_valvulasList').val();
}
},
columns: [{
data: 'equipment_id',
name: 'equipment_id'
},
{
data: 'equipment_tag',
name: 'equipment_tag'
},
{
data: 'unit_id',
name: 'unit_id'
},
{
data: 'equipment_type_id',
name: 'equipment_type_id'
},
{
data: 'action',
name: 'action',
orderable: false,
searchable: false
},
],
});
});
$('#receiveUnitsClientRelated1, #receiveNumberProject, #tipo_valvulasList').on('change', function() {
dataTable.ajax.reload();
});
</script>
{{-- <script type="text/javascript">
$(document).ready(function() {
// $('#card-receiveUnitsClientRelated').hide();
// Evento de mudança para o campo onde numberProject é selecionado
$('#receiveNumberProject').on('change', function() {
var numberProject = $(this).val();
if (numberProject) {
$.ajax({
url: '/api/receiveUnits/' + numberProject,
type: 'GET',
success: function(data) {
// Supondo que 'data' é um array de objetos com 'id' e 'name'
var options = "<option value='#' selected>Mostrar Todos</option>";
$.each(data, function(index, item) {
options += "<option value='" + item.id + "'>" + item
.name + "</option>";
});
$('#receiveUnitsClientRelated').html(options);
},
error: function() {
// Tratamento de erro
console.log('Erro ao carregar dados');
}
});
}
});
});
</script> --}}
{{-- Nao vai precisar de scritp, pois este filtro nao vai precisar ser altera. --}}
{{-- <script type="text/javascript">
$(document).ready(function() {
$('#receiveNumberProject').on('change', function() {
var numberProject = $(this).val();
if (numberProject) {
$.ajax({
url: '/api/receiveUnits/' + numberProject,
type: 'GET',
success: function(data) {
console.log(data);
var options = "<option value='#' selected>Mostrar Todos</option>";
$.each(data, function(index, item) {
options += "<option value='" + item.id + "'>" + item
.name + "</option>";
});
$('#receiveUnitsClientRelated').html(options);
},
error: function() {
console.log('Erro ao carregar dados');
}
});
}
});
});
</script> --}}
<script>
$(document).ready(function() {
$('#equipmentType_id_list').on('change', function() {

File diff suppressed because it is too large Load Diff

View File

@ -28,16 +28,19 @@
use App\Http\Controllers\PreparedProjectController;
use App\Http\Controllers\ExecutionProjectController;
use App\Http\Controllers\WorkstationsJobsController;
use App\Http\Controllers\LanguageController;
use App\Http\Controllers\LanguageController;
Route::get('test', function () {
return view('testDataTables');
});
Route::get('cancelElementalTaskForEquipment/{equipmentID}', [WorkstationsJobsController::class,'cancelElementalTaskForEquipment'])->name('cancelElementalTaskForEquipment');
Route::get('cancelElementalTaskForEquipment/{equipmentID}', [WorkstationsJobsController::class, 'cancelElementalTaskForEquipment'])->name('cancelElementalTaskForEquipment');
Route::get('test2/{equipmentID}/{projectID?}',[ExecutionProjectController::class,'test11'])->name('test11');
// Nao gosto que esteja neste controller, verificar mais tarde
Route::get('test2/{projectID}/{equipmentID}', [ProjectoDatacontroller::class, 'test11'])->name('test11');
Route::get('manageAssets/{equipmentID}', [ProjectoDatacontroller::class, 'test22'])->name('test22');
Route::get('getDataEquipment', [ExecutionProjectController::class, 'getDataEquipment'])->name('getDataEquipment');
@ -56,7 +59,7 @@
->middleware(['auth', 'signed', 'throttle:6,1'])
->name('verification.verify');
/*
|--------------------------------------------------------------------------
@ -79,21 +82,21 @@
|*** 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', [WorkstationsJobsController::class, 'receiveAnswersEquipment'])->name('receiveAnswersEquipment');
});
/*
|--------------------------------------------------------------------------
| User_Type (Super_Administrador)
|--------------------------------------------------------------------------
|*** Routes unique access to the Super_Administrator, Administrator
*/
/*
|--------------------------------------------------------------------------
| User_Type (Super_Administrador)
|--------------------------------------------------------------------------
|*** Routes unique access to the Super_Administrator, Administrator
*/
Route::middleware(['checkUserType:home'])->group(function () {
Route::get('/', [ProjectoDatacontroller::class, ('HomePage')])->name('home');
@ -112,16 +115,16 @@
Route::get('users/{id}/edit', 'edit')->name('users.edit');
Route::put('users/{user}', 'update')->name('users.update');
Route::delete('users/{user}', 'destroy')->name('users.destroy');
Route::post('editProfile/{id}', 'EditProfile')->name('editProfile');
});
/*
|--------------------------------------------------------------------------
| Management of projects created
|--------------------------------------------------------------------------
|
*/
/*
|--------------------------------------------------------------------------
| Management of projects created
|--------------------------------------------------------------------------
|
*/
Route::controller(CreateProjectController::class)
->group(function () {
@ -203,4 +206,13 @@
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/ambits/{equipmentType}', [CreateProjectController::class, 'getAmbits']);
// Route::get('/api/receiveUnits', [CreateProjectController::class, 'receiveUnits']);
//Rota Api diretamente para a cracao da Obra
Route::get('/api/receiveUnits/{numberProject}', [CreateProjectController::class, 'receiveUnits']);
Route::get('api/receivePlants/{receiveAllClients}', [ProjectoDatacontroller::class, 'receivePlants']);
Route::get('api/receiveUnitsManageAssets/{receivePlantClientRelated}',[ProjectoDatacontroller::class, 'receiveUnitsManageAssets']);