diff --git a/.env b/.env index 9a6b3bc2..f5fb8331 100755 --- a/.env +++ b/.env @@ -1,7 +1,7 @@ APP_NAME="ISPT4.0" APP_ENV=local APP_KEY=base64:ahx5/AvVGu/iHQx1mjX/EQg4m1NHLvtjzb6pFa49TlE= -APP_DEBUG=false +APP_DEBUG=true APP_URL=http://localhost APP_VERSION = "1.0.0" diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index e6b9960e..8146f572 100755 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -12,7 +12,11 @@ class Kernel extends ConsoleKernel */ protected function schedule(Schedule $schedule): void { - // $schedule->command('inspire')->hourly(); + $schedule->call(function () { + \App\Models\CompanyProject::where('order_project', 2) + ->where('date_started', '<=', now()) + ->update(['order_project' => 3]); + })->everyMinute(); // Ou ajuste para a frequência desejada } /** diff --git a/app/Http/Controllers/CreateProjectController copy.php b/app/Http/Controllers/CreateProjectController copy.php index 00a247c2..d83f69f9 100755 --- a/app/Http/Controllers/CreateProjectController copy.php +++ b/app/Http/Controllers/CreateProjectController copy.php @@ -99,6 +99,7 @@ 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(); diff --git a/app/Http/Controllers/CreateProjectController.php b/app/Http/Controllers/CreateProjectController.php index d95b570e..53b6fcb1 100755 --- a/app/Http/Controllers/CreateProjectController.php +++ b/app/Http/Controllers/CreateProjectController.php @@ -37,6 +37,44 @@ class CreateProjectController extends Controller { + public function changeStateProject($projectId) + { + $detailsPrpject = CompanyProject::where('company_projects_id', $projectId)->first(); + $detailsPrpject->order_project = 3; + $detailsPrpject->save(); + + // Redireciona para a rota 'home' após alterar o estado para Execussao + return redirect()->route('home'); + } + + public function deleteProject($projectId) + { + + // Encontra o projeto pelo ID + $deleteProject = CompanyProject::where('company_projects_id', $projectId)->first(); + + if ($deleteProject) { + // Busca todas as ConstructionWorkstation associadas ao projeto + $workstations = ConstructionWorkstation::where('company_projects_id', $projectId)->get(); + + foreach ($workstations as $workstation) { + // Para cada workstation, busca usuários com o mesmo nome + $user = User::where('user_name', $workstation->name_workstations)->first(); + + if ($user) { + $user->delete(); + } + } + + // Deleta o projeto após processar as workstations + $deleteProject->delete(); + + // Redireciona para a rota 'home' após a deleção + return redirect()->route('home'); + } + + } + public function changeAmbitEquipment(Request $request) { @@ -179,13 +217,17 @@ 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(); + // $equipmentId = $request->equipmentID; + // $tasksToReorder = OrderEquipmentTasks::where('equipment_id', $equipmentId) + // ->orderBy('execution_order', 'asc') + // ->get(); $receiveDataEquipment = Equipment::where('equipment_id', $request->equipmentID)->first(); + $receiveEquipmentWorkHistory = EquipmentWorkHistory::where('equipment_id', $request->equipmentID) + ->where('company_projects_id', $receiveDataEquipment->company_projects_id) + ->first(); + // *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 @@ -203,17 +245,17 @@ public function addFurtherTasks(Request $request) $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(); - } - } + // foreach ($tasksToReorder as $task) { + // if ($task->execution_order >= $insertPosition) { + // $task->execution_order += 1; + // $task->save(); + // } + // } // Agora, insira a nova tarefa na posição desejada $newOrderEquipmentTask = new OrderEquipmentTasks; - $newOrderEquipmentTask->equipment_id = $equipmentId; - $newOrderEquipmentTask->execution_order = $insertPosition; + $newOrderEquipmentTask->equipmentWorkHistorys_id = $receiveEquipmentWorkHistory->equipmentWorkHistorys_id; + $newOrderEquipmentTask->execution_order = null; $newOrderEquipmentTask->elemental_tasks_id = null; // Se o selectedFurtherTaskExisting for null quer dizer que e uma TC complementar criada e nova se nao for null quer dizer que vamos criar uma TC existente. @@ -305,18 +347,23 @@ public function receiveEquipmentToAssociateTasks(Request $request) public function receiveUnitsForExcelTemplate($numberProject) { + // Dados do Projecto $receveCompanyProject = CompanyProject::where('company_projects_id', $numberProject)->first(); + // Dados da Instalação $recevePlant = Plant::where('plant_id', $receveCompanyProject->plant_id)->first(); + // Dados das Fabricas $receveUnits = Unit::where('plant_id', $recevePlant->plant_id)->get(); + + // dd($receveUnits); $filePath = public_path('templateExcel/Valves_Template.xlsx'); // Load the spreadsheet $spreadsheet = IOFactory::load($filePath); // Get the second sheet $sheet = $spreadsheet->getSheet(1); // Sheet index starts from 0 - $row = 1; // Row number where you want to start inserting data + $row = 2; // Row number where you want to start inserting data foreach ($receveUnits as $unit) { // Set value for column D - $sheet->setCellValue('D' . $row, $unit->unit_name); + $sheet->setCellValue('A' . $row, $unit->unit_name); $row++; } @@ -490,9 +537,10 @@ public function removeProjectEquipment(Request $request) return back()->with('success', 'Equipamento retirado da obra !'); } - public function EditEquipmentsProjects(Request $request) + public function EditEquipment (Request $request) { - // dd($request); + dd($request); + // Localiza o equipment pelo numberProject $equipment = Equipment::find($request->equipmentId); @@ -707,7 +755,7 @@ public function showStep1($company_projects_id) public function EditprocessStep1(Request $request) { // Validação... - + $project = CompanyProject::where('company_projects_id', $request->projectId)->first(); $project->company_project_description = $request->input('description_project'); @@ -717,7 +765,7 @@ public function EditprocessStep1(Request $request) $project->project_ispt_responsible = $request->input('responsible_project_ispt'); //Verifica se exsite uma nova data, se existe atualiza o projecto com a nova, se nao existir usa a antiga - if($request->date_started <> null){ + if ($request->date_started <> null) { $project->date_started = $request->input('date_started'); } else { $project->date_started = $request->input('date_started_present'); @@ -742,6 +790,9 @@ public function CreateNewEquipmentFromPendingEquipment(Request $request, $id) { $checkPendingEquipment = PendingEquipment::findOrFail($id); + // dd($checkPendingEquipment); + + //Para que serve ?? $counter = 2; $baseTag = $checkPendingEquipment->pending_equipment_tag; $baseDescription = $checkPendingEquipment->pending_equipment_description; @@ -762,14 +813,41 @@ public function CreateNewEquipmentFromPendingEquipment(Request $request, $id) $newEquipment->company_projects_id = $checkPendingEquipment->pending_company_projects_id; $newEquipment->save(); - $receiveEquipmentID = $newEquipment->equipment_id; + $newEquipmentWorkHistory = new EquipmentWorkHistory; + $newEquipmentWorkHistory->equipment_id = $newEquipment->equipment_id; + $newEquipmentWorkHistory->company_projects_id = $newEquipment->company_projects_id; + + // Busca o maior ispt_number para o company_projects_id específico + $lastIsptNumber = EquipmentWorkHistory::where('company_projects_id', $newEquipment->company_projects_id) + ->max('ispt_number'); + + // Se não houver registros, definimos o primeiro número para 1, caso contrário, incrementamos o último número encontrado + $newIsptNumber = $lastIsptNumber ? $lastIsptNumber + 1 : 1; + + // Agora, atribuímos o novo número ISPT ao registro de histórico de equipamento + $newEquipmentWorkHistory->ispt_number = $newIsptNumber; + + $newEquipmentWorkHistory->save(); + $newEquipmentAssociationAmbits = new EquipmentAssociationAmbit; - $newEquipmentAssociationAmbits->equipment_type_id = $newEquipment->equipment_type_id; + $newEquipmentAssociationAmbits->equipmentWorkHistorys_id = $newEquipmentWorkHistory->equipmentWorkHistorys_id; $newEquipmentAssociationAmbits->ambits_id = $request->EquipmentAmbit; - $newEquipmentAssociationAmbits->equipment_id = $receiveEquipmentID; + $newEquipmentAssociationAmbits->equipment_type_id = $checkPendingEquipment->pending_equipment_type_id; $newEquipmentAssociationAmbits->save(); + //Recebe a tabela com as associoacoes entre Âmbitos e tarefas Elementares + $TasksAssociationAmbits = TasksAssociationAmbits::all()->where('ambits_equipment_id', $newEquipmentAssociationAmbits->ambits_id); + + foreach ($TasksAssociationAmbits as $TasksAssociationAmbit) { + $JoinsEquipmentsWithTasks = new OrderEquipmentTasks; + $JoinsEquipmentsWithTasks->equipmentWorkHistorys_id = $newEquipmentWorkHistory->equipmentWorkHistorys_id; + $JoinsEquipmentsWithTasks->execution_order = null; + $JoinsEquipmentsWithTasks->elemental_tasks_id = $TasksAssociationAmbit->elemental_tasks_id; + $JoinsEquipmentsWithTasks->further_tasks_id = null; + $JoinsEquipmentsWithTasks->inspection = 2; + $JoinsEquipmentsWithTasks->save(); + } $checkPendingEquipment->delete(); @@ -780,6 +858,7 @@ public function CreateNewEquipmentFromPendingEquipment(Request $request, $id) public function processStep1(Request $request) { + // dd($request); //NAO DEVE SER CRIAR UMA NOVA EMPRESA NA CRIACAO DA OBRA (era uma boa ideia para facilitar ao Admin ter que criar a empresa para Depois a Obra, mas e necessario pelo facto da autentificao de 2 factores e envio e email , entao devido essa adicoes, nao preciso atualmente fazer sentido criar isto) // Dito isto vamos sempre pensar que o Cliente ja deve estar criado , para ser feita uma Obra para o mesmo. // dd($request); @@ -788,7 +867,7 @@ public function processStep1(Request $request) if ($request->input('installation_id')) { $installationId = $request->input('installation_id'); - + //Para criar uma nova instalacao if ($installationId <> null && $installationId == 'new_install') { @@ -804,6 +883,17 @@ public function processStep1(Request $request) // Use o id da nova instalação. $installationId = $newInstallation->plant_id; + + // Verifica se há nomes de fábricas para criar + $factoryNames = $request->input('factoryNames', []); + + foreach ($factoryNames as $factoryName) { + $newUnit = new Unit; // Supondo que `Unit` é o seu modelo para as fábricas + $newUnit->unit_name = $factoryName; + $newUnit->plant_id = $installationId; // ID da instalação criada anteriormente + $newUnit->save(); // Salva a nova fábrica no banco de dados + } + } } $receiveDetailsPlant = Plant::where('plant_id', $installationId)->first(); @@ -1446,8 +1536,6 @@ 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 diff --git a/app/Http/Controllers/ExecutionProjectController.php b/app/Http/Controllers/ExecutionProjectController.php index 3301eb8b..184fce8c 100755 --- a/app/Http/Controllers/ExecutionProjectController.php +++ b/app/Http/Controllers/ExecutionProjectController.php @@ -68,6 +68,176 @@ public function getDataEquipmentClient(Request $request) } public function getDataEquipment(Request $request) + { + //Variaveis recebidos da Obra em Planeamento (Filtros) + $numberProject = $request->get('numberProject'); + $receiveRespostUnitsSelect = $request->get('checkUnits'); + $receiveRespostPlatsSelect = $request->get('tipo_valvulasList'); + + // Variaveis recebidas da gestao de ativos (Filtros) + $receiveAllClients = $request->get('receiveAllClients'); + $receiveAllPlants = $request->get('receiveAllPlants'); + $receiveAllUnits = $request->get('receiveAllUnits'); + $receiveEquipmentsType = $request->get('receiveEquipmentsType'); + + + + + // Se receber o numero do projecto. + if ($numberProject) { + + // Query para DataTables do Planeamento + $query = Equipment::with('equipmentType', 'unit', 'equipmentWorkHistory') + ->where('company_projects_id', $numberProject) + ->select(['equipment_id', 'equipment_tag', 'unit_id', 'equipment_type_id', 'equipment_description']); + + if ($receiveRespostUnitsSelect && $receiveRespostUnitsSelect !== '#') { + $query->where('unit_id', $receiveRespostUnitsSelect); + } + + if ($receiveRespostPlatsSelect && $receiveRespostPlatsSelect !== '#') { + $query->where('equipment_type_id', $receiveRespostPlatsSelect); + } + + // Executa a consulta e obtém os resultados + $equipment = $query->get(); + + return DataTables::of($equipment) + ->addColumn('ispt_number', function ($equipment) { + // Assumindo que você quer o 'ispt_number' do primeiro 'EquipmentWorkHistory' que corresponde ao 'company_projects_id' + $equipmentWorkHistory = $equipment->equipmentWorkHistory->first(); + return $equipmentWorkHistory ? $equipmentWorkHistory->ispt_number : 'N/A'; + }) + + ->addColumn('unit_name', function ($equipment) { + // Retorna 'unit_name' do relacionamento 'unit' + return $equipment->unit ? $equipment->unit->unit_name : 'N/A'; + }) + ->addColumn('equipment_type_name', function ($equipment) { + // Retorna 'equipment_type_name' do relacionamento 'equipmentType' + return $equipment->equipmentType ? $equipment->equipmentType->equipment_type_name : 'N/A'; + }) + + ->addColumn('ambit', function ($equipment) { + $firstEquipmentWorkHistory = $equipment->equipmentWorkHistory->first(); + return $firstEquipmentWorkHistory->equipmentAssociationAmbit->ambitsEquipment->ambits_description; + }) + + ->addColumn('action', function ($equipment) use ($numberProject) { + $dropdownHtml = '
| ID | Tag | +Descricao | +Cliente | Fabrica | Tipo | Ações | @@ -117,7 +118,7 @@ class="form-control"> var dataTables; $(document).ready(function() { - dataTables = $('#showProjectEquipment1').DataTable({ + dataTables = $('#showAllEquipments').DataTable({ responsive: true, processing: true, serverSide: true, @@ -132,21 +133,26 @@ class="form-control"> d.receiveEquipmentsType = $('#tipo_valvulasList').val(); } }, - columns: [{ - data: 'equipment_id', - name: 'equipment_id' - }, + columns: [ { data: 'equipment_tag', name: 'equipment_tag' }, { - data: 'unit_id', - name: 'unit_id' + data: 'equipment_description', + name: 'equipment_description' }, { - data: 'equipment_type_id', - name: 'equipment_type_id' + data: 'client_name', + name: 'client_name' + }, + { + data: 'unit_name', + name: 'unit_name' + }, + { + data: 'equipment_type_name', + name: 'equipment_type_name' }, { data: 'action', diff --git a/resources/views/Admin/index.blade.php b/resources/views/Admin/index.blade.php index 0222e4ea..3f262924 100755 --- a/resources/views/Admin/index.blade.php +++ b/resources/views/Admin/index.blade.php @@ -36,7 +36,8 @@ {{ $CompanyProject->where('order_project', 1)->count() }} - {{ __('messages.dashboard.planning.text') }} + {{ __('messages.dashboard.planning.text') }} {{ now()->year }}. + @@ -157,7 +158,7 @@ class="btn btn-tool"> {{ $CompanyProject->where('order_project', 4)->count() }} - {{__('messages.dashboard.finished.text')}} + {{__('messages.dashboard.finished.text')}} {{ now()->year }}. diff --git a/resources/views/livewire/articulado/select-elemental-tasks-in-wonkstation.blade.php b/resources/views/livewire/articulado/select-elemental-tasks-in-wonkstation.blade.php index 2bbc7766..18b2193d 100755 --- a/resources/views/livewire/articulado/select-elemental-tasks-in-wonkstation.blade.php +++ b/resources/views/livewire/articulado/select-elemental-tasks-in-wonkstation.blade.php @@ -27,7 +27,7 @@
|---|