diff --git a/app/Http/Controllers/CreateProjectController.php b/app/Http/Controllers/CreateProjectController.php index 45274150..a703a01f 100755 --- a/app/Http/Controllers/CreateProjectController.php +++ b/app/Http/Controllers/CreateProjectController.php @@ -6,6 +6,7 @@ use App\Models\AssociationCompanyUser; use App\Models\Company; use App\Models\EquipmentWorkHistory; +use App\Models\HistoryOfEquipmentAmbitsInTheProject; use App\Models\ProjectExcelLog; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -83,7 +84,6 @@ public function deleteProject($projectId) public function changeAmbitEquipment(Request $request) { - $receiveAmbitEquipmentId = $request->receveAmbit; $equipmentId = $request->equipmentID; @@ -93,11 +93,32 @@ public function changeAmbitEquipment(Request $request) ->where('company_projects_id', $receiveEquipment->company_projects_id) ->first(); - $receiveDataEquipmentAssociationAmbit = EquipmentAssociationAmbit::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistorys->equipmentWorkHistorys_id)->first(); + $receiveDataEquipmentAssociationAmbit = EquipmentAssociationAmbit::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistorys->equipmentWorkHistorys_id) + ->first(); + // Se o ambito atual for igual ao antigo ambito if ($receiveDataEquipmentAssociationAmbit->ambits_id == $receiveAmbitEquipmentId) { return back()->with('danger', 'Âmbito selecionado é igual ao anterior!'); } else { + // Verificar se existe um histórico de âmbito sem timestamp (time_change_ambit) + $existingHistory = HistoryOfEquipmentAmbitsInTheProject::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistorys->equipmentWorkHistorys_id) + ->where('ambits_id', $receiveDataEquipmentAssociationAmbit->ambits_id) + ->whereNull('time_change_ambit') + ->first(); + + // Se existir e o time_change_ambit for nulo, atualiza com o timestamp atual + if ($existingHistory) { + $existingHistory->time_change_ambit = now(); + $existingHistory->save(); + } + + // Criar um novo registro em HistoryOfEquipmentAmbitsInTheProject para o novo âmbito + $newHistoryOfEquipmentAmbits = new HistoryOfEquipmentAmbitsInTheProject; + $newHistoryOfEquipmentAmbits->equipmentWorkHistorys_id = $receiveEquipmentWorkHistorys->equipmentWorkHistorys_id; + $newHistoryOfEquipmentAmbits->ambits_id = $receiveAmbitEquipmentId; + $newHistoryOfEquipmentAmbits->time_change_ambit = null; // Novo registro sem timestamp + $newHistoryOfEquipmentAmbits->save(); + // Deleta as tarefas associadas ao equipamento no âmbito atual OrderEquipmentTasks::where('equipmentWorkHistorys_id', $receiveEquipmentWorkHistorys->equipmentWorkHistorys_id)->delete(); @@ -119,9 +140,9 @@ public function changeAmbitEquipment(Request $request) return back()->with('success', 'Equipamento: ' . $receiveEquipment->equipment_id . ' trocado de âmbito com sucesso!'); } - } + public function deleteEquipmentInProject(Request $request) { $receiveEquipment = Equipment::where('equipment_id', $request->equipmentId)->first(); @@ -1228,7 +1249,6 @@ public function processStep2(Request $request) // $ignoredLines = []; // $duplicateLines = []; - // Separa o nome do arquivo para obter o tipo de documento e a data-hora $parts = explode('_', $originalFileName); $documentType = $parts[2]; // 98 @@ -1279,7 +1299,7 @@ function normalize($value) // vai guardar todos os campos de possiveis novos equipamentos, cada um em um array para multiplos inserts, na base de dados $datas = array_filter($joinArrays, function ($chave) { - return !empty ($chave); + return !empty($chave); }, ARRAY_FILTER_USE_KEY); // Verifica se a coluna 'fábrica' (primeiro campo) está vazia @@ -1445,6 +1465,13 @@ function normalize($value) $AssociationEquipmentAmbit->save(); + + // Criar um registro em HistoryOfEquipmentAmbitsInTheProject + $newHistoryOfEquipmentAmbits = new HistoryOfEquipmentAmbitsInTheProject; + $newHistoryOfEquipmentAmbits->equipmentWorkHistorys_id = $newEquipmentWorkHistory->equipmentWorkHistorys_id; + $newHistoryOfEquipmentAmbits->ambits_id = $ambit->ambits_id; + $newHistoryOfEquipmentAmbits->save(); + //Recebe a tabela com as associoacoes entre Âmbitos e tarefas Elementares $TasksAssociationAmbits = TasksAssociationAmbits::all()->where('ambits_equipment_id', $AssociationEquipmentAmbit->ambits_id); $execution_order = 1; @@ -1458,6 +1485,8 @@ function normalize($value) } } + + continue; // Pula para a próxima iteração //----- Para equipamento novos, nao pendentes. --------- @@ -1476,7 +1505,7 @@ function normalize($value) $newEquipament->company_projects_id = $company_projects_id; $newEquipament->save(); - + $countEquipment++; @@ -1525,6 +1554,12 @@ function normalize($value) $AssociationEquipmentAmbit->save(); + // Criar um registro em HistoryOfEquipmentAmbitsInTheProject + $newHistoryOfEquipmentAmbits = new HistoryOfEquipmentAmbitsInTheProject; + $newHistoryOfEquipmentAmbits->equipmentWorkHistorys_id = $newEquipmentWorkHistory->equipmentWorkHistorys_id; + $newHistoryOfEquipmentAmbits->ambits_id = $ambit->ambits_id; + $newHistoryOfEquipmentAmbits->save(); + //Recebe a tabela com as associoacoes entre Âmbitos e tarefas Elementares $TasksAssociationAmbits = TasksAssociationAmbits::all()->where('ambits_equipment_id', $AssociationEquipmentAmbit->ambits_id); $execution_order = 1; diff --git a/app/Http/Controllers/ExecutionProjectController.php b/app/Http/Controllers/ExecutionProjectController.php index 4bc19f2d..e27f0a64 100755 --- a/app/Http/Controllers/ExecutionProjectController.php +++ b/app/Http/Controllers/ExecutionProjectController.php @@ -101,12 +101,13 @@ public function getDataEquipment(Request $request) 'equipmentType', 'unit', 'equipmentWorkHistory' => function ($query) { - $query->where('extra_equipment', 1); + //Assim a tabela recebe os equipamentos normais e extras e evita devolver equipamentos ja finalizados + $query->whereIn('extra_equipment', [0, 1]); } ]) ->where('company_projects_id', $numberProject) ->whereHas('equipmentWorkHistory', function ($query) { - $query->where('extra_equipment', 1); + $query->whereIn('extra_equipment', [0, 1]); }) ->select(['equipment_id', 'equipment_tag', 'unit_id', 'equipment_type_id', 'equipment_description']); diff --git a/app/Http/Controllers/WorkstationsJobsController.php b/app/Http/Controllers/WorkstationsJobsController.php index f63e673b..98a4eb09 100755 --- a/app/Http/Controllers/WorkstationsJobsController.php +++ b/app/Http/Controllers/WorkstationsJobsController.php @@ -8,6 +8,7 @@ use App\Models\Equipment; use App\Models\EquipmentComment; use App\Models\EquipmentWorkHistory; +use App\Models\HistoryOfEquipmentAmbitsInTheProject; use App\Models\OrderEquipmentTasks; use App\Models\workstationsTaskAnswers; use App\Models\ReceiveImagesControlEquipmentWorkstation; // Ajuste o namespace conforme necessário @@ -80,7 +81,7 @@ public function receiveQuestionsEquipment($equipmentID) } public function receiveAnswersEquipment(Request $request, $control_equipment_workstation_id) { - + // dd($control_equipment_workstation_id); //No request recebemos ID(NUmero da tarela elementar) , esta variavel vai receber este ID apos selerar o id da string // $elementalTaskID = 0; // Deve receber as perguntas e respostas para a tarefa selecionada @@ -147,6 +148,13 @@ public function receiveAnswersEquipment(Request $request, $control_equipment_wor $receiveDataControlWs->elemental_tasks_id = $elementalTaskID; $receiveDataControlWs->departure_date = now(); + // Vai sempre procurar o primeira ocorrencia que tem o campo : time_change_ambit como null, pois outros dados para este mesmo equipamento seriam considerados Ambitos antigos e ja alterados de acordo com o valor de seu timestamp + $receiveHistoryEquipmentAmbits = HistoryOfEquipmentAmbitsInTheProject::where('equipmentWorkHistorys_id', $receiveDataControlWs->equipmentWorkHistorys_id) + ->whereNull('time_change_ambit') + ->first(); + + $receiveDataControlWs->history_of_equipment_ambits_id = $receiveHistoryEquipmentAmbits->history_of_equipment_ambits_id; + $requestData = $request->all(); // Iterar sobre o array de parâmetros do request diff --git a/app/Http/Controllers/userController.php b/app/Http/Controllers/userController.php index 3faa8d2a..ae8f4c12 100755 --- a/app/Http/Controllers/userController.php +++ b/app/Http/Controllers/userController.php @@ -167,19 +167,20 @@ public function edit($id) public function update(Request $request, User $user) { + // dd($request); //Por enquanto foi retirado o 'user_type' pois ainda não é necessario alterar o tipo de utilizador na edição. - $request->validate([ - 'name' => 'required', - 'email' => 'required|email|unique:users,email,' . $user->user_id . ',user_id', - 'password' => 'nullable|min:8|confirmed', - // 'user_type' => 'required', - 'user_phone' => 'required', - 'user_nif' => 'required', - ]); + // $request->validate([ + // 'name' => 'required', + // 'email' => 'required|email|unique:users,email,' . $user->user_id . ',user_id', + // 'password' => 'nullable|min:8|confirmed', + // // 'user_type' => 'required', + // 'user_phone' => 'required', + // 'user_nif' => 'required', + // ]); $user->update([ - 'name' => $request->get('name'), + 'user_name' => $request->get('user_name'), 'email' => $request->get('email'), 'password' => $request->filled('password') ? Hash::make($request->get('password')) : $user->password, // 'user_type' => $request->get('user_type'), diff --git a/app/Models/AmbitsEquipment.php b/app/Models/AmbitsEquipment.php index 419c11be..07e70047 100755 --- a/app/Models/AmbitsEquipment.php +++ b/app/Models/AmbitsEquipment.php @@ -22,4 +22,9 @@ class AmbitsEquipment extends Model public function equipmentAssociationAmbit(){ return $this->hasMany(EquipmentAssociationAmbit::class, 'ambits_id', 'ambits_id'); } + + public function HistoryOfEquipmentAmbitsInTheProject (){ + return $this->hasMany(HistoryOfEquipmentAmbitsInTheProject::class, 'ambits_id', 'ambits_id'); + } + } diff --git a/app/Models/EquipmentWorkHistory.php b/app/Models/EquipmentWorkHistory.php index 3829d625..0b419078 100644 --- a/app/Models/EquipmentWorkHistory.php +++ b/app/Models/EquipmentWorkHistory.php @@ -37,4 +37,8 @@ public function equipmentAssociationAmbit() return $this->hasOne(EquipmentAssociationAmbit::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id'); } + public function HistoryOfEquipmentAmbitsInTheProject (){ + return $this->hasMany(HistoryOfEquipmentAmbitsInTheProject::class, 'ambits_id', 'ambits_id'); + } + } diff --git a/app/Models/HistoryOfEquipmentAmbitsInTheProject.php b/app/Models/HistoryOfEquipmentAmbitsInTheProject.php new file mode 100644 index 00000000..b81121d5 --- /dev/null +++ b/app/Models/HistoryOfEquipmentAmbitsInTheProject.php @@ -0,0 +1,31 @@ +belongsTo(AmbitsEquipment::class, 'ambits_id', 'ambits_id'); + } + + public function EquipmentWorkHistory (){ + return $this->belongsTo(EquipmentWorkHistory::class, 'ambits_id', 'ambits_id'); + } +} diff --git a/resources/views/Admin/CrudUsers/editUsers.blade.php b/resources/views/Admin/CrudUsers/editUsers.blade.php index 0299e497..2f7503c4 100755 --- a/resources/views/Admin/CrudUsers/editUsers.blade.php +++ b/resources/views/Admin/CrudUsers/editUsers.blade.php @@ -7,7 +7,7 @@
@if ($user->type_users == 3)

Editar Empresa

- @else + @else

Editar Utilizador

@endif
@@ -15,14 +15,16 @@ @@ -49,7 +51,7 @@
-
@@ -57,24 +59,51 @@
+ value="{{ $user->email }}" readonly style="pointer-events: none;">
+ {{--
+
+ + +
+
+
    +
  • Pelo menos 8 caracteres
  • +
  • Uma letra maiúscula
  • +
  • Uma letra minúscula
  • +
  • Um número
  • +
  • Um caractere especial (@$!%*?&)
  • +
+
+
--}}
+
+ +
+
+
@@ -82,9 +111,12 @@
- + + + data-type="nif" value="{{ $user->user_nif }}" required> +
+
@@ -114,7 +146,7 @@
--}} - + Retornar @@ -125,4 +157,602 @@
{{-- /.container-fluid" --}} + + + + + {{-- --}} + + {{-- --}} + + @endsection diff --git a/resources/views/email/FormAdmin.blade.php b/resources/views/email/FormAdmin.blade.php index 128e59d0..534f66c2 100755 --- a/resources/views/email/FormAdmin.blade.php +++ b/resources/views/email/FormAdmin.blade.php @@ -252,7 +252,7 @@ $(document).ready(function() { // Esta funcao foi necessaria, pois devido ao css e script para funcionar a exibicao das bandeiras, sem esta funcao, sempre que click no input, a selecao de bandeiras some, ate click fora do input - //Nao mexer se voce quiser, ter um select de paises bonito dentro do input XD + //Nao mexer !!! se voce quiser, ter um select de paises bonito dentro do input XD function ensureFlagContainerVisibility() { const flagContainer = document.querySelector('.flag-container'); const countryList = document.querySelector('.country-list'); @@ -312,7 +312,6 @@ function validateField(type, value) { validationState['pending_' + type] = false; updateSubmitButtonState(); } - // console.log(response); updateUI(type, response['result_' + type]); @@ -395,6 +394,7 @@ function updateSubmitButtonState() { 'red'); } else { // Se tiver exatamente 9 dígitos, prossegue com a validação no sistema + console.log('O type e : '+ type); validateField(type, nif); }