Update, correct bugs
This commit is contained in:
parent
02911be806
commit
4e7215e9b7
|
|
@ -25,7 +25,7 @@ public function create(array $input): User
|
|||
return User::create([
|
||||
'user_name' => $input['user_name'],
|
||||
'email' => $input['email'],
|
||||
'password' => Hash::make($input['password']),
|
||||
'password' => $input['password'],
|
||||
'type_users' => $input['type_users'],
|
||||
'user_phone' => $input['user_phone'],
|
||||
'user_nif' => $input['user_nif'],
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
use App\Models\Equipment;
|
||||
use App\Models\EquipmentAssociationAmbit;
|
||||
use App\Models\EquipmentWorkHistory;
|
||||
use App\Models\GeneralAttributesEquipment;
|
||||
use App\Models\SpecificAttributesEquipmentType;
|
||||
use App\Models\Unit;
|
||||
use Illuminate\Http\Request;
|
||||
|
|
@ -15,6 +16,7 @@
|
|||
use App\Models\EquipmentType;
|
||||
use App\Models\Plant;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
use Yajra\DataTables\Facades\DataTables;
|
||||
|
||||
|
|
@ -37,13 +39,7 @@ public function getEquipmentsOfAmbit(Request $request)
|
|||
$projectId = $request->get('projectId');
|
||||
$ambitId = $request->get('ambitId');
|
||||
|
||||
// $dataAmbit = AmbitsEquipment::where('ambits_id', $ambitId)->first();
|
||||
// $receiveDataEquipments = Equipment::where('company_projects_id', $projectId)->get();
|
||||
// $filteredAssociations = EquipmentAssociationAmbit::where('ambits_id', $dataAmbit->ambits_id)
|
||||
// ->whereIn('equipment_id', $receiveDataEquipments->pluck('equipment_id'))
|
||||
// ->get();
|
||||
// $query = Equipment::whereIn('equipment_id', $filteredAssociations->pluck('equipment_id'))->get();
|
||||
|
||||
//Recebe os dados do Ambito
|
||||
$dataAmbit = AmbitsEquipment::where('ambits_id', $ambitId)->first();
|
||||
|
||||
$receiveDataEquipments = Equipment::where('equipments.company_projects_id', $projectId)
|
||||
|
|
@ -59,7 +55,16 @@ public function getEquipmentsOfAmbit(Request $request)
|
|||
|
||||
$query = EquipmentWorkHistory::whereIn('equipmentWorkHistorys_id', $equipmentWorkHistoryIds)
|
||||
->join('equipments', 'equipment_work_historys.equipment_id', '=', 'equipments.equipment_id')
|
||||
->select('equipments.*', 'equipment_work_historys.ispt_number as ispt_number') // Adicionei 'equipment_work_historys.ispt_number as ispt_number' aqui
|
||||
->select([
|
||||
'equipments.*',
|
||||
'equipment_work_historys.ispt_number as ispt_number',
|
||||
DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE specific_attributes_equipament_types.equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 9), 'n/a') as dn"),
|
||||
DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE specific_attributes_equipament_types.equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 10), 'n/a') as dim"),
|
||||
DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE specific_attributes_equipament_types.equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 11), 'n/a') as pid"),
|
||||
DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE specific_attributes_equipament_types.equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 13), 'n/a') as isolation"),
|
||||
DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE specific_attributes_equipament_types.equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 15), 'n/a') as crane"),
|
||||
DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE specific_attributes_equipament_types.equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 23), 'n/a') as scaffold"),
|
||||
])
|
||||
->get();
|
||||
|
||||
return DataTables::of($query)
|
||||
|
|
@ -97,30 +102,18 @@ public function showReportingForAmbitsProjectPdf($ambitId, $projectId)
|
|||
// Agora, em vez de buscar diretamente em Equipment, vamos pegar os detalhes via EquipmentWorkHistory
|
||||
$equipmentDetails = EquipmentWorkHistory::whereIn('equipmentWorkHistorys_id', $equipmentWorkHistoryIds)
|
||||
->join('equipments', 'equipment_work_historys.equipment_id', '=', 'equipments.equipment_id')
|
||||
->select('equipments.*', 'equipment_work_historys.*') // Seleciona todos os campos das tabelas equipments e equipment_work_historys
|
||||
->select([
|
||||
'equipments.*',
|
||||
'equipment_work_historys.*',
|
||||
DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 10), 'n/a') as dim"),
|
||||
DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 9), 'n/a') as dn"),
|
||||
DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 11), 'n/a') as pid"),
|
||||
DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 23), 'n/a') as scaffold"),
|
||||
DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 13), 'n/a') as isolation"),
|
||||
DB::raw("COALESCE((SELECT specific_attributes_value FROM specific_attributes_equipament_types WHERE equipment_id = equipments.equipment_id AND general_attributes_equipment_id = 15), 'n/a') as crane"),
|
||||
])
|
||||
->get();
|
||||
|
||||
// $equipmentDetails = EquipmentWorkHistory::whereIn('equipmentWorkHistorys_id', $equipmentWorkHistoryIds)
|
||||
// ->join('equipments', 'equipment_work_historys.equipment_id', '=', 'equipments.equipment_id')
|
||||
// ->leftJoin('specific_attributes_equipment_types', 'equipments.equipment_id', '=', 'specific_attributes_equipment_types.equipment_id') // Fazendo a junção com a tabela 'specific_attributes_equipment_types'
|
||||
// ->select(
|
||||
// 'equipments.*',
|
||||
// 'equipment_work_historys.*',
|
||||
// 'specific_attributes_equipment_types.general_attributes_equipment_id',
|
||||
// 'specific_attributes_equipment_types.specific_attributes_value'
|
||||
// )
|
||||
// ->get()
|
||||
// // Junta os dados obtidos na tabela : specific_attributes_equipment_types, e como os dados na colecao de cada equipamento.
|
||||
// ->transform(function ($item) {
|
||||
// // Aqui você transforma cada item da coleção, adicionando o novo par de chave-valor
|
||||
// $item->specific_attributes = [
|
||||
// $item->general_attributes_equipment_id => $item->specific_attributes_value
|
||||
// ];
|
||||
// // Remove as colunas desnecessárias para evitar duplicação
|
||||
// unset($item->general_attributes_equipment_id, $item->specific_attributes_value);
|
||||
// return $item;
|
||||
// });
|
||||
|
||||
|
||||
$detalsProject = CompanyProject::where('company_projects_id', $projectId)->first();
|
||||
|
||||
|
|
|
|||
|
|
@ -218,6 +218,8 @@ public function finishCreatingProject($numberProject)
|
|||
$receiveAllFurtherTasks = session('receiveAllFurtherTasks');
|
||||
$receiveElementalTasks = session('receiveElementalTasks');
|
||||
|
||||
dd($receiveAllFurtherTasks);
|
||||
|
||||
// Inicializar a matriz de IDs faltantes
|
||||
$missingElementalTasks = [];
|
||||
$missingFurtherTasksDetails = [];
|
||||
|
|
@ -256,6 +258,7 @@ public function finishCreatingProject($numberProject)
|
|||
}
|
||||
}
|
||||
}
|
||||
dd($receiveAllFurtherTasks);
|
||||
|
||||
// Iterar sobre cada tarefa em $receiveAllFurtherTasks
|
||||
foreach ($receiveAllFurtherTasks as $furtherTask) {
|
||||
|
|
@ -264,7 +267,7 @@ public function finishCreatingProject($numberProject)
|
|||
|
||||
// Verificar se a tarefa está associada a algum id_workstations
|
||||
$exists = WorkstationsAssociationTasks::whereIn('id_workstations', $workstationIds)
|
||||
->where('further_tasks_id', $taskId)
|
||||
->where('elemental_tasks_id', $taskId)
|
||||
->exists();
|
||||
|
||||
// Se não existe, adicionar à lista de tarefas faltantes
|
||||
|
|
|
|||
|
|
@ -184,10 +184,20 @@ public function receiveUnits($numberProject)
|
|||
|
||||
public function deleteFurtherTasks(Request $request)
|
||||
{
|
||||
//Se o utilizador click mas nao associar as tarefas.
|
||||
$selectedTasks = $request->input('selectedTasks', []);
|
||||
|
||||
if (empty ($selectedTasks)) {
|
||||
return back()->with('danger', 'Não existem tarefas complementares selecionadas para exclusão.');
|
||||
}
|
||||
|
||||
$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)
|
||||
->whereIn('further_tasks_id', $request->selectedTasks)
|
||||
|
||||
$detailsEquipmentWorkHistory = EquipmentWorkHistory::where('equipment_id', $request->equipmentID)->first();
|
||||
|
||||
$tasksToDelete = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||
->whereIn('elemental_tasks_id', $request->selectedTasks)
|
||||
->get();
|
||||
|
||||
// Excluir esses registros
|
||||
|
|
@ -197,11 +207,11 @@ public function deleteFurtherTasks(Request $request)
|
|||
|
||||
// Se o treatmentFurtherTask for "DeleteFurtherTask", exclua os registros da tabela principal FurtherTasks
|
||||
if ($request->treatmentFurtherTask == "DeleteFurtherTask") {
|
||||
FurtherTasks::whereIn('further_tasks_id', $request->selectedTasks)->delete();
|
||||
ElementalTasks::whereIn('elemental_tasks_id', $request->selectedTasks)->delete();
|
||||
}
|
||||
|
||||
// Reordenar os registros restantes
|
||||
$remainingTasks = OrderEquipmentTasks::where('equipment_id', $request->equipmentID)
|
||||
$remainingTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||
->orderBy('execution_order', 'asc')
|
||||
->get();
|
||||
|
||||
|
|
@ -216,64 +226,81 @@ public function deleteFurtherTasks(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)
|
||||
// ->orderBy('execution_order', 'asc')
|
||||
// ->get();
|
||||
|
||||
// Recebe os detalhes do Equipment
|
||||
$receiveDataEquipment = Equipment::where('equipment_id', $request->equipmentID)->first();
|
||||
|
||||
// Recebe os detalhes do EquipmentWorkHistory
|
||||
$receiveEquipmentWorkHistory = EquipmentWorkHistory::where('equipment_id', $request->equipmentID)
|
||||
->where('company_projects_id', $receiveDataEquipment->company_projects_id)
|
||||
->first();
|
||||
|
||||
//Ordena os valores de OrderEquipmentTasks deste equipamento do Menor para o Maior
|
||||
$tasksToReorder = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||
->orderBy('execution_order', 'asc')
|
||||
->get();
|
||||
|
||||
// *Para Criar uma nova Tarefa complementar deve ser a soma dos dados das 2 tabelas para dar o numero da proxima tarefa e assim o numero da TC
|
||||
// Obtenha a contagem de registros nas tabelas ElementalTasks e FurtherTasks
|
||||
$elementalTasksCount = ElementalTasks::count();
|
||||
$furtherTasksCount = FurtherTasks::count();
|
||||
|
||||
// Calcule o valor de further_tasks_id
|
||||
$newFurtherTaskId = $elementalTasksCount + $furtherTasksCount + 1;
|
||||
|
||||
// Calcule o valor de further_tasks_name
|
||||
$newFurtherTaskName = 'TC' . ($furtherTasksCount + 1);
|
||||
|
||||
|
||||
|
||||
//indica onde vai ficar na nova organizacao das tarefas
|
||||
$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) {
|
||||
// $task->execution_order += 1;
|
||||
// $task->save();
|
||||
// }
|
||||
// }
|
||||
if ($request->selectedFurtherTaskExisting != 'null') {
|
||||
|
||||
// Agora, insira a nova tarefa na posição desejada
|
||||
$newOrderEquipmentTask = new OrderEquipmentTasks;
|
||||
$newOrderEquipmentTask->equipmentWorkHistorys_id = $receiveEquipmentWorkHistory->equipmentWorkHistorys_id;
|
||||
$newOrderEquipmentTask->execution_order = null;
|
||||
$newOrderEquipmentTask->elemental_tasks_id = null;
|
||||
//Se o $resquest->selectedFurtherTaskExisting nao for null significa que selecionou uma tarefa complementar existente
|
||||
//Se for diferente o campo de descricao,, Adicionamos.
|
||||
$detailsFutherTaskSelected = ElementalTasks::where('elemental_tasks_id', $request->selectedFurtherTaskExisting)->first();
|
||||
$detailsFutherTaskSelected->further_tasks_description = $request->furtherTaskDescription;
|
||||
$detailsFutherTaskSelected->save();
|
||||
|
||||
// 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') {
|
||||
|
||||
// Cria uma nova tarefa Complementar
|
||||
$newFurtherTask = new FurtherTasks;
|
||||
$newFurtherTask->further_tasks_id = $newFurtherTaskId;
|
||||
$newFurtherTask->further_tasks_name = $newFurtherTaskName;
|
||||
$newFurtherTask->further_tasks_description = $request->furtherTask;
|
||||
$newFurtherTask->company_projects_id = $receiveDataEquipment->company_projects_id;
|
||||
$newFurtherTask->save();
|
||||
|
||||
$newOrderEquipmentTask->further_tasks_id = $newFurtherTask->further_tasks_id;
|
||||
} else {
|
||||
$newOrderEquipmentTask->further_tasks_id = $request->selectedFurtherTaskExisting;
|
||||
|
||||
// Conta o número de registros na ElementalTasks com o company_projects_id especificado
|
||||
$count = ElementalTasks::where('company_projects_id', $request->company_projects_id)->count();
|
||||
|
||||
// Se não existir nenhum registro, define $count como 1
|
||||
$count = $count > 0 ? $count : 0;
|
||||
|
||||
|
||||
$maxElementalTaskId = ElementalTasks::max('elemental_tasks_id');
|
||||
// Precisa Saber a Obra para ver quantos tarefas Complementares, ja existe para esta Obra
|
||||
|
||||
// Calcule o valor de further_tasks_name
|
||||
$newFurtherTaskName = 'TC' . ($count + 1);
|
||||
|
||||
|
||||
//Cria uma nova Tarefa Complementar
|
||||
$newFurtherTask = new ElementalTasks;
|
||||
//Ao definir exatamente o numero ao invez de deixar por auto Incremento, quando apagar essas tarefas complementares, ao proximas podem usar o mesmo Id
|
||||
$newFurtherTask->elemental_tasks_id = $maxElementalTaskId + 1;
|
||||
$newFurtherTask->elemental_tasks_code = $newFurtherTaskName;
|
||||
$newFurtherTask->elemental_tasks_description = $request->furtherTask;
|
||||
$newFurtherTask->further_tasks_description = $request->furtherTaskDescription;
|
||||
$newFurtherTask->company_projects_id = $request->company_projects_id;
|
||||
$newFurtherTask->save();
|
||||
}
|
||||
|
||||
|
||||
// Incrementar a execution_order das tarefas após a posição de inserção
|
||||
foreach ($tasksToReorder as $task) {
|
||||
if ($task->execution_order >= $insertPosition) {
|
||||
$task->execution_order += 1;
|
||||
$task->save();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Adiciona essa tarefa a Ordem indicada em relação a execussão de tarefa.
|
||||
$newOrderEquipmentTask = new OrderEquipmentTasks;
|
||||
$newOrderEquipmentTask->equipmentWorkHistorys_id = $receiveEquipmentWorkHistory->equipmentWorkHistorys_id;
|
||||
$newOrderEquipmentTask->execution_order = $insertPosition;
|
||||
|
||||
if ($request->selectedFurtherTaskExisting != 'null') {
|
||||
// Se selectedFurtherTaskExisting não for 'null', então usa o ID da tarefa complementar selecionada
|
||||
$newOrderEquipmentTask->elemental_tasks_id = $request->selectedFurtherTaskExisting;
|
||||
} else {
|
||||
// Caso contrário, usa o elemental_tasks_id do $newFurtherTask
|
||||
$newOrderEquipmentTask->elemental_tasks_id = $newFurtherTask->elemental_tasks_id;
|
||||
}
|
||||
|
||||
//Inspecionar Ainda não esta sendo utilizado.
|
||||
$newOrderEquipmentTask->inspection = 2;
|
||||
$newOrderEquipmentTask->save();
|
||||
|
||||
|
|
@ -441,21 +468,23 @@ public function finishCreatingProject($numberProject)
|
|||
// Iterar sobre cada tarefa em $receiveAllFurtherTasks
|
||||
foreach ($receiveAllFurtherTasks as $furtherTask) {
|
||||
// Obter o ID da tarefa
|
||||
$taskId = $furtherTask->further_tasks_id;
|
||||
$taskId = $furtherTask->elemental_tasks_id;
|
||||
|
||||
// Verificar se a tarefa está associada a algum id_workstations
|
||||
$exists = WorkstationsAssociationTasks::whereIn('id_workstations', $workstationIds)
|
||||
->where('further_tasks_id', $taskId)
|
||||
$checkExistFurtherTaskInWs = WorkstationsAssociationTasks::whereIn('id_workstations',$workstationIds)
|
||||
->where('elemental_tasks_id',$taskId)
|
||||
->exists();
|
||||
|
||||
// Se não existe, adicionar à lista de tarefas faltantes
|
||||
if (!$exists) {
|
||||
if (!$checkExistFurtherTaskInWs) {
|
||||
$missingFurtherTasksDetails[$taskId] = [
|
||||
'name' => $furtherTask->further_tasks_name,
|
||||
'description' => $furtherTask->further_tasks_description
|
||||
'name' => $furtherTask->elemental_tasks_code,
|
||||
'description' => $furtherTask->elemental_tasks_description
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
// dd($missingFurtherTasksDetails);
|
||||
|
||||
// A Partir daqui ja temos as 2 variaveis a receberem array com as tarefas que faltam ser associadas.
|
||||
$allMissingTasks = [
|
||||
|
|
@ -596,69 +625,7 @@ public function EditEquipment(Request $request)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// dd($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);
|
||||
// }
|
||||
// $executionOrder = 1;
|
||||
|
||||
|
||||
// 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 ($receiveEquipmentWorkHistori && $receiveEquipmentWorkHistori <> null) {
|
||||
// $orderEquipmentTask = new OrderEquipmentTasks();
|
||||
// $orderEquipmentTask->equipment_id = $request->equipmentId;
|
||||
// $orderEquipmentTask->elemental_tasks_id = $key;
|
||||
// }
|
||||
|
||||
// }
|
||||
// //Nal precisa mais indicar a ordem das tarefas pois ela agora nao vao ser feitas por ordem necessariamente
|
||||
// $orderEquipmentTask->execution_order = null;
|
||||
// $orderEquipmentTask->save();
|
||||
|
||||
// $executionOrder++;
|
||||
// } elseif ($value == "off" && $orderEquipmentTask) {
|
||||
// $orderEquipmentTask->delete();
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// // $executionOrder = 1; // Reinicia a contagem de ordem de execução
|
||||
// $remainingOrderEquipmentTasks = OrderEquipmentTasks::where('equipment_id', $request->equipmentId)
|
||||
// ->orderBy('execution_order', 'asc')
|
||||
// ->get();
|
||||
|
||||
// foreach ($remainingOrderEquipmentTasks as $orderEquipmentTask) {
|
||||
// $orderEquipmentTask->execution_order = null;
|
||||
// $orderEquipmentTask->save();
|
||||
// $executionOrder++;
|
||||
// }
|
||||
|
||||
// $orderTasks = OrderEquipmentTasks::where('equipment_id', $request->equipmentId)
|
||||
// ->orderBy('execution_order', 'asc')
|
||||
// ->get();
|
||||
|
||||
// $taskExecutionOrders = [];
|
||||
// foreach ($orderTasks as $task) {
|
||||
// $taskExecutionOrders[$task->elemental_tasks_id] = $task->execution_order;
|
||||
// }
|
||||
|
||||
// Retorna uma resposta
|
||||
// return redirect()->route('articulated_2', ['id' => $request->numberProject])
|
||||
// ->with('success', 'Equipamento ' . $dataEquipment->equipment_tag . ' Editado com Sucesso!!!');
|
||||
// ->with('taskExecutionOrders', $taskExecutionOrders);
|
||||
|
||||
// return back()->with('success', 'Ação concluída com sucesso!')
|
||||
return back();
|
||||
|
||||
return back()->with('success', 'Equipamento Atualizado!');
|
||||
}
|
||||
|
||||
public function showJson($id)
|
||||
|
|
@ -1296,9 +1263,12 @@ 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);
|
||||
|
||||
$execution_order = 1;
|
||||
|
||||
foreach ($TasksAssociationAmbits as $TasksAssociationAmbit) {
|
||||
$JoinsEquipmentsWithTasks = new OrderEquipmentTasks;
|
||||
$JoinsEquipmentsWithTasks->equipmentWorkHistorys_id = $newEquipmentWorkHistory->equipmentWorkHistorys_id;
|
||||
$JoinsEquipmentsWithTasks->execution_order = $execution_order++;
|
||||
$JoinsEquipmentsWithTasks->elemental_tasks_id = $TasksAssociationAmbit->elemental_tasks_id;
|
||||
$JoinsEquipmentsWithTasks->further_tasks_id = null;
|
||||
$JoinsEquipmentsWithTasks->save();
|
||||
|
|
@ -1555,8 +1525,8 @@ public function showStep3($company_projects_id)
|
|||
|
||||
public function workstationsAssociationTasks(Request $request)
|
||||
{
|
||||
// dd($request);
|
||||
$workStation = ConstructionWorkstation::where('id_workstations', $request->idWorkStation)->first();
|
||||
|
||||
// Trocar o nome se for diferente do recebido
|
||||
if ($workStation) {
|
||||
$workStation->nomenclature_workstation = $request->nameWorkstation;
|
||||
|
|
@ -1566,14 +1536,16 @@ 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) {
|
||||
|
||||
//Este code pode parecer repetitivo, pois antes tinha uma tabela para os 2 tipos de tarefa. TE e TC apos atualizacao ambas ficam em uma so tabela, porem por falta de tempo ainda nao foi melhorado sua logina , MAS FUNCIONA !!!!
|
||||
if ($groupTasks == 'FurtherTasks') {
|
||||
// Encontra a tarefa existente, se houver, para FurtherTasks
|
||||
$taskAssociation = WorkstationsAssociationTasks::where('id_workstations', $workStation->id_workstations)
|
||||
->where('further_tasks_id', $taskID)
|
||||
->where('elemental_tasks_id', $taskID)
|
||||
->where('company_projects_id', $workStation->company_projects_id)
|
||||
->first();
|
||||
} else {
|
||||
|
|
@ -1589,7 +1561,7 @@ public function workstationsAssociationTasks(Request $request)
|
|||
$taskAssociation = new WorkstationsAssociationTasks;
|
||||
$taskAssociation->id_workstations = $workStation->id_workstations;
|
||||
if ($groupTasks == 'FurtherTasks') {
|
||||
$taskAssociation->further_tasks_id = $taskID; // Usando $taskID, que é a key
|
||||
$taskAssociation->elemental_tasks_id = $taskID; // Usando $taskID, que é a key
|
||||
} else {
|
||||
$taskAssociation->elemental_tasks_id = $taskID; // Usando $taskID, que é a key
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,14 +21,16 @@ public function ListPendingUsers()
|
|||
return view('email/pendingUsers', compact('pend_users'));
|
||||
}
|
||||
|
||||
public function ShowFormUser($id){
|
||||
public function ShowFormUser($id)
|
||||
{
|
||||
$pend_user = PendingUser::findOrFail($id);
|
||||
$types = TypeUser::all();
|
||||
return view('Admin.CrudUsers.createUser', compact('pend_user', 'types'));
|
||||
}
|
||||
|
||||
|
||||
public function store(Request $request){
|
||||
public function store(Request $request)
|
||||
{
|
||||
|
||||
$request->validate([
|
||||
'name' => 'required',
|
||||
|
|
@ -66,7 +68,8 @@ public function store(Request $request){
|
|||
Mail::to($superAdmin->email)->send($newUserNotification);
|
||||
}
|
||||
|
||||
return redirect('/formulario')->with('success', 'O seu registro foi enviado e aguarda aprovação.');
|
||||
return redirect('/formulario')->with('success', 'O seu registo foi submetido e encontra-se pendente de aprovação. Pode encerrar a página. ');
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,6 +33,65 @@
|
|||
|
||||
class ProjectoDatacontroller extends Controller
|
||||
{
|
||||
|
||||
public function editEquipmentTasks(Request $request, $equipmentID)
|
||||
{
|
||||
// dd($request);
|
||||
$detailsEquipmentWorkHistory = EquipmentWorkHistory::where('equipment_id', $equipmentID)->first();
|
||||
|
||||
// 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');
|
||||
}
|
||||
|
||||
$executionOrder = 1;
|
||||
|
||||
foreach ($request->input('ordemTasks') as $key => $value) {
|
||||
$orderEquipmentTask = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||
->where('elemental_tasks_id', $key)
|
||||
->first();
|
||||
|
||||
if ($value == "on") {
|
||||
if (!$orderEquipmentTask) {
|
||||
$orderEquipmentTask = new OrderEquipmentTasks();
|
||||
$orderEquipmentTask->equipmentWorkHistorys_id = $detailsEquipmentWorkHistory->equipmentWorkHistorys_id;
|
||||
$orderEquipmentTask->elemental_tasks_id = $key;
|
||||
}
|
||||
$orderEquipmentTask->execution_order = $executionOrder;
|
||||
$orderEquipmentTask->save();
|
||||
|
||||
$executionOrder++;
|
||||
} elseif ($value == "off" && $orderEquipmentTask) {
|
||||
$orderEquipmentTask->delete();
|
||||
}
|
||||
}
|
||||
|
||||
$executionOrder = 1; // Reinicia a contagem de ordem de execução
|
||||
$remainingOrderEquipmentTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||
->orderBy('execution_order', 'asc')
|
||||
->get();
|
||||
|
||||
foreach ($remainingOrderEquipmentTasks as $orderEquipmentTask) {
|
||||
$orderEquipmentTask->execution_order = $executionOrder;
|
||||
$orderEquipmentTask->save();
|
||||
$executionOrder++;
|
||||
}
|
||||
|
||||
$orderTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $detailsEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||
->orderBy('execution_order', 'asc')
|
||||
->get();
|
||||
|
||||
$taskExecutionOrders = [];
|
||||
foreach ($orderTasks as $task) {
|
||||
$taskExecutionOrders[$task->elemental_tasks_id] = $task->execution_order;
|
||||
}
|
||||
// dd($orderTasks);
|
||||
|
||||
return redirect()->back()->with('success', 'As tarefas do equipamento foram atualizado com sucesso');
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function checkProjectIsptNumber(Request $request, $projectId = null)
|
||||
{
|
||||
$number = $request->get('number');
|
||||
|
|
@ -67,14 +126,20 @@ public function checkProjectIsptNumber(Request $request, $projectId = null)
|
|||
|
||||
public function showAmbitDetailsProjectHistory($projectID, $equipmentID)
|
||||
{
|
||||
|
||||
$detailsProject = CompanyProject::where('company_projects_id', $projectID)->first();
|
||||
$detailsCliente = Plant::where('plant_id',$detailsProject->plant_id)->first();
|
||||
$detailsProject->user_id = $detailsCliente->user_id;
|
||||
|
||||
|
||||
$detalsEquipmentWorkProject = EquipmentWorkHistory::where('equipment_id', $equipmentID)
|
||||
->where('company_projects_id', $projectID)->first();
|
||||
|
||||
$detalsEquipment = Equipment::where('equipment_id', $equipmentID)->first();
|
||||
|
||||
$receiveAllTasksHistiory = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $detalsEquipmentWorkProject->equipmentWorkHistorys_id)->get();
|
||||
//recebe todos os dados referentes ao equipamento
|
||||
// OBS : Porem deveria confirma se a tarefa foi mesmo concluida.
|
||||
// $receiveAllTasksHistiory = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $detalsEquipmentWorkProject->equipmentWorkHistorys_id)->get();
|
||||
|
||||
$receiveAllTasksEquipmentInHistory = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $detalsEquipmentWorkProject->equipmentWorkHistorys_id)->get();
|
||||
|
||||
|
|
@ -102,6 +167,8 @@ public function showAmbitDetailsProjectHistory($projectID, $equipmentID)
|
|||
->has('workstationsTaskAnswers') // Garante que haja pelo menos uma 'workstationsTaskAnswers' relacionada
|
||||
->get();
|
||||
|
||||
// dd($receiveAllTasksHistiory);
|
||||
|
||||
foreach ($receiveAllTasksHistiory as $taskHistory) {
|
||||
$taskHistory->cardTypeStyle = 'gray'; // Adiciona o campo 'cardTypeStyle'
|
||||
|
||||
|
|
@ -165,6 +232,7 @@ public function showAmbitDetailsProjectHistory($projectID, $equipmentID)
|
|||
//buscar Tarfas e tempo de execussao pelo control, assim como suas respostas.
|
||||
// dd($receiveAmbit);
|
||||
|
||||
|
||||
return view('projectsClients.showAmbitDetailProjectHistory', compact('detailsProject', 'receiveAmbit', 'receiveAllTasksHistiory', 'detalsEquipment'));
|
||||
|
||||
}
|
||||
|
|
@ -287,6 +355,7 @@ public function receivePlants($receiveAllClients)
|
|||
//Funcao que recebe a Acoes do dataTables das obrar em Planeamento.
|
||||
public function projectDetails_11($projectID, $equipmentID)
|
||||
{
|
||||
$detailsProject = CompanyProject::find($projectID);
|
||||
|
||||
$dataEquipment = Equipment::find($equipmentID);
|
||||
|
||||
|
|
@ -297,7 +366,105 @@ public function projectDetails_11($projectID, $equipmentID)
|
|||
->first();
|
||||
|
||||
$attributes = SpecificAttributesEquipmentType::where('equipment_id', $equipmentID)->get(); // recebe todos os atributos espesificos do equipamento
|
||||
$DetailsTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistorys->equipmentWorkHistorys_id)->get(); // Todas as tarefas que o equipamento vai realizar :
|
||||
|
||||
// $DetailsTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistorys->equipmentWorkHistorys_id)->get(); // Todas as tarefas que o equipamento vai realizar :
|
||||
|
||||
// Obtém todas as tarefas associadas ao histórico do equipamento
|
||||
$DetailsTasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistorys->equipmentWorkHistorys_id)
|
||||
->whereNotNull('elemental_tasks_id')
|
||||
->with([
|
||||
'elementalTask' => function ($query) {
|
||||
$query->whereNotNull('company_projects_id');
|
||||
}
|
||||
])
|
||||
->get();
|
||||
|
||||
// Filtra para manter apenas os registros que realmente têm uma tarefa elemental associada com company_projects_id não nulo
|
||||
$filteredTasks = $DetailsTasks->filter(function ($task) {
|
||||
return !is_null($task->elementalTask) && !is_null($task->elementalTask->company_projects_id);
|
||||
});
|
||||
|
||||
// Agora, vamos buscar os detalhes das tarefas elementais correspondentes
|
||||
$elementalTasksDetails = ElementalTasks::whereIn('elemental_tasks_id', $filteredTasks->pluck('elemental_tasks_id'))
|
||||
->whereNotNull('company_projects_id')
|
||||
->get()
|
||||
->keyBy('elemental_tasks_id'); // Keying by elemental_tasks_id para fácil acesso
|
||||
|
||||
|
||||
// $filteredTasks = $filteredTasks->map(function ($task) use ($elementalTasksDetails) {
|
||||
// // Verifica se o detalhe da tarefa elemental existe na coleção $elementalTasksDetails, com base no elemental_tasks_id
|
||||
// if (isset ($elementalTasksDetails[$task->elemental_tasks_id])) {
|
||||
// $elementalTaskDetail = $elementalTasksDetails[$task->elemental_tasks_id];
|
||||
|
||||
// // Adiciona novos atributos ao item da coleção $task com os detalhes da tarefa elemental
|
||||
// $task->elemental_tasks_code = $elementalTaskDetail->elemental_tasks_code;
|
||||
// $task->elemental_tasks_description = $elementalTaskDetail->elemental_tasks_description;
|
||||
// $task->further_tasks_description = $elementalTaskDetail->further_tasks_description; // Ajuste este campo conforme sua existência e necessidade
|
||||
// }
|
||||
|
||||
// // Retorna o item modificado para a nova coleção
|
||||
// return $task;
|
||||
// });
|
||||
|
||||
// $filteredTasks = $filteredTasks->map(function ($task) use ($DetailsTasks) {
|
||||
// // Calcula o execution_order da tarefa anterior
|
||||
// $executionOrderBefore = $task->execution_order - 1;
|
||||
|
||||
// // Busca a tarefa anterior com base no execution_order calculado
|
||||
// $taskBefore = $DetailsTasks->first(function ($item) use ($executionOrderBefore) {
|
||||
// return $item->execution_order == $executionOrderBefore;
|
||||
// });
|
||||
|
||||
// // Se encontrou a tarefa anterior, adiciona seu elemental_tasks_id ao item atual
|
||||
// if ($taskBefore) {
|
||||
// $task->taskIDBeforeExecutionOrder = $taskBefore->elemental_tasks_id;
|
||||
// } else {
|
||||
// // Se não encontrar a tarefa anterior, pode definir como null ou outro valor padrão
|
||||
// $task->taskIDBeforeExecutionOrder = null;
|
||||
// }
|
||||
|
||||
// return $task;
|
||||
// });
|
||||
|
||||
$filteredTasks = $filteredTasks->map(function ($task) use ($elementalTasksDetails, $DetailsTasks) {
|
||||
// Primeiro bloco: Adiciona detalhes da tarefa elemental
|
||||
if (isset ($elementalTasksDetails[$task->elemental_tasks_id])) {
|
||||
$elementalTaskDetail = $elementalTasksDetails[$task->elemental_tasks_id];
|
||||
$task->elemental_tasks_code = $elementalTaskDetail->elemental_tasks_code;
|
||||
$task->elemental_tasks_description = $elementalTaskDetail->elemental_tasks_description;
|
||||
$task->further_tasks_description = $elementalTaskDetail->further_tasks_description; // Ajuste conforme necessário
|
||||
}
|
||||
|
||||
// Segundo bloco: Adiciona o ID da tarefa anterior
|
||||
$executionOrderBefore = $task->execution_order - 1;
|
||||
$taskBefore = $DetailsTasks->first(function ($item) use ($executionOrderBefore) {
|
||||
return $item->execution_order == $executionOrderBefore;
|
||||
});
|
||||
|
||||
if ($taskBefore) {
|
||||
$task->taskIDBeforeExecutionOrder = $taskBefore->elemental_tasks_id;
|
||||
} else {
|
||||
$task->taskIDBeforeExecutionOrder = null;
|
||||
}
|
||||
|
||||
// Retorna o item modificado para a nova coleção
|
||||
return $task;
|
||||
});
|
||||
|
||||
|
||||
// Para buscar a tarefa com execution_order = 3
|
||||
$taskBeforeExecutionOrder = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistorys->equipmentWorkHistorys_id)
|
||||
->where('execution_order', 3)
|
||||
->whereNotNull('elemental_tasks_id')
|
||||
->first();
|
||||
|
||||
if ($taskBeforeExecutionOrder) {
|
||||
$elementalTaskBefore = ElementalTasks::where('elemental_tasks_id', $taskBeforeExecutionOrder->elemental_tasks_id)
|
||||
->whereNotNull('company_projects_id')
|
||||
->first();
|
||||
}
|
||||
|
||||
|
||||
// $OrdemTasks = $DetailsTasks->pluck('elemental_tasks_id')->all(); // Array de IDs
|
||||
$OrdemTasks = $DetailsTasks->pluck('execution_order', 'elemental_tasks_id')->all();
|
||||
|
||||
|
|
@ -313,9 +480,8 @@ public function projectDetails_11($projectID, $equipmentID)
|
|||
foreach ($specificAttributes as $attribute) {
|
||||
$specificAttributesArray[$attribute->general_attributes_equipment_id] = $attribute->specific_attributes_value;
|
||||
}
|
||||
// dd($OrdemTasks);
|
||||
|
||||
return view('projectsClients.articulated_2_ShowEquipment', compact('dataEquipment', 'OrdemTasks', 'DetailsTasks', 'detailsEquipmentWorkHistory','specificAttributesArray'));
|
||||
return view('projectsClients.articulated_2_ShowEquipment', compact('detailsProject', 'dataEquipment','filteredTasks', 'OrdemTasks', 'DetailsTasks', 'detailsEquipmentWorkHistory', 'specificAttributesArray'));
|
||||
}
|
||||
|
||||
//Funcao que recebe a Acoes do dataTables do portifolio.
|
||||
|
|
|
|||
|
|
@ -9,84 +9,19 @@
|
|||
use App\Models\EquipmentWorkHistory;
|
||||
use App\Models\OrderEquipmentTasks;
|
||||
use App\Models\workstationsTaskAnswers;
|
||||
use App\Models\ReceiveImagesControlEquipmentWorkstation; // Ajuste o namespace conforme necessário
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Facades\File;
|
||||
|
||||
use Mockery\Undefined;
|
||||
|
||||
|
||||
class WorkstationsJobsController extends Controller
|
||||
{
|
||||
|
||||
// public function reloadWsPage(Request $request, $controlEquipmentId)
|
||||
// {
|
||||
// $active = $request->input('active', false);
|
||||
// if (!$active) {
|
||||
// // Se o 'active' for false, isso significa que o usuário saiu da página
|
||||
// // e você deve fazer a limpeza necessária.
|
||||
// $receiveDataControlEquipment = ControlEquipmentWorkstation::find($controlEquipmentId);
|
||||
// if ($receiveDataControlEquipment) {
|
||||
// $receiveDataControlEquipment->delete();
|
||||
// }
|
||||
// } else {
|
||||
// // Se o 'active' for true, atualize o timestamp para refletir que o usuário ainda está ativo.
|
||||
// ControlEquipmentWorkstation::where('control_equipment_workstation_id', $controlEquipmentId)
|
||||
// ->update(['last_active_at' => now()]);
|
||||
// }
|
||||
// return response()->json(['success' => true]);
|
||||
// }
|
||||
|
||||
// public function reloadWsPage(Request $request, $controlEquipmentId)
|
||||
// {
|
||||
// dd($controlEquipmentId);
|
||||
// // Aqui você pode implementar a lógica para atualizar ou excluir o registro
|
||||
// $receiveDataControlEquipment = ControlEquipmentWorkstation::find($controlEquipmentId);
|
||||
// if($receiveDataControlEquipment){
|
||||
// $receiveDataControlEquipment->delete();
|
||||
// }
|
||||
// return response()->json(['success' => true]);
|
||||
// }
|
||||
|
||||
// public function reloadWsPage(Request $request, $controlEquipmentId)
|
||||
// {
|
||||
// // Ao buscar o id da control vamos desassociar a Ws atual com a linha de dados da control atual, sendo assim ele ficara disponivel para os outros metados,
|
||||
// $receiveDataControlEquipment = ControlEquipmentWorkstation::find($controlEquipmentId);
|
||||
// if ($receiveDataControlEquipment) {
|
||||
// $receiveDataControlEquipment->id_workstations = null;
|
||||
// $receiveDataControlEquipment->save();
|
||||
// }
|
||||
|
||||
// // Não precisa retornar uma resposta detalhada pois sendBeacon não manipula respostas
|
||||
// return response()->json(['success' => true]);
|
||||
// }
|
||||
|
||||
|
||||
// public function updateWorkstationStatus(Request $request)
|
||||
// {
|
||||
// $controlEquipmentId = $request->id;
|
||||
// $status = $request->status;
|
||||
|
||||
// $controlEquipment = ControlEquipmentWorkstation::find($controlEquipmentId);
|
||||
// if ($controlEquipment) {
|
||||
// $controlEquipment->status = $status;
|
||||
// $controlEquipment->save();
|
||||
// }
|
||||
|
||||
// return response()->json(['success' => true]);
|
||||
// }
|
||||
|
||||
// public function closeWorkstationSession(Request $request)
|
||||
// { dd($request);
|
||||
// $controlEquipmentId = $request->id;
|
||||
|
||||
// $controlEquipment = ControlEquipmentWorkstation::find($controlEquipmentId);
|
||||
// if ($controlEquipment) {
|
||||
// $controlEquipment->delete(); // Ou defina status como inativo, conforme a lógica do negócio.
|
||||
// }
|
||||
|
||||
// return response()->json(['success' => true]);
|
||||
// }
|
||||
public function updateSessionStatus(Request $request, $controlEquipmentId)
|
||||
{
|
||||
|
||||
|
|
@ -102,6 +37,48 @@ public function updateSessionStatus(Request $request, $controlEquipmentId)
|
|||
return response()->json(['success' => false, 'message' => 'Equipamento não encontrado.']);
|
||||
}
|
||||
|
||||
|
||||
public function receiveQuestionsEquipment($equipmentID)
|
||||
{
|
||||
//Busca os valores do historico do equipamento
|
||||
$receiveWorkHistoryEquipment = EquipmentWorkHistory::where('equipment_id', $equipmentID)->first();
|
||||
|
||||
// Se nao encontrar, retorna mensagem de erro.
|
||||
if (!$receiveWorkHistoryEquipment) {
|
||||
return response()->json(['message' => 'Equipment Work History not found'], 404);
|
||||
}
|
||||
//Se encontrar verifica na ControlEquipmentWorkstation dados referentes ao equipamento que faz a tarefa TE3(2)-CV e tem o departure_date mais recente
|
||||
$mostRecentTask = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $receiveWorkHistoryEquipment->equipmentWorkHistorys_id)
|
||||
->where('elemental_tasks_id', 4)
|
||||
->whereNotNull('departure_date')
|
||||
->orderBy('departure_date', 'desc')
|
||||
->first();
|
||||
|
||||
// Se nao encontrar, retorna mensagem de erro.
|
||||
if (!$mostRecentTask) {
|
||||
return response()->json(['message' => 'No recent task found'], 404);
|
||||
}
|
||||
|
||||
$workstationTaskAnswers = WorkstationsTaskAnswers::where('control_equipment_workstation_id', $mostRecentTask->control_equipment_workstation_id)->get();
|
||||
|
||||
|
||||
$interestedQuestions = ['valve_repair', 'actuator_repair', 'repair_positioner'];
|
||||
$answersWithYes = [];
|
||||
|
||||
foreach ($workstationTaskAnswers as $answer) {
|
||||
$answerJson = json_decode($answer->answer_json, true);
|
||||
|
||||
foreach ($answerJson as $item) {
|
||||
if (in_array($item['question'], $interestedQuestions) && $item['value'] === 'yes') {
|
||||
$answersWithYes[] = ['question' => $item['question']];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return response()->json($answersWithYes);
|
||||
}
|
||||
|
||||
|
||||
// public function closeSession(Request $request, $controlEquipmentId)
|
||||
// {
|
||||
// $controlEquipment = ControlEquipmentWorkstation::find($controlEquipmentId);
|
||||
|
|
@ -117,7 +94,7 @@ public function updateSessionStatus(Request $request, $controlEquipmentId)
|
|||
|
||||
public function receiveAnswersEquipment(Request $request, $control_equipment_workstation_id)
|
||||
{
|
||||
dd($request);
|
||||
|
||||
//No request recebemos ID(NUmero da tarela elementar) , esta variavel vai receber este ID apos selerar o id da string
|
||||
$elementalTaskID = 0;
|
||||
|
||||
|
|
@ -173,9 +150,9 @@ public function receiveAnswersEquipment(Request $request, $control_equipment_wor
|
|||
$receiveAnswersElementalTasks->answer_json = $jsonString;
|
||||
|
||||
// Busca a Ws com base no id recebido da tabela Control.
|
||||
$recebeDataControlWs = ControlEquipmentWorkstation::find($control_equipment_workstation_id);
|
||||
$recebeDataControlWs->elemental_tasks_id = $elementalTaskID;
|
||||
$recebeDataControlWs->departure_date = now();
|
||||
$receiveDataControlWs = ControlEquipmentWorkstation::find($control_equipment_workstation_id);
|
||||
$receiveDataControlWs->elemental_tasks_id = $elementalTaskID;
|
||||
$receiveDataControlWs->departure_date = now();
|
||||
|
||||
$requestData = $request->all();
|
||||
|
||||
|
|
@ -185,15 +162,86 @@ public function receiveAnswersEquipment(Request $request, $control_equipment_wor
|
|||
// $matches[1] contém o número após 'ID'
|
||||
$idNumber = $matches[1];
|
||||
// Atribuir o número extraído diretamente ao elemental_tasks_id
|
||||
$recebeDataControlWs->elemental_tasks_id = $idNumber;
|
||||
$receiveDataControlWs->elemental_tasks_id = $idNumber;
|
||||
break; // Se você só espera um ID, pare o loop depois de encontrar
|
||||
}
|
||||
}
|
||||
|
||||
// Primeiro adicionamos a tarefa que acabou de completar, em seguida salvamos a respostas recebidas.
|
||||
$recebeDataControlWs->save();
|
||||
$receiveDataControlWs->save();
|
||||
$receiveAnswersElementalTasks->save();
|
||||
|
||||
// dd($recebeDataControlWs);
|
||||
|
||||
// $imagesBase64 = json_decode($request->capturedImages);
|
||||
// $imagePaths = [];
|
||||
|
||||
// // Assume $receiveDataControlWs já está definido/obtido em algum lugar do seu código
|
||||
// $folderName = $receiveDataControlWs->control_equipment_workstation_id . '_' . $receiveDataControlWs->equipmentWorkHistorys_id;
|
||||
|
||||
// // Cria a pasta se não existir
|
||||
// $path = 'receiveImagesControlEquipmentWorkstation/' . $folderName;
|
||||
// Storage::disk('public')->makeDirectory($path);
|
||||
|
||||
// foreach ($imagesBase64 as $index => $imageBase64) {
|
||||
// list($type, $imageBase64) = explode(';', $imageBase64);
|
||||
// list(, $imageBase64) = explode(',', $imageBase64);
|
||||
// $imageData = base64_decode($imageBase64);
|
||||
|
||||
// // Define um nome de arquivo baseado no índice
|
||||
// $fileName = $path . '/img' . ($index + 1) . '.png';
|
||||
|
||||
// // Salva a imagem
|
||||
// Storage::disk('public')->put($fileName, $imageData);
|
||||
|
||||
// // Armazena o caminho da imagem no array
|
||||
// $imagePaths[] = $fileName;
|
||||
// }
|
||||
if ($request->capturedImages) {
|
||||
$imagesBase64 = json_decode($request->capturedImages);
|
||||
$imagePaths = [];
|
||||
|
||||
// Obtenha ou defina $receiveDataControlWs conforme sua lógica de negócio
|
||||
$folderName = $receiveDataControlWs->control_equipment_workstation_id . '_' . $receiveDataControlWs->equipmentWorkHistorys_id;
|
||||
|
||||
// Define o caminho da pasta onde as imagens serão salvas
|
||||
$path = public_path('receiveImagesControlEquipmentWorkstation/' . $folderName);
|
||||
|
||||
// Cria a pasta se não existir
|
||||
if (!File::isDirectory($path)) {
|
||||
File::makeDirectory($path, 0777, true, true);
|
||||
}
|
||||
|
||||
foreach ($imagesBase64 as $index => $imageBase64) {
|
||||
list($type, $imageBase64) = explode(';', $imageBase64);
|
||||
list(, $imageBase64) = explode(',', $imageBase64);
|
||||
$imageData = base64_decode($imageBase64);
|
||||
|
||||
// Define um nome de arquivo baseado no índice
|
||||
$fileName = 'img' . ($index + 1) . '.png';
|
||||
|
||||
// Caminho completo do arquivo
|
||||
$fullPath = $path . '/' . $fileName;
|
||||
|
||||
// Salva a imagem
|
||||
file_put_contents($fullPath, $imageData);
|
||||
|
||||
// Armazena o caminho relativo da imagem no array
|
||||
$imagePaths[] = 'receiveImagesControlEquipmentWorkstation/' . $folderName . '/' . $fileName;
|
||||
}
|
||||
|
||||
// Salva o array de caminhos de imagem como JSON na base de dados
|
||||
$model = new ReceiveImagesControlEquipmentWorkstation(); // Ajuste conforme seu modelo
|
||||
$model->control_equipment_workstation_id = $receiveDataControlWs->control_equipment_workstation_id;
|
||||
$model->image_paths = json_encode($imagePaths);
|
||||
$model->save();
|
||||
}
|
||||
|
||||
|
||||
// return response()->json(['success' => true]);
|
||||
|
||||
|
||||
|
||||
// Agora que guardamos os dados anteriores, vamos criar a nova linha na tabela Control Equipment ID para que o equipamento continue
|
||||
// $newControlEquipment = new ControlEquipmentWorkstation;
|
||||
// $newControlEquipment->equipmentWorkHistorys_id = $recebeDataControlWs->equipmentWorkHistorys_id;
|
||||
|
|
@ -204,7 +252,7 @@ public function receiveAnswersEquipment(Request $request, $control_equipment_wor
|
|||
// dd($newControlEquipment);
|
||||
|
||||
// Vamos buscar os dados da tarefa elementar comcluida para mandar uma mensagem ao Front e indicar que esta completada
|
||||
$receiveDataElementalTask = ElementalTasks::find($recebeDataControlWs->elemental_tasks_id, 'elemental_tasks_id')->first();
|
||||
$receiveDataElementalTask = ElementalTasks::find($receiveDataControlWs->elemental_tasks_id, 'elemental_tasks_id')->first();
|
||||
|
||||
return back()->with('success', 'Tarefa :: ' . $receiveDataElementalTask->elemental_tasks_code . '-' . $receiveDataElementalTask->elemental_tasks_code . ' Concluída com sucesso!');
|
||||
|
||||
|
|
@ -256,15 +304,18 @@ public function getEquipmentData($equipment_id, $component_tag)
|
|||
|
||||
|
||||
// Recebe todas as tarefas elementares do equipamento.
|
||||
$recebeTasksForEquipment = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistory->equipmentWorkHistorys_id)->get();
|
||||
$recebeTasksForEquipment = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||
->orderBy('execution_order', 'asc')
|
||||
->get();
|
||||
|
||||
// dd($recebeTasksForEquipment);
|
||||
|
||||
//Busca as tarefas que podem ser feitas pela WS Atual a partir do Email
|
||||
$userTasks = DB::table('users as u')
|
||||
->join('construction_workstations as cw', 'u.user_name', '=', 'cw.name_workstations')
|
||||
->join('workstations_association_tasks as wat', 'cw.id_workstations', '=', 'wat.id_workstations')
|
||||
->where('u.email', $userEmail->email)
|
||||
->select('cw.id_workstations', 'cw.name_workstations', DB::raw('GROUP_CONCAT(COALESCE(wat.elemental_tasks_id, wat.further_tasks_id)) AS all_tasks'))
|
||||
->select('cw.id_workstations', 'cw.name_workstations', DB::raw('GROUP_CONCAT(COALESCE(wat.elemental_tasks_id)) AS all_tasks'))
|
||||
->groupBy('cw.id_workstations', 'cw.name_workstations')
|
||||
->get();
|
||||
|
||||
|
|
@ -290,40 +341,6 @@ public function getEquipmentData($equipment_id, $component_tag)
|
|||
// Adicione esses IDs únicos ao array $divisionElementalTasks na chave [2]
|
||||
$divisionElementalTasks[2] = $receiveTasksThatCannotBeDone->all();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// // //Aplica 2 condicoes a variavel a primeira e se os 3 campos forem nulos e a segunda e se a id_workstations nao for null e tiver o valor igual ao da sessao atual,
|
||||
// $existingDataControlEquipment = ControlEquipmentWorkstation::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||
// ->whereNull('departure_date')
|
||||
// ->whereNull('elemental_tasks_id')
|
||||
// ->orWhere('elemental_tasks_id',9)
|
||||
// ->where(function ($query) use ($receiveDataWs) {
|
||||
// $query->whereNull('id_workstations')
|
||||
// ->orWhere(function ($q) use ($receiveDataWs) {
|
||||
// $q->whereNotNull('id_workstations')
|
||||
// ->where('id_workstations', $receiveDataWs->id_workstations);
|
||||
// });
|
||||
// })
|
||||
// ->first();
|
||||
|
||||
// dd($existingDataControlEquipment);
|
||||
|
||||
// if ($existingDataControlEquipment) {
|
||||
// // Registro existente encontrado, atualize conforme necessário
|
||||
// if (strpos($component_tag, '@Obturador') !== false) {
|
||||
// $existingDataControlEquipment->elemental_tasks_id = 9;
|
||||
// }
|
||||
// $existingDataControlEquipment->id_workstations = $receiveDataWs->id_workstations;
|
||||
// $existingDataControlEquipment->entry_date = now();
|
||||
// $existingDataControlEquipment->status = 1;
|
||||
// $existingDataControlEquipment->last_active_at = now();
|
||||
|
||||
// $existingDataControlEquipment->save();
|
||||
|
||||
// $receiveDataControlEquipment = $existingDataControlEquipment;
|
||||
|
||||
$existingDataControlEquipment = null;
|
||||
|
||||
|
||||
|
|
@ -506,10 +523,11 @@ public function getEquipmentData($equipment_id, $component_tag)
|
|||
return $task->elemental_tasks_id == 9;
|
||||
})->sortBy('elemental_tasks_id');
|
||||
|
||||
// Se desejar aplicar a ordenação de forma geral, independente da condição
|
||||
$recebeTasksForEquipment = $recebeTasksForEquipment->sortBy('elemental_tasks_id');
|
||||
// ordenação de forma geral as tarefas do menor ao maior elemental_tasks_id
|
||||
$recebeTasksForEquipment = $recebeTasksForEquipment->sortBy('execution_order');
|
||||
}
|
||||
|
||||
// dd($recebeTasksForEquipment);
|
||||
|
||||
return view('workstations.workstations', [
|
||||
// Deve receber o atual COntrol ID ? tudo a vez que atualizar ??
|
||||
|
|
@ -521,7 +539,6 @@ public function getEquipmentData($equipment_id, $component_tag)
|
|||
]);
|
||||
}
|
||||
|
||||
|
||||
public function cancelElementalTaskForEquipment($controlEquipmentID)
|
||||
{
|
||||
//Nesta funcao se o utilizador da Ws utilizar o botao cancelar na view principal,o equipamento deve se desvincular na Ws atual e poder ser selecionado por outra.
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ protected function getAllowedRoutesForUserType($userType)
|
|||
'users.company','users.Show','users.edit','users.destroy','users.update','users.list',
|
||||
'CreateUsers',
|
||||
'enviar.formulario',
|
||||
'projectDetails_1','workStation_3','addFurtherTasks','deleteFurtherTasks',
|
||||
'projectDetails_1','workStation_3','addFurtherTasks','deleteFurtherTasks','editEquipmentTasks'
|
||||
|
||||
];
|
||||
|
||||
|
|
|
|||
|
|
@ -125,6 +125,7 @@ public function compose(View $view)
|
|||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Primeiro filtro: Equipamentos sem ocorrência em ControlEquipmentWorkstation
|
||||
$query->whereDoesntHave('equipmentWorkHistory.controlEquipmentWorkstation');
|
||||
|
||||
|
|
@ -153,6 +154,7 @@ public function compose(View $view)
|
|||
// Inicializa um array para armazenar o status de cada equipamento
|
||||
$equipmentStatus = [];
|
||||
|
||||
|
||||
foreach ($receiveAllEquipmentOfProject as $equipment) {
|
||||
// Agora 'equipmentWorkHistoryId' contém um único ID, então não usamos 'pluck'
|
||||
$workHistoryId = $equipment->equipmentWorkHistoryId; // Obter ID do histórico de trabalho diretamente
|
||||
|
|
@ -225,7 +227,7 @@ public function compose(View $view)
|
|||
|
||||
$equipmentIds = array_keys($equipmentStatus);
|
||||
|
||||
|
||||
// dd($equipmentIds);
|
||||
|
||||
// Obtendo os registros QrcodesAssociatedEquipment para esses equipamentos
|
||||
$receiveQrcodeEquipmentsProject = QrcodesAssociatedEquipment::whereIn('equipment_id', $equipmentIds)
|
||||
|
|
|
|||
|
|
@ -2,50 +2,80 @@
|
|||
|
||||
namespace App\Livewire\Articulado;
|
||||
|
||||
use App\Models\ElementalTasks;
|
||||
use App\Models\EquipmentWorkHistory;
|
||||
use Livewire\Component;
|
||||
|
||||
use App\Models\OrderEquipmentTasks;
|
||||
|
||||
use App\Models\FurtherTasks;
|
||||
|
||||
class AdditonalTask extends Component
|
||||
{
|
||||
public $equipment;
|
||||
|
||||
public $tasks = [];
|
||||
public $furtherTasks = [];
|
||||
|
||||
public $elementalTasks = [];
|
||||
public $furtherTaskRecords = [];
|
||||
public $furtherTasks = [];
|
||||
public $selectedFurtherTask = 'null';
|
||||
public $furtherTaskDescription = '';
|
||||
public $showAdditionalTask = false;
|
||||
|
||||
protected $listeners = ['furtherTaskSelected'];
|
||||
|
||||
|
||||
public function mount($equipment)
|
||||
{
|
||||
// A variavel public recebe o valor de $equipment
|
||||
$this->equipment = $equipment;
|
||||
|
||||
|
||||
//recebe os dados de EquipmentWorkHistory
|
||||
$receveEquipmentWorkHistory = EquipmentWorkHistory::where('equipment_id', $this->equipment->equipment_id)
|
||||
->where('company_projects_id', $this->equipment->company_projects_id)
|
||||
->first();
|
||||
|
||||
// A variavel de Array recebe os dados de OrderEquipmentTasks.
|
||||
$this->tasks = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $receveEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||
->orderBy('execution_order', 'asc')
|
||||
->get();
|
||||
|
||||
// Coletando todos os registros onde further_tasks_id é diferente de null
|
||||
$this->furtherTaskRecords = OrderEquipmentTasks::where('equipmentWorkHistorys_id',$receveEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||
->whereNotNull('further_tasks_id')
|
||||
->get();
|
||||
// Obtém os elemental_tasks_id de OrderEquipmentTasks que correspondem ao equipmentWorkHistorys_id
|
||||
$elementalTaskIds = OrderEquipmentTasks::where('equipmentWorkHistorys_id', $receveEquipmentWorkHistory->equipmentWorkHistorys_id)
|
||||
->pluck('elemental_tasks_id');
|
||||
|
||||
// Coletando todos os further_tasks_id da coleção $tasks que são diferentes de null
|
||||
$existingFurtherTaskIds = $this->tasks->whereNotNull('further_tasks_id')->pluck('further_tasks_id');
|
||||
if ($receveEquipmentWorkHistory) {
|
||||
|
||||
// Buscando furtherTasks que não estão presentes em $tasks
|
||||
$this->furtherTasks = FurtherTasks::where('company_projects_id', $this->equipment->company_projects_id)
|
||||
->whereNotIn('further_tasks_id', $existingFurtherTaskIds)
|
||||
// Agora, busca em ElementalTasks aqueles registros que correspondem aos IDs coletados
|
||||
// e que também têm o company_projects_id desejado
|
||||
$this->furtherTaskRecords = ElementalTasks::whereIn('elemental_tasks_id', $elementalTaskIds)
|
||||
->where('company_projects_id', $this->equipment->company_projects_id)
|
||||
->get();
|
||||
} else {
|
||||
$this->furtherTaskRecords = collect(); // Retorna uma coleção vazia se não encontrar nada
|
||||
}
|
||||
|
||||
|
||||
// Buscando furtherTasks que não estão presentes em $elementalTaskIds
|
||||
$this->furtherTasks = ElementalTasks::where('company_projects_id', $this->equipment->company_projects_id)
|
||||
->whereNotIn('elemental_tasks_id', $elementalTaskIds)
|
||||
->get();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function updatedSelectedFurtherTask($value)
|
||||
{
|
||||
if ($value != 'null') {
|
||||
$task = $this->furtherTasks->firstWhere('elemental_tasks_id', $value);
|
||||
$this->furtherTaskDescription = $task ? $task->further_tasks_description : '';
|
||||
} else {
|
||||
$this->furtherTaskDescription = '';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function toggle()
|
||||
{
|
||||
|
||||
|
|
|
|||
|
|
@ -40,12 +40,6 @@ public function mount($workstation)
|
|||
{
|
||||
$this->workstation = $workstation;
|
||||
|
||||
// $this->receiveAllEquipments = Equipment::where('company_projects_id', $this->workstation->company_projects_id)
|
||||
// ->join('equipment_association_ambits', 'equipments.equipment_id', '=', 'equipment_association_ambits.equipment_id')
|
||||
// ->select('equipments.equipment_id', 'equipments.equipment_type_id', 'equipment_association_ambits.ambits_id')
|
||||
// ->get()
|
||||
// ->toArray();
|
||||
|
||||
$workstation = $this->workstation; // Atribuindo a uma variável local para uso na closure
|
||||
|
||||
$this->receiveAllEquipments = Equipment::join('equipment_work_historys', function ($join) use ($workstation) {
|
||||
|
|
@ -57,10 +51,7 @@ public function mount($workstation)
|
|||
->get()
|
||||
->toArray();
|
||||
|
||||
|
||||
|
||||
$this->receiveAllFurtherTasks = FurtherTasks::where('company_projects_id', $this->workstation->company_projects_id)
|
||||
->get();
|
||||
$this->receiveAllFurtherTasks = ElementalTasks::where('company_projects_id', $this->workstation->company_projects_id)->get();
|
||||
|
||||
// Inicializar a matriz
|
||||
$this->receiveElementalTasks = [
|
||||
|
|
|
|||
17
app/Models/ReceiveImagesControlEquipmentWorkstation.php
Normal file
17
app/Models/ReceiveImagesControlEquipmentWorkstation.php
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class ReceiveImagesControlEquipmentWorkstation extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
public $timestamps = false;
|
||||
|
||||
protected $table = 'receive_images_control_equipment_workstaion';
|
||||
|
||||
protected $primaryKey = 'receive_imagens_control_id';
|
||||
}
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
|
@ -301,7 +301,16 @@ class="nav-link text-white">
|
|||
</div>
|
||||
</aside>
|
||||
<!-- /.control-sidebar -->
|
||||
|
||||
<!-- /.content-wrapper -->
|
||||
{{-- <footer class="main-footer" style="background-color: #00B0EA">
|
||||
<strong>Copyright © 2017-{{ date('Y') }} <a href="https://www.isptgroup.com" target="_blank">ISPT -
|
||||
Industrial Services,
|
||||
SA</a>.</strong>
|
||||
Todos os direitos reservados.
|
||||
<div class="float-right d-none d-sm-inline-block">
|
||||
<b>Versão</b> {{ config('app.version') }}
|
||||
</div>
|
||||
</footer> --}}
|
||||
|
||||
|
||||
</div>
|
||||
|
|
@ -416,8 +425,8 @@ function(errorMessage) {
|
|||
});
|
||||
});
|
||||
</script>
|
||||
{{--
|
||||
<script>
|
||||
|
||||
{{-- <script>
|
||||
let scannerCheck = new Html5Qrcode("readerUnique");
|
||||
let startScanCheck = document.getElementById("startScanUnique");
|
||||
let readerCheck = document.getElementById("readerUnique");
|
||||
|
|
@ -510,9 +519,9 @@ function(qrCodeMessage) {
|
|||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</script> --}}
|
||||
|
||||
<script>
|
||||
{{-- <script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
const btnConfirmManual = document.getElementById('btnConfirmManual');
|
||||
|
|
@ -557,7 +566,7 @@ function checkInputAndToggleSubmit() {
|
|||
});
|
||||
</script> --}}
|
||||
|
||||
<script>
|
||||
{{-- <script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
//Variavel para utilizacao de Qrcode
|
||||
|
|
@ -579,9 +588,6 @@ function checkInputAndToggleSubmit() {
|
|||
//Botao do Submit do formulario, nao deve ficar disponivel ate ter algum valor da verificacao de juncao de equipamentos.
|
||||
const submitButton = document.getElementById('checkValidateQrCode');
|
||||
|
||||
|
||||
|
||||
|
||||
// Função para verificar e ajustar o estado do botão baseado no valor do input
|
||||
function checkInputAndToggleSubmit() {
|
||||
const value = confirmCheckbox.value;
|
||||
|
|
@ -609,6 +615,7 @@ function checkInputAndToggleSubmit() {
|
|||
});
|
||||
});
|
||||
|
||||
|
||||
//Botao para fechar e cancelar a Leitura do Qrcode.
|
||||
document.getElementById('stopQrcodeRead').addEventListener('click', function() {
|
||||
scannerCheck.stop().then(() => {
|
||||
|
|
@ -716,6 +723,296 @@ function processQRCode(qrCodeMessage) {
|
|||
});
|
||||
}
|
||||
|
||||
btnConfirmManual.addEventListener('click', function() {
|
||||
|
||||
$('#exampleModalSmall').modal('hide'); // Fecha a segunda modal.
|
||||
$('#exampleModal').modal('hide'); // Fecha a primeira modal.
|
||||
|
||||
// Atualiza 'receiveValueValidateQRcode' para 0.
|
||||
let receiveValueValidateQRcode = 0;
|
||||
confirmCheckbox.value =
|
||||
receiveValueValidateQRcode; // Atualiza o valor do input para refletir a confirmação manual
|
||||
|
||||
verificationStatusP.textContent = 'Etiquetas confirmadas manualmente';
|
||||
verificationStatusP.style.color = 'orange'; // Altera a cor do texto conforme necessário.
|
||||
|
||||
|
||||
checkInputAndToggleSubmit(); // Checa e ajusta o estado do botão após modificar o valor
|
||||
|
||||
scannerCheck.stop().then(() => {
|
||||
// Apos fechar as Modais, cancelamos o mode de leitura se por acaso tiver sido selecionado e nao apertou em fechar.
|
||||
readerCheck.style.display = "none"; // Esconde a área de leitura
|
||||
startScanCheck.style.display =
|
||||
"block"; // Mostra novamente o botão de iniciar leitura
|
||||
|
||||
});
|
||||
|
||||
// submitButton.disabled = false;
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
</script> --}}
|
||||
|
||||
|
||||
|
||||
{{-- <script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
let scannerCheck = new Html5Qrcode("readerUnique");
|
||||
let startScanCheck = document.getElementById("startScanUnique");
|
||||
let readerCheck = document.getElementById("readerUnique");
|
||||
let currentFormId = ''; // Variável para armazenar o ID do formulário ativo
|
||||
|
||||
// Atualiza o estado do botão de envio com base no valor do checkbox
|
||||
function checkInputAndToggleSubmit(formId) {
|
||||
const confirmCheckbox = document.querySelector(
|
||||
`#${formId} input[name^="ID"][name$="[confirm_label_compliance-checkbox]"]`);
|
||||
const value = confirmCheckbox.value;
|
||||
const submitButton = document.querySelector(
|
||||
`#${formId} .submit-button-class`); // Adapte a classe do botão de envio conforme necessário
|
||||
submitButton.disabled = !(value == '1' || value == '0');
|
||||
}
|
||||
|
||||
document.querySelectorAll('[data-toggle="modal"]').forEach(button => {
|
||||
button.addEventListener('click', function() {
|
||||
currentFormId = this.getAttribute(
|
||||
'data-form-id'); // Atualiza o ID do formulário ativo
|
||||
checkInputAndToggleSubmit(currentFormId);
|
||||
});
|
||||
});
|
||||
|
||||
function startScan() {
|
||||
startScanCheck.style.display = "none";
|
||||
readerCheck.style.display = "block";
|
||||
scannerCheck.start({
|
||||
facingMode: "environment"
|
||||
}, {
|
||||
fps: 10,
|
||||
qrbox: 250
|
||||
}, function(qrCodeMessage) {
|
||||
processQRCode(qrCodeMessage);
|
||||
});
|
||||
}
|
||||
|
||||
function processQRCode(qrCodeMessage) {
|
||||
scannerCheck.stop().then(() => {
|
||||
const parts = qrCodeMessage.split('@');
|
||||
const valor = parts[0];
|
||||
const componente = parts[1];
|
||||
var expectedTag = "{{ $receiveComponentTag }}".split(
|
||||
'@'); // Adapte conforme necessário
|
||||
const expectedValor = expectedTag[0];
|
||||
const expectedComponente = determineExpectedComponent(
|
||||
currentFormId); // Função para determinar o componente esperado com base no formId
|
||||
|
||||
let receiveValueValidateQRcode = (valor == expectedValor && componente ==
|
||||
expectedComponente) ? 1 : 0;
|
||||
updateUIBasedOnQRCodeResult(currentFormId, receiveValueValidateQRcode);
|
||||
});
|
||||
}
|
||||
|
||||
function determineExpectedComponent(formId) {
|
||||
// Adapte esta lógica conforme necessário
|
||||
return (formId === "form10") ? "Obturador" : "Flange";
|
||||
}
|
||||
|
||||
function updateUIBasedOnQRCodeResult(formId, isValid) {
|
||||
const verificationStatusP = document.querySelector(`#${formId} #verificationStatus`);
|
||||
const qrCodeError = document.querySelector(`#${formId} #qrCodeError`);
|
||||
verificationStatusP.textContent = isValid ? 'Verificado com sucesso !!!' :
|
||||
'Tags não correspondem. Tente novamente!';
|
||||
verificationStatusP.style.color = isValid ? 'green' : 'red';
|
||||
qrCodeError.style.display = isValid ? 'none' : 'block';
|
||||
checkInputAndToggleSubmit(formId);
|
||||
}
|
||||
|
||||
// Adicione mais eventos conforme necessário, como o clique no botão de confirmação manual, etc.
|
||||
|
||||
document.getElementById('stopQrcodeRead').addEventListener('click', function() {
|
||||
// Pare a leitura do QR Code e ajuste a UI conforme necessário
|
||||
});
|
||||
});
|
||||
</script> --}}
|
||||
|
||||
{{-- <script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
//Variavel para utilizacao de Qrcode
|
||||
let scannerCheck = new Html5Qrcode("readerUnique");
|
||||
let startScanCheck = document.getElementById("startScanUnique");
|
||||
let readerCheck = document.getElementById("readerUnique");
|
||||
|
||||
//Botao de confirmacao Manual
|
||||
const btnConfirmManual = document.getElementById('btnConfirmManual');
|
||||
|
||||
//Botao do Submit do formulario, nao deve ficar disponivel ate ter algum valor da verificacao de juncao de equipamentos.
|
||||
const submitButton = document.getElementById('checkValidateQrCode');
|
||||
|
||||
|
||||
// Função para verificar e ajustar o estado do botão baseado no valor do input
|
||||
function checkInputAndToggleSubmit() {
|
||||
const value = confirmCheckbox.value;
|
||||
submitButton.disabled = !(value == '1' || value == '0');
|
||||
}
|
||||
|
||||
// Inicialmente checa o estado para desabilitar o botão se necessário
|
||||
checkInputAndToggleSubmit();
|
||||
|
||||
|
||||
//Ao click no botao, indica em qual form esta, para ser preciso ao saber quais as verificacoes necessarias para o Qrcode
|
||||
document.querySelectorAll('[data-toggle="modal"]').forEach(button => {
|
||||
|
||||
|
||||
button.addEventListener('click', function(formId) {
|
||||
|
||||
const formId = this.getAttribute('data-form-id');
|
||||
|
||||
console.log(formId);
|
||||
|
||||
const formSelector = `#${formId}`;
|
||||
// Extrai o número do formulário a partir do formId (assumindo que formId é algo como "form10")
|
||||
const formNumber = formId.replace('form', '');
|
||||
// Constrói o seletor do input com base no número do formulário
|
||||
const inputName = `ID${formNumber}[confirm_label_compliance-checkbox]`;
|
||||
|
||||
const qrCodeError = document.querySelector(`${formSelector} #qrCodeError`);
|
||||
const qrCodeErrorText = document.querySelector(
|
||||
`${formSelector} #qrCodeErrorText`);
|
||||
|
||||
const verificationStatusP = document.querySelector(
|
||||
`${formSelector} #verificationStatus`);
|
||||
// Usa o inputName construído para selecionar o input correto
|
||||
const confirmCheckbox = document.querySelector(
|
||||
`${formSelector} input[name="${inputName}"]`);
|
||||
const expectedComponente = (formId === "form10") ? "Obturador" : "Flange";
|
||||
|
||||
startScan(formId, qrCodeError, qrCodeErrorText, verificationStatusP,
|
||||
confirmCheckbox, expectedComponente);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function startScan(formId, qrCodeError, qrCodeErrorText, verificationStatusP, confirmCheckbox,
|
||||
expectedComponente) {
|
||||
startScanCheck.style.display = "none";
|
||||
readerCheck.style.display = "block";
|
||||
|
||||
scannerCheck.start({
|
||||
facingMode: "environment"
|
||||
}, {
|
||||
fps: 10,
|
||||
qrbox: 250
|
||||
}, function(qrCodeMessage) {
|
||||
processQRCode(qrCodeMessage, qrCodeError, qrCodeErrorText, verificationStatusP,
|
||||
confirmCheckbox, expectedComponente);
|
||||
});
|
||||
}
|
||||
|
||||
function processQRCode(qrCodeMessage, qrCodeError, qrCodeErrorText, verificationStatusP,
|
||||
confirmCheckbox, expectedComponente) {
|
||||
|
||||
//recebe e sepera o valor do Qrcode.
|
||||
const parts = qrCodeMessage.split('@');
|
||||
const valor = parts[0];
|
||||
const componente = parts[1];
|
||||
|
||||
//verica se existe $receiveComponentTag e se nao e vazio, se nao for separa a varaivel e guarda o valor antes do @
|
||||
@if (isset($receiveComponentTag) && !empty($receiveComponentTag))
|
||||
var expectedTag = "{{ $receiveComponentTag }}".split('@');
|
||||
@endif
|
||||
|
||||
const expectedValor = expectedTag[0];
|
||||
let receiveValueValidateQRcode;
|
||||
|
||||
let modalContent;
|
||||
|
||||
|
||||
|
||||
if (valor == expectedValor && componente == expectedComponente) {
|
||||
|
||||
receiveValueValidateQRcode = 1; // Atualiza para 1 (confirmado)
|
||||
verificationStatusP.textContent = 'Verificado com sucesso !!!';
|
||||
verificationStatusP.style.color = 'green'; // Muda a cor do texto para verde
|
||||
$('#exampleModal').modal('hide'); // Fecha a modal após confirmação
|
||||
qrCodeError.style.display = 'none';
|
||||
|
||||
} else {
|
||||
|
||||
$('#exampleModal').modal('hide'); // Fecha a modal após confirmação
|
||||
verificationStatusP.textContent =
|
||||
'Tags nao correspondem ao mesmo equipamento, tente novamente com a Tag correta !!! ';
|
||||
verificationStatusP.style.color = 'red'; // Muda a cor do texto para verde
|
||||
|
||||
qrCodeErrorText.textContent =
|
||||
`QR Lido: ${valor}@${componente} ||| Esperado: ${expectedValor}@${expectedComponente}`;
|
||||
qrCodeErrorText.style.color = 'red';
|
||||
|
||||
qrCodeError.style.display = 'block'
|
||||
}
|
||||
|
||||
// Atualiza o valor do input no formulário
|
||||
confirmCheckbox.value = receiveValueValidateQRcode;
|
||||
|
||||
// Seleciona o botão pelo seu ID
|
||||
const submitButton = document.getElementById('checkValidateQrCode');
|
||||
|
||||
// Verifica se 'receiveValueValidateQRcode' não é 'undefined'
|
||||
if (receiveValueValidateQRcode !== undefined) {
|
||||
// Se 'receiveValueValidateQRcode' tiver um valor (não 'undefined'), habilita o botão
|
||||
submitButton.disabled = false;
|
||||
} else {
|
||||
// Se 'receiveValueValidateQRcode' for 'undefined', desabilita o botão
|
||||
submitButton.disabled = true;
|
||||
}
|
||||
readerCheck.style.display = "block";
|
||||
startScanCheck.style.display = "block";
|
||||
}
|
||||
|
||||
// Botão para fechar e cancelar a Leitura do Qrcode.
|
||||
document.getElementById('stopQrcodeRead').addEventListener('click', function() {
|
||||
scannerCheck.stop().then(() => {
|
||||
// Assumindo que o ID do formulário atual está armazenado de alguma forma
|
||||
// Talvez através de um atributo data no botão de leitura do QR code ou de outra maneira.
|
||||
// Você precisa definir como o formId é recuperado aqui. Vou usar um placeholder para ilustração.
|
||||
const formId =
|
||||
currentFormId; // Placeholder: substitua pela lógica correta de obtenção do formId atual
|
||||
console.log(formId);
|
||||
const formSelector = `#${formId}`;
|
||||
const formNumber = formId.replace('form', '');
|
||||
const inputName = `ID${formNumber}[confirm_label_compliance-checkbox]`;
|
||||
|
||||
const qrCodeError = document.querySelector(`${formSelector} #qrCodeError`);
|
||||
const verificationStatusP = document.querySelector(
|
||||
`${formSelector} #verificationStatus`);
|
||||
|
||||
const confirmCheckbox = document.querySelector(
|
||||
`${formSelector} input[name="${inputName}"]`);
|
||||
|
||||
|
||||
// Esconde a área de leitura
|
||||
readerCheck.style.display = "none";
|
||||
// Mostra novamente o botão de iniciar leitura
|
||||
startScanCheck.style.display = "block";
|
||||
|
||||
// Limpa qualquer mensagem de erro ou de sucesso mostrada durante a leitura
|
||||
if (verificationStatusP) {
|
||||
verificationStatusP.textContent = '';
|
||||
verificationStatusP.style.color = '';
|
||||
}
|
||||
|
||||
if (qrCodeError) {
|
||||
qrCodeError.style.display = 'none';
|
||||
}
|
||||
|
||||
// Reseta o valor do input para um estado inicial
|
||||
if (confirmCheckbox) {
|
||||
confirmCheckbox.value = '';
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
btnConfirmManual.addEventListener('click', function() {
|
||||
// Atualiza 'receiveValueValidateQRcode' para 0.
|
||||
let receiveValueValidateQRcode = 0;
|
||||
|
|
@ -733,17 +1030,181 @@ function processQRCode(qrCodeMessage) {
|
|||
|
||||
// Apos fechar as Modais, cancelamos o mode de leitura se por acaso tiver sido selecionado e nao apertou em fechar.
|
||||
readerCheck.style.display = "none"; // Esconde a área de leitura
|
||||
startScanCheck.style.display = "block"; // Mostra novamente o botão de iniciar leitura
|
||||
startScanCheck.style.display =
|
||||
"block"; // Mostra novamente o botão de iniciar leitura
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script> --}}
|
||||
|
||||
|
||||
{{-- Novo teste --}}
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
// let scannerCheck;
|
||||
// let isScanning = false; // Estado global de escaneamento
|
||||
|
||||
//Para leitura do Qrcode
|
||||
let scannerCheck = new Html5Qrcode("readerUnique");
|
||||
let startScanCheck = document.getElementById("startScanUnique");
|
||||
let readerCheck = document.getElementById("readerUnique");
|
||||
|
||||
const btnConfirmManual = document.getElementById('btnConfirmManual');
|
||||
|
||||
let currentFormId = ''; // Variável para armazenar o ID do formulário ativo
|
||||
|
||||
// Captura cliques em botões que abrem a modal e extrai o ID do formulário
|
||||
document.querySelectorAll('[data-toggle="modal"]').forEach(button => {
|
||||
button.addEventListener('click', function() {
|
||||
currentFormId = this.getAttribute('data-form-id');
|
||||
console.log(` ${currentFormId}`); // Exibe o ID do formulário atual
|
||||
// const submitButton = document.querySelector(`${formSelector} #checkValidateQrCode`);
|
||||
});
|
||||
});
|
||||
|
||||
// Evento de clique para iniciar a leitura do QR Code
|
||||
startScanCheck.addEventListener('click', function() {
|
||||
startScanCheck.style.display = "none";
|
||||
readerCheck.style.display = "block";
|
||||
|
||||
// Inicia o scanner de QR Code com configurações específicas
|
||||
scannerCheck.start({
|
||||
facingMode: "environment" // Usa a câmera traseira
|
||||
}, {
|
||||
fps: 10,
|
||||
qrbox: 250
|
||||
}, function(qrCodeMessage) {
|
||||
// Chamada quando um QR Code é detectado
|
||||
processQRCode(qrCodeMessage,currentFormId);
|
||||
// startScan(currentFormId); // Inicia a leitura com base no formulário ativo
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
function processQRCode(qrCodeMessage, currentFormId) {
|
||||
scannerCheck.stop().then(() => {
|
||||
// Separa o valor do QR code.
|
||||
const parts = qrCodeMessage.split('@');
|
||||
const valor = parts[0];
|
||||
const componente = parts[1];
|
||||
|
||||
//verica se existe $receiveComponentTag e se nao e vazio, se nao for separa a varaivel e guarda o valor antes do @
|
||||
@if (isset($receiveComponentTag) && !empty($receiveComponentTag))
|
||||
var expectedTag = "{{ $receiveComponentTag }}".split('@');
|
||||
@endif
|
||||
|
||||
//Verifica se o form atual espera receber o valor : Obturador ou Flange
|
||||
const expectedComponente = (currentFormId == "form10") ? "Obturador" : "Flange";
|
||||
|
||||
const expectedValor = expectedTag[0];
|
||||
let receiveValueValidateQRcode; //
|
||||
// Seleciona os elementos específicos do formulário ativo.
|
||||
const formSelector = `#${currentFormId}`;
|
||||
|
||||
const qrCodeError = document.querySelector(`${formSelector} #qrCodeError`);
|
||||
const qrCodeErrorText = document.querySelector(`${formSelector} #qrCodeErrorText`);
|
||||
const verificationStatusP = document.querySelector(`${formSelector} #verificationStatus`);
|
||||
|
||||
const confirmCheckbox = document.querySelector(
|
||||
`${formSelector} input[name^='ID'][name$='[confirm_label_compliance-checkbox]']`
|
||||
);
|
||||
|
||||
|
||||
// const btnConfirmManual = document.getElementById('btnConfirmManual');
|
||||
// Processa a leitura do QR Code.
|
||||
if (valor == expectedValor && componente == expectedComponente) {
|
||||
receiveValueValidateQRcode = 1; // Atualiza para 1 (confirmado).
|
||||
verificationStatusP.textContent = 'Verificado com sucesso !!!';
|
||||
verificationStatusP.style.color = 'green';
|
||||
$('#exampleModal').modal('hide'); // Fecha a modal após confirmação.
|
||||
qrCodeError.style.display = 'none';
|
||||
} else {
|
||||
$('#exampleModal').modal('hide'); // Fecha a modal após confirmação.
|
||||
verificationStatusP.textContent =
|
||||
'Tags não correspondem ao mesmo equipamento, tente novamente com a Tag correta !!!';
|
||||
verificationStatusP.style.color = 'red';
|
||||
qrCodeErrorText.textContent =
|
||||
`QR Lido: ${valor}@${componente} ||| Esperado: ${expectedValor}@${expectedComponente}`;
|
||||
qrCodeErrorText.style.color = 'red';
|
||||
qrCodeError.style.display = 'block';
|
||||
}
|
||||
// Apos finalizar a leitura, deve voltar a poder utilizar a leitura do QrCode se necessario.
|
||||
readerCheck.style.display = "none";
|
||||
startScanCheck.style.display = "block";
|
||||
// Atualiza o valor do input no formulário com o resultado da verificação.
|
||||
confirmCheckbox.value = receiveValueValidateQRcode;
|
||||
|
||||
// Ajusta o estado do botão de submit com base no resultado da verificação.
|
||||
const submitButton = document.querySelector(
|
||||
`${formSelector} #checkValidateQrCode`); // Ajuste o seletor conforme necessário.
|
||||
|
||||
console.log(submitButton);
|
||||
|
||||
submitButton.disabled = receiveValueValidateQRcode !== 1;
|
||||
});
|
||||
}
|
||||
|
||||
// Configura o evento de clique para o botão que para a leitura do QR Code
|
||||
document.getElementById('stopQrcodeRead').addEventListener('click', function() {
|
||||
// Para o scanner de QR Code e executa ações de limpeza da interface
|
||||
stopScan(currentFormId);
|
||||
});
|
||||
|
||||
//Função para parar a leitura do QR Code e limpar a interface
|
||||
function stopScan(currentFormId) {
|
||||
scannerCheck.stop().then(() => {
|
||||
readerCheck.style.display = "none";
|
||||
startScanCheck.style.display = "block";
|
||||
//Recebe o form atual
|
||||
const formSelector = `#${currentFormId}`;
|
||||
|
||||
const qrCodeError = document.querySelector(`${formSelector} #qrCodeError`);
|
||||
const verificationStatusP = document.querySelector(
|
||||
`${formSelector} #verificationStatus`);
|
||||
|
||||
//De acordo com o form atual, devolve o nome do input referente ao numero do form atual
|
||||
const confirmCheckbox = document.querySelector(
|
||||
`${formSelector} input[name^='ID'][name$='[confirm_label_compliance-checkbox]']`
|
||||
);
|
||||
console.log(confirmCheckbox);
|
||||
});
|
||||
}
|
||||
|
||||
btnConfirmManual.addEventListener('click', function() {
|
||||
|
||||
const formSelector = `#${currentFormId}`;
|
||||
|
||||
// const qrCodeError = document.querySelector(`${formSelector} #qrCodeError`);
|
||||
// const verificationStatusP = document.querySelector(`${formSelector} #verificationStatus`);
|
||||
// // Constrói o nome do input dinamicamente com base no ID do formulário atual
|
||||
// const inputNameSelector =
|
||||
// `input[name='ID${currentFormId.replace('form', '')}[confirm_label_compliance-checkbox]']`;
|
||||
// const confirmCheckbox = document.querySelector(`${formSelector} ${inputNameSelector}`);
|
||||
// if (!confirmCheckbox) {
|
||||
// console.error("Elemento confirmCheckbox não encontrado.");
|
||||
// return;
|
||||
// }
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
// Clone the behavior of treeview to control-treeview
|
||||
$(document).on('click', '[data-widget="control-treeview"] .nav-link', function(event) {
|
||||
event.preventDefault();
|
||||
var checkElement = $(this).next();
|
||||
|
|
|
|||
|
|
@ -37,15 +37,21 @@
|
|||
<div class="text-center">
|
||||
<p><b>Excluir Tarefa Complementar</b></p>
|
||||
</div>
|
||||
|
||||
<ul class="list-group scrollable-list" style="border: 1px solid #09255C;">
|
||||
@if ($furtherTaskRecords->isEmpty())
|
||||
<p class="text-center">Não existem tarefas elementares associadas ao equipamento atual.</p>
|
||||
@else
|
||||
@foreach ($furtherTaskRecords as $task)
|
||||
<li class="list-group-item d-flex align-items-center" aria-current="true">
|
||||
<li class="list-group-item d-flex align-items-center"
|
||||
aria-current="true">
|
||||
<input class="icheck-primary me-2" type="checkbox"
|
||||
name="selectedTasks[]" value="{{ $task->further_tasks_id }}">
|
||||
({{ $task->furtherTasks->further_tasks_name }})
|
||||
- {{ $task->furtherTasks->further_tasks_description }}
|
||||
name="selectedTasks[]" value="{{ $task->elemental_tasks_id }}">
|
||||
({{ $task->elemental_tasks_code }})
|
||||
- {{ $task->elemental_tasks_description }}
|
||||
</li>
|
||||
@endforeach
|
||||
@endif
|
||||
</ul>
|
||||
<br>
|
||||
<div>
|
||||
|
|
@ -59,11 +65,10 @@
|
|||
<br>
|
||||
|
||||
<div class="text-right">
|
||||
<button type="submit" class="btn btn-outline-danger">Excluir</button>
|
||||
<button type="submit" class="btn btn-outline-danger" {{ $furtherTaskRecords->isEmpty() ? 'disabled' : '' }}>Excluir</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
@ -76,33 +81,42 @@
|
|||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="text-center">
|
||||
<p><b>Fluxo da Tarefa</b></p>
|
||||
<p><b>Fluxo da tarefa</b></p>
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="equipmentID" value="{{ $equipment->equipment_id }}">
|
||||
<div class="row">
|
||||
|
||||
<input type="hidden" name="company_projects_id"
|
||||
value="{{ $equipment->company_projects_id }}">
|
||||
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<p>Tarefas complementares ja existentes:</p>
|
||||
<p style="color: blue">Selecione tarefas complementares preexistentes</p>
|
||||
<select class="form-control" name="selectedFurtherTaskExisting"
|
||||
id="selectedFurtherTaskExisting" wire:model="selectedFurtherTask"
|
||||
wire:change="$refresh">
|
||||
<option value="null" name="nullFurtherTasks">N/A</option>
|
||||
@foreach ($furtherTasks as $furtherTask)
|
||||
<option value="{{ $furtherTask->further_tasks_id }}">
|
||||
{{ $furtherTask->further_tasks_description }}</option>
|
||||
<option value="{{ $furtherTask->elemental_tasks_id }}">
|
||||
({{ $furtherTask->elemental_tasks_code }}) {{$furtherTask->elemental_tasks_description}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<p>Indique a tarefa complementar :</p>
|
||||
{{-- <input name="furtherTask" type="text" class="form-control"> --}}
|
||||
<p style="color:green"> Denominação da nova tarefa complementar</p>
|
||||
<input name="furtherTask" type="text" class="form-control"
|
||||
{{ $selectedFurtherTask != 'null' ? 'disabled' : '' }}>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<p>Descrição da tarefa complementar</p>
|
||||
<textarea name="furtherTaskDescription" class="form-control" rows="3" wire:model="furtherTaskDescription"></textarea>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<div>
|
||||
<p>Selecione Após qual tarefa :</p>
|
||||
<p> Selecione após qual tarefa</p>
|
||||
<select name="ArrayListElementsTasks" id="ArrayListElementsTasks"
|
||||
class="form-control">
|
||||
@foreach ($tasks as $task)
|
||||
|
|
@ -110,14 +124,9 @@ class="form-control">
|
|||
<option name='startFutherTask'
|
||||
value="{{ $task->execution_order }}">
|
||||
{{ $task->execution_order }} --
|
||||
({{ $task->elementalTask->elemental_tasks_code }})
|
||||
{{ $task->elementalTask->elemental_tasks_description }}
|
||||
</option>
|
||||
@else
|
||||
<option name='startFutherTask'
|
||||
value="{{ $task->execution_order }}">
|
||||
{{ $task->execution_order }} --
|
||||
({{ $task->furtherTasks->further_tasks_name }})
|
||||
{{ $task->furtherTasks->further_tasks_description }}</option>
|
||||
@endif
|
||||
@endforeach
|
||||
</select>
|
||||
|
|
|
|||
|
|
@ -26,24 +26,25 @@
|
|||
<section class="content">
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
{{-- Lista de tarefas gerais --}}
|
||||
@if (count($receiveElementalTasks['geral']) > 0)
|
||||
<div class="col-sm">
|
||||
<div class="card card-success">
|
||||
<div class="card-header">
|
||||
<div class="card-header clickable">
|
||||
<h3 class="card-title">Tarefas Gerais</h3>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool"
|
||||
data-card-widget="collapse"><i class="fas fa-minus"></i>
|
||||
</button>
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
data-card-widget="collapse"><i class="fas fa-plus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@foreach ($receiveElementalTasks['geral'] as $taskId => $generalTasks)
|
||||
<p>{{ $generalTasks['code'] }} - {{ $generalTasks['description'] }}
|
||||
<p>
|
||||
<input type="hidden" name="generalTasks[{{ $taskId }}]"
|
||||
value="off">
|
||||
<input type="checkbox" value="on"
|
||||
name="generalTasks[{{ $taskId }}]">
|
||||
{{ $generalTasks['code'] }} - {{ $generalTasks['description'] }}
|
||||
</p>
|
||||
@endforeach
|
||||
</div>
|
||||
|
|
@ -52,31 +53,22 @@
|
|||
@endif
|
||||
|
||||
<div class="col-sm">
|
||||
|
||||
{{-- Lista de tarefas PSV --}}
|
||||
@if (count($receiveElementalTasks['3']) > 0)
|
||||
<div class="col-sm">
|
||||
<div class="card card-primary collapsed-card">
|
||||
<div class="card-header">
|
||||
<div class="card-header clickable">
|
||||
<h3 class="card-title">
|
||||
Tarefas PSV</h3>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool"
|
||||
data-card-widget="collapse">
|
||||
<i class="fas fa-plus"></i>
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
|
||||
{{-- @foreach ($receiveElementalTasks['3'] as $taskId => $generalTasks)
|
||||
<p><input type="hidden" name="3[{{ $taskId }}]"
|
||||
value="off">
|
||||
<input type="checkbox" value="on"
|
||||
name="3[{{ $taskId }}]">
|
||||
{{ $generalTasks['code'] }} -
|
||||
{{ $generalTasks['description'] }}
|
||||
|
||||
</p>
|
||||
@endforeach --}}
|
||||
@foreach ($receiveElementalTasks['3'] as $taskId => $generalTasks)
|
||||
<p>
|
||||
<input type="hidden" name="3[{{ $taskId }}]"
|
||||
|
|
@ -88,36 +80,38 @@
|
|||
{{ $generalTasks['description'] }}
|
||||
</p>
|
||||
@endforeach
|
||||
<p>
|
||||
{{-- Este code funciona !!! porem por falta de tempo ainda nao foi implementado para todos as tarefas e parece que so funciona no primeiro posto de trabalho. --}}
|
||||
{{-- <p>
|
||||
<input type="checkbox" id="selectAll">
|
||||
<label for="selectAll">Selecionar Todos</label>
|
||||
</p>
|
||||
</p> --}}
|
||||
</div> {{-- ./card-body --}}
|
||||
</div>
|
||||
</div> {{-- ./col-sm-12 --}}
|
||||
@endif
|
||||
|
||||
{{-- Lista de tarefas ISV --}}
|
||||
@if (count($receiveElementalTasks['2']) > 0)
|
||||
<div class="col-sm">
|
||||
<div class="card card-primary collapsed-card">
|
||||
<div class="card-header">
|
||||
<div class="card-header clickable">
|
||||
<h3 class="card-title">
|
||||
Tarefas ISV</h3>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool"
|
||||
data-card-widget="collapse">
|
||||
<i class="fas fa-plus"></i>
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@foreach ($receiveElementalTasks['2'] as $taskId => $generalTasks)
|
||||
<p>{{ $generalTasks['code'] }} -
|
||||
{{ $generalTasks['description'] }}
|
||||
<p>
|
||||
<input type="hidden" name="2[{{ $taskId }}]"
|
||||
value="off">
|
||||
<input type="checkbox" value="on"
|
||||
name="2[{{ $taskId }}]">
|
||||
{{ $generalTasks['code'] }} -
|
||||
{{ $generalTasks['description'] }}
|
||||
</p>
|
||||
@endforeach
|
||||
</div> {{-- ./card-body --}}
|
||||
|
|
@ -125,56 +119,56 @@
|
|||
</div>
|
||||
@endif
|
||||
|
||||
{{-- Lista de tarefas CV --}}
|
||||
@if (count($receiveElementalTasks['1']) > 0)
|
||||
<div class="col-sm">
|
||||
<div class="card card-primary collapsed-card">
|
||||
<div class="card-header">
|
||||
<div class="card-header clickable">
|
||||
<h3 class="card-title">
|
||||
Tarefas CV</h3>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool"
|
||||
data-card-widget="collapse">
|
||||
<i class="fas fa-plus"></i>
|
||||
</button>
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
data-card-widget="collapse"><i
|
||||
class="fas fa-plus"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@foreach ($receiveElementalTasks['1'] as $taskId => $generalTasks)
|
||||
<p>{{ $generalTasks['code'] }} -
|
||||
{{ $generalTasks['description'] }}
|
||||
<p>
|
||||
<input type="hidden" name="1[{{ $taskId }}]"
|
||||
value="off">
|
||||
<input type="checkbox" value="on"
|
||||
name="1[{{ $taskId }}]">
|
||||
{{ $generalTasks['code'] }} -
|
||||
{{ $generalTasks['description'] }}
|
||||
</p>
|
||||
@endforeach
|
||||
</div> {{-- ./card-body --}}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (count($receiveAllFurtherTasks) > 0)
|
||||
<div class="col-sm">
|
||||
<div class="card card-info collapsed-card">
|
||||
<div class="card-header">
|
||||
<div class="card-header clickable">
|
||||
<h3 class="card-title">
|
||||
Tarefas Complementares</h3>
|
||||
<div class="card-tools">
|
||||
<button type="button" class="btn btn-tool"
|
||||
data-card-widget="collapse">
|
||||
<i class="fas fa-plus"></i>
|
||||
<button type="button" class="btn btn-tool collapse-button"
|
||||
data-card-widget="collapse"><i class="fas fa-plus"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
@foreach ($receiveAllFurtherTasks as $furtherTasks)
|
||||
<p>{{ $furtherTasks->further_tasks_name }} -
|
||||
{{ $furtherTasks->further_tasks_description }}
|
||||
<p>
|
||||
<input type="hidden"
|
||||
name="FurtherTasks[{{ $furtherTasks->further_tasks_id }}]"
|
||||
name="FurtherTasks[{{ $furtherTasks->elemental_tasks_id }}]"
|
||||
value="off">
|
||||
<input type="checkbox" value="on"
|
||||
name="FurtherTasks[{{ $furtherTasks->further_tasks_id }}]">
|
||||
name="FurtherTasks[{{ $furtherTasks->elemental_tasks_id }}]">
|
||||
{{ $furtherTasks->elemental_tasks_code }} -
|
||||
{{ $furtherTasks->elemental_tasks_description }}
|
||||
</p>
|
||||
@endforeach
|
||||
</div> {{-- ./card-body --}}
|
||||
|
|
@ -215,6 +209,18 @@
|
|||
});
|
||||
</script>
|
||||
|
||||
<!-- Script para abrir os card sem tem que click diretamente no icone -->
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
$('.clickable').on('click', function(e) {
|
||||
// Verifica se o clique não foi no botão
|
||||
if (!$(e.target).is('.collapse-button') && !$(e.target).is('.collapse-button *')) {
|
||||
$(this).find('.collapse-button').trigger('click');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
{{-- Scrip para assim que entrar na modal, ele verifica quais as tarefas ja associadas a essa Ws e mostra nas checkbox como checked --}}
|
||||
<script>
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
}, 5000); // A mensagem desaparecerá após 5 segundos
|
||||
</script>
|
||||
@endif
|
||||
|
||||
@if (session('danger'))
|
||||
<div class="content">
|
||||
<div class="alert alert-danger" role="alert" id="alert-message-danger" style="transition: opacity 1s;">
|
||||
|
|
@ -32,8 +33,6 @@
|
|||
</script>
|
||||
@endif
|
||||
|
||||
|
||||
|
||||
@if (session('dangerLogs') && !empty(session('dangerLogs')))
|
||||
<div class="content pt-3">
|
||||
<div class="card card-danger collapsed-card">
|
||||
|
|
@ -1436,14 +1435,18 @@ class="btn btn-primary float-right">Postos de Trabalho</a>
|
|||
@csrf
|
||||
|
||||
<div class="modal-body">
|
||||
<p>Ao optar por criar o equipamento, este assumirá o nome já existente acrescido de (+1) para indicar o número da cópia e para diferenciá-lo como um equipamento individual em relação ao equipamento original de mesma TAG.</p>
|
||||
<h4><b>Tag:</b> {{ $pendingEquipment->pending_equipment_tag }} <strong>(Número da copia)</strong>
|
||||
<p>Ao optar por criar o equipamento, este assumirá o nome já existente acrescido de (+1)
|
||||
para indicar o número da cópia e para diferenciá-lo como um equipamento individual em
|
||||
relação ao equipamento original de mesma TAG.</p>
|
||||
<h4><b>Tag:</b> {{ $pendingEquipment->pending_equipment_tag }} <strong>(Número da
|
||||
copia)</strong>
|
||||
</h4>
|
||||
<h4><b>Descrição:</b> {{ $pendingEquipment->pending_equipment_description }}
|
||||
<strong>(Número da copia)</strong>
|
||||
</h4>
|
||||
|
||||
<h4>{{ $pendingEquipment->pending_equipment_type_id }}({{ $pendingEquipment->equipmentType->equipment_type_name }})</h4>
|
||||
<h4>{{ $pendingEquipment->pending_equipment_type_id }}({{ $pendingEquipment->equipmentType->equipment_type_name }})
|
||||
</h4>
|
||||
<select class="form-control" name="EquipmentAmbit"
|
||||
id="AmbitsEquipments_list-{{ $pendingEquipment->pending_equipment_id }}" required>
|
||||
<option value='' hidden>Selecionar Âmbitos...</option>
|
||||
|
|
@ -1501,8 +1504,11 @@ class="btn btn-primary float-right">Postos de Trabalho</a>
|
|||
|
||||
@endsection
|
||||
|
||||
|
||||
@section('scriptsTemplateAdmin')
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
var dataTable;
|
||||
$(document).ready(function() {
|
||||
|
|
@ -1632,12 +1638,14 @@ class="btn btn-primary float-right">Postos de Trabalho</a>
|
|||
url: '/api/ambits/' + equipmentTypeID,
|
||||
type: 'GET',
|
||||
success: function(data) {
|
||||
$('#AmbitsEquipments_listManual').empty(); // Limpar o select de ambits
|
||||
$('#AmbitsEquipments_listManual')
|
||||
.empty(); // Limpar o select de ambits
|
||||
$('#AmbitsEquipments_listManual').append(
|
||||
'<option value="" hidden>Selecionar Tipo de Âmbito...</option>'
|
||||
);
|
||||
$.each(data, function(key, value) {
|
||||
$('#AmbitsEquipments_listManual').append('<option value="' +
|
||||
$('#AmbitsEquipments_listManual').append(
|
||||
'<option value="' +
|
||||
value.ambits_id + '">' + value
|
||||
.ambits_description + '</option>');
|
||||
});
|
||||
|
|
@ -1690,9 +1698,11 @@ class="btn btn-primary float-right">Postos de Trabalho</a>
|
|||
$(document).ready(function() {
|
||||
@isset($pendingEquipment)
|
||||
// Se $pendingEquipment está definido, executa o AJAX
|
||||
var equipmentTypeID ='{{ $pendingEquipment->pending_equipment_type_id }}'; // Usando Blade para inserir o valor
|
||||
var equipmentTypeID =
|
||||
'{{ $pendingEquipment->pending_equipment_type_id }}'; // Usando Blade para inserir o valor
|
||||
|
||||
var selectId = "AmbitsEquipments_list-{{ $pendingEquipment->pending_equipment_id }}"; // Usando Blade para inserir o valor
|
||||
var selectId =
|
||||
"AmbitsEquipments_list-{{ $pendingEquipment->pending_equipment_id }}"; // Usando Blade para inserir o valor
|
||||
|
||||
|
||||
if (equipmentTypeID) {
|
||||
|
|
@ -1743,8 +1753,8 @@ class="btn btn-primary float-right">Postos de Trabalho</a>
|
|||
}
|
||||
@endisset
|
||||
});
|
||||
</script>
|
||||
--}}
|
||||
</script> --}}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1798,7 +1808,8 @@ class="btn btn-primary float-right">Postos de Trabalho</a>
|
|||
});
|
||||
</script>
|
||||
|
||||
<script>
|
||||
|
||||
{{-- <script>
|
||||
$(function() {
|
||||
$('#psv_card').hide();
|
||||
$('#isv_card').hide();
|
||||
|
|
@ -1830,8 +1841,45 @@ class="btn btn-primary float-right">Postos de Trabalho</a>
|
|||
}
|
||||
});
|
||||
});
|
||||
</script> --}}
|
||||
|
||||
<script>
|
||||
$(function() {
|
||||
// Esconde todos os cards inicialmente
|
||||
$('#psv_card').hide();
|
||||
$('#isv_card').hide();
|
||||
$('#cv_card').hide();
|
||||
|
||||
// Evento de mudança no select de tipos de equipamento
|
||||
$('#equipmentType_id_listManual').change(function() {
|
||||
// Esconde todos os cards
|
||||
$('#psv_card').hide();
|
||||
$('#isv_card').hide();
|
||||
$('#cv_card').hide();
|
||||
|
||||
// Desabilita todos os inputs nos cards
|
||||
$('.card_inputs').prop('disabled', true);
|
||||
|
||||
// Mostra o card baseado na opção selecionada e habilita seus inputs
|
||||
switch ($(this).val()) {
|
||||
case '1': // Se for CV
|
||||
$('#cv_card').show();
|
||||
$('#cv_card .card_inputs').prop('disabled', false);
|
||||
break;
|
||||
case '2': // Se for ISV
|
||||
$('#isv_card').show();
|
||||
$('#isv_card .card_inputs').prop('disabled', false);
|
||||
break;
|
||||
case '3': // Se for PSV
|
||||
$('#psv_card').show();
|
||||
$('#psv_card .card_inputs').prop('disabled', false);
|
||||
break;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
<script>
|
||||
$(document).ready(function() {
|
||||
$('.fa-eye').parent().click(function(event) {
|
||||
|
|
@ -2286,7 +2334,8 @@ function(task) {
|
|||
// Adiciona um botão de enviar ao formulário
|
||||
form.append(table);
|
||||
form.append(
|
||||
'<button type="submit" class="btn btn-primary">Submit</button>');
|
||||
'<button type="submit" class="btn btn-primary">Adicionar a Obra</button>'
|
||||
);
|
||||
|
||||
$('#modal-addingEquipmentToProject .table-responsive').append(form);
|
||||
$('#modal-addingEquipmentToProject').modal('show');
|
||||
|
|
@ -2360,5 +2409,4 @@ function(task) {
|
|||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -38,10 +38,10 @@
|
|||
<a href="#" type="button" class="btn btn-block bg-primary btn-lg"
|
||||
style="margin-bottom: 2%;">Tarefas</a>
|
||||
</div>
|
||||
<div class="col-sm" id="ViewWorkstationButton">
|
||||
{{-- <div class="col-sm" id="ViewWorkstationButton">
|
||||
<a href="#" type="button" class="btn btn-block bg-primary btn-lg"
|
||||
style="margin-bottom: 2%;">Postos de Trabalho</a>
|
||||
</div>
|
||||
</div> --}}
|
||||
</div>
|
||||
|
||||
<div class="card card-primary" id="CardViewEquipments">
|
||||
|
|
@ -68,7 +68,7 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card card-primary" id="CardViewWorkstations">
|
||||
{{-- <div class="card card-primary" id="CardViewWorkstations">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Postos de Trabalho</h3>
|
||||
<div class="card-tools">
|
||||
|
|
@ -76,9 +76,23 @@
|
|||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<p>teste</p>
|
||||
@livewire('execução.tasks-dashboard', ['datasProject' => $DatasProject], key($DatasProject->company_projects_id))
|
||||
</div>
|
||||
</div> --}}
|
||||
|
||||
{{-- <div class="card card-primary" id="CardViewWorkstations">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Postos de Trabalho</h3>
|
||||
<div class="card-tools">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-body">
|
||||
<p>teste</p>
|
||||
@livewire('execução.workstation-dashboard', ['datasProject' => $DatasProject], key($DatasProject->company_projects_id))
|
||||
</div>
|
||||
</div>
|
||||
</div> --}}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,27 @@
|
|||
@extends('Templates/templateAdmin')
|
||||
|
||||
@section('Main-content')
|
||||
|
||||
<section class="content-header">
|
||||
<div class="container-fluid">
|
||||
<div class="row mb-2">
|
||||
<div class="col-sm-6">
|
||||
<h1>Relatório Individual</h1>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
{{-- Precisa passar o ID do cliente --}}
|
||||
<li class="breadcrumb-item active"><a href="{{ route('reportingDataClient', $detailsProject->user_id) }}">Obras Concluidas</a></li>
|
||||
{{-- Passar o numero da Obra --}}
|
||||
<li class="breadcrumb-item active"><a href="{{ route('showDataDetailsProjectClient', $detailsProject->company_projects_id) }}">Relatorios Gerais</a></li>
|
||||
<li class="breadcrumb-item active">Relatório Individual</li>
|
||||
</ol>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<fieldset class="content">
|
||||
<div class="container-fluid">
|
||||
|
||||
|
|
|
|||
|
|
@ -1720,6 +1720,7 @@ class="form-control card_inputs" id="crane"
|
|||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{-- Editar --}}
|
||||
<div class="tab-pane fade pt-1" id="edit-equipment">
|
||||
<div id="cv_card" class="card card-info specificAttributes-div">
|
||||
|
|
@ -2095,9 +2096,9 @@ class="form-control card_inputs"
|
|||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- Historico --}}
|
||||
<div class="tab-pane fade pt-1" id="history-equipment">
|
||||
|
||||
@foreach ($receiveAlldetailsEquipmentWorkHistory as $detailsEquipmentWorkHistory)
|
||||
<div id="isv_card" class="card card-secondary specificAttributes-div">
|
||||
<div class="card-header">
|
||||
|
|
|
|||
|
|
@ -79,7 +79,6 @@ class="fas fa-minus"></i>
|
|||
</div>{{-- ./card card-danger --}}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (count($allMissingTasks['further']) > 0)
|
||||
<div class="col-sm">
|
||||
<div class="card card-danger">
|
||||
|
|
|
|||
|
|
@ -148,7 +148,11 @@
|
|||
</div>
|
||||
<div class="box box-text">{{ $dataAmbit->ambits_description }}</div>
|
||||
<div class="box last-box">
|
||||
<img class="header-img" src="{{ $userLogoPath }}" alt="User Logo">
|
||||
<img class="header-img"
|
||||
src="{{ public_path('/img/ispt/4.0/Ispt4.0_Símbolo_Fundo_Azul-Marinho@2x-100.jpg') }}"
|
||||
alt="Logo Esquerdo"
|
||||
{{-- Estava a utilizar a imagem do proprio utilizador, porem iste metodo so faz sentido no perfil de Empresa que tera sua proprio imagem no relatorio --}}
|
||||
{{-- <img class="header-img" src="{{ $userLogoPath }}" alt="User Logo"> --}}
|
||||
</div>
|
||||
</div>
|
||||
<table class="navBar">
|
||||
|
|
@ -157,30 +161,30 @@
|
|||
<th>Unidade</th>
|
||||
<th>Tag Nº</th>
|
||||
<th>Dim</th>
|
||||
<th>#(Classe)</th>
|
||||
{{-- <th>#(Classe)</th> --}}
|
||||
<th>DN</th>
|
||||
<th>P&ID</th>
|
||||
<th>Observacoes</th>
|
||||
{{-- <th>Observacoes</th> --}}
|
||||
<th>Andaime</th>
|
||||
<th>Isolamento</th>
|
||||
<th>Grua</th>
|
||||
<th>Concluido</th>
|
||||
{{-- <th>Concluido</th> --}}
|
||||
</tr>
|
||||
@endif
|
||||
<tr class="items">
|
||||
<td>{{ $equipmentDetail->equipment_id }}</td>
|
||||
<td>{{ $equipmentDetail->ispt_number }}</td>
|
||||
<td>{{ $equipmentDetail->unit_id }}</td>
|
||||
<td>{{ $equipmentDetail->equipment_tag }}</td>
|
||||
|
||||
<td>{{ $equipmentDetail->dim }}</td>
|
||||
<td>{{ $equipmentDetail->dn }}</td>
|
||||
<td>{{ $equipmentDetail->pid }}</td>
|
||||
<td>{{ $equipmentDetail->scaffold }}</td>
|
||||
<td>{{ $equipmentDetail->isolation }}</td>
|
||||
<td>{{ $equipmentDetail->crane }}</td>
|
||||
{{-- <td>{{ $equipmentDetail->equipment_tag }}</td>
|
||||
<td>{{ $equipmentDetail->equipment_tag }}</td>
|
||||
<td>{{ $equipmentDetail->equipment_tag }}</td>
|
||||
<td>{{ $equipmentDetail->equipment_tag }}</td>
|
||||
<td>{{ $equipmentDetail->equipment_tag }}</td>
|
||||
<td>{{ $equipmentDetail->equipment_tag }}</td>
|
||||
<td>{{ $equipmentDetail->equipment_tag }}</td>
|
||||
<td>{{ $equipmentDetail->equipment_tag }}</td>
|
||||
<td>{{ $equipmentDetail->equipment_tag }}</td>
|
||||
<td>{{ $equipmentDetail->equipment_tag }}</td>
|
||||
<td>{{ $equipmentDetail->equipment_tag }}</td> --}}
|
||||
</tr>
|
||||
@php $count++; @endphp
|
||||
@endforeach
|
||||
|
|
@ -198,9 +202,9 @@
|
|||
<td> </td> {{-- Espaço em branco --}}
|
||||
<td> </td> {{-- Espaço em branco --}}
|
||||
<td> </td> {{-- Espaço em branco --}}
|
||||
<td> </td> {{-- Espaço em branco --}}
|
||||
<td> </td> {{-- Espaço em branco --}}
|
||||
<td> </td> {{-- Espaço em branco --}}
|
||||
{{-- <td> </td> Espaço em branco
|
||||
<td> </td> Espaço em branco
|
||||
<td> </td> Espaço em branco --}}
|
||||
</tr>
|
||||
@php $count++; @endphp
|
||||
@endwhile
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@
|
|||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- @dd($receiveAllTypeEquipments) --}}
|
||||
<div class="col-sm">
|
||||
<div class="form-group">
|
||||
<label>Tipo de equipamento</label>
|
||||
|
|
|
|||
|
|
@ -12,8 +12,11 @@
|
|||
</div>
|
||||
<div class="col-sm-6">
|
||||
<ol class="breadcrumb float-sm-right">
|
||||
<li class="breadcrumb-item active"><a href="{{ route('reportingDataClient') }}">Obras Concluidas</a></li>
|
||||
<li class="breadcrumb-item active"><a href="{{ route('showDataDetailsProjectClient',['projectID' => $projectId]) }}">Relatorios Gerais</a></li>
|
||||
<li class="breadcrumb-item active"><a href="{{ route('reportingDataClient') }}">Obras Concluidas</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active"><a
|
||||
href="{{ route('showDataDetailsProjectClient', ['projectID' => $projectId]) }}">Relatorios
|
||||
Gerais</a></li>
|
||||
<li class="breadcrumb-item active">Relatório geral Ambito</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
|
@ -32,7 +35,9 @@
|
|||
</div>
|
||||
<div class="col-sm text-right">
|
||||
{{-- <a href="{{route('showReportingForAmbitsProjectPdf')}}><i class="fa-solid fa-file-pdf fa-2x"></i></a> --}}
|
||||
<a href="{{ route('showReportingForAmbitsProjectPdf', ['ambitId' => $ambitId, 'projectId' => $projectId]) }}"><i class="fa-solid fa-file-pdf fa-2x"></i></a>
|
||||
<a
|
||||
href="{{ route('showReportingForAmbitsProjectPdf', ['ambitId' => $ambitId, 'projectId' => $projectId]) }}"><i
|
||||
class="fa-solid fa-file-pdf fa-2x"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -45,6 +50,15 @@
|
|||
<th>Nº ISPT</th>
|
||||
<th>Unidade</th>
|
||||
<th>Tag Nº</th>
|
||||
<th>Dim</th>
|
||||
{{-- <th>#(Classe)</th> --}}
|
||||
<th>DN</th>
|
||||
<th>P&ID </th>
|
||||
{{-- <th>Observacoes</th> --}}
|
||||
<th>Andaime</th>
|
||||
<th>Isolamento</th>
|
||||
<th>Grua</th>
|
||||
{{-- <th>Concluido</th> --}}
|
||||
</tr>
|
||||
</thead>
|
||||
</table>
|
||||
|
|
@ -92,6 +106,29 @@
|
|||
data: 'equipment_tag',
|
||||
name: 'equipment_tag'
|
||||
},
|
||||
{
|
||||
data: 'dim',
|
||||
name: 'dim'
|
||||
}, {
|
||||
data: 'dn',
|
||||
name: 'dn'
|
||||
},
|
||||
{
|
||||
data: 'pid',
|
||||
name: 'pid'
|
||||
},
|
||||
{
|
||||
data: 'scaffold',
|
||||
name: 'scaffold'
|
||||
},
|
||||
{
|
||||
data: 'isolation',
|
||||
name: 'isolation'
|
||||
},
|
||||
{
|
||||
data: 'crane',
|
||||
name: 'crane'
|
||||
},
|
||||
],
|
||||
});
|
||||
});
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -102,6 +102,9 @@
|
|||
return view('email/FormAdmin');
|
||||
})->name('formulario');
|
||||
|
||||
Route::post('formulario/receive', [Pending_UserController::class, 'store'])->name('criarUser');
|
||||
|
||||
|
||||
// Email
|
||||
Route::get('/your-verification-route/{id}/{hash}', [UserController::class, 'yourVerificationMethod'])
|
||||
->middleware(['auth', 'signed', 'throttle:6,1'])
|
||||
|
|
@ -194,6 +197,8 @@
|
|||
Route::post('editProfile/{id}', 'EditProfile')->name('editProfile');
|
||||
});
|
||||
|
||||
Route::post('editEquipmentTasks/{equipmentID}/{projectId}',[ProjectoDatacontroller::class,'editEquipmentTasks'])->name('editEquipmentTasks');
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Management of projects created
|
||||
|
|
@ -260,7 +265,6 @@
|
|||
Route::post('enviar-formulario', [FormController::class, 'enviarEmail'])->name('enviar.formulario');
|
||||
|
||||
Route::get('/CreateUsers/{id}', [Pending_UserController::class, 'ShowFormUser'])->name('ShowPendingUser');
|
||||
Route::post('formulario/receive', [Pending_UserController::class, 'store'])->name('criarUser');
|
||||
Route::get('/CreateUsers', [Pending_UserController::class, 'ListPendingUsers'])->name('CreateUsers');
|
||||
Route::post('/register', [CustomRegistrationController::class, 'store'])->name('register');
|
||||
|
||||
|
|
@ -283,6 +287,8 @@
|
|||
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/receiveQuestionsEquipment/{equipmentID}',[WorkstationsJobsController::class,'receiveQuestionsEquipment']);
|
||||
|
||||
|
||||
|
||||
// Route::get('/api/receiveUnits', [CreateProjectController::class, 'receiveUnits']);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user