From 2ddc55eeedd931766e2c3fbb292ce52cb4e4e226 Mon Sep 17 00:00:00 2001 From: ygbanzato Date: Mon, 25 Sep 2023 15:48:43 +0100 Subject: [PATCH] updating the visualization and creation of qrcodes by type of equipment, creation of a qrcode visualization modal with livewire component --- .../Controllers/CreateProjectController.php | 46 +++- .../ManagementDashboard/WorkManagement.php | 68 ++++++ .../ShowQrcodeAndDetallsEquipment.php | 20 +- app/Models/Equipment.php | 3 + app/Models/QrcodesAssociatedEquipment.php | 26 +++ public/assets/dist/css/adminlte.css | 78 ++++++- .../work-management.blade.php | 39 ++++ ...how-qrcode-and-detalls-equipment.blade.php | 183 +++++++++++----- .../projectsClients/articulated_2.blade.php | 21 ++ .../components/layouts/app.blade.php | 0 .../projectsClients/preparedProject.blade.php | 200 +++++++++--------- resources/views/test.blade.php | 3 + routes/web.php | 126 ++++++----- 13 files changed, 588 insertions(+), 225 deletions(-) create mode 100644 app/Livewire/ManagementDashboard/WorkManagement.php create mode 100644 app/Models/QrcodesAssociatedEquipment.php create mode 100644 resources/views/livewire/management-dashboard/work-management.blade.php rename resources/views/{ => projectsClients}/components/layouts/app.blade.php (100%) diff --git a/app/Http/Controllers/CreateProjectController.php b/app/Http/Controllers/CreateProjectController.php index 0fc3f53b..e99666c8 100755 --- a/app/Http/Controllers/CreateProjectController.php +++ b/app/Http/Controllers/CreateProjectController.php @@ -27,6 +27,8 @@ use App\Models\FurtherTasks; use App\Models\WorkstationsAssociationTasks; use App\Models\TasksAssociationAmbits; +use App\Models\QrcodesAssociatedEquipment; + use LengthException; // use DataTables; @@ -189,7 +191,6 @@ function () use ($writer) { return $response; } - public function finishCreatingProject($numberProject) { // recebe atraves de sessao toda a vez quem entra no componente 'SelectElementalTasksInWonkstation' para selecionar as tarefas de cada Workstation @@ -1000,11 +1001,50 @@ public function processStep2(Request $request) public function showStep3($company_projects_id) { - //Sempre que entrar na view ja verifica se existe 'Workstations' preparadas para esta obra. - $listWorkstations = ConstructionWorkstation::where('company_projects_id', $company_projects_id)->get(); $equipments = Equipment::where('company_projects_id', $company_projects_id) ->get(); + foreach ($equipments as $equipment) { + $tags = []; + if ($equipment->equipment_type_id == 3) { + $tags = ['@Corpo', '@Flange', '@Obturador']; + } elseif ($equipment->equipment_type_id == 1) { + $tags = ['@Corpo', '@Flange']; + } + + foreach ($tags as $tag) { + $associatedEquipment = QrcodesAssociatedEquipment::where('equipment_id', $equipment->equipment_id) + ->where('component_tag', 'LIKE', '%' . $tag) + ->first(); + + if ($associatedEquipment) { + // Atualizar a coluna component_tag para ser igual à equipment_tag, mantendo a parte após o "@" + $newComponentTag = $equipment->equipment_tag . $tag; + $associatedEquipment->component_tag = $newComponentTag; + $associatedEquipment->save(); + } else { + // Criar uma nova entrada + QrcodesAssociatedEquipment::create([ + 'equipment_id' => $equipment->equipment_id, + 'component_tag' => $equipment->equipment_tag . $tag + ]); + } + } + } + + // 3. Verificar se há algum equipment_id em QrcodesAssociatedEquipment que não existe mais em Equipment e, se sim, excluí-lo. + $allEquipmentIds = Equipment::where('company_projects_id', $company_projects_id)->pluck('equipment_id')->toArray(); + $orphanedEntries = QrcodesAssociatedEquipment::whereNotIn('equipment_id', $allEquipmentIds)->get(); + + foreach ($orphanedEntries as $orphanedEntry) { + $orphanedEntry->delete(); + } + + + + //Sempre que entrar na view ja verifica se existe 'Workstations' preparadas para esta obra. + $listWorkstations = ConstructionWorkstation::where('company_projects_id', $company_projects_id)->get(); + $futherTasks = FurtherTasks::where('company_projects_id', $company_projects_id) ->get(); diff --git a/app/Livewire/ManagementDashboard/WorkManagement.php b/app/Livewire/ManagementDashboard/WorkManagement.php new file mode 100644 index 00000000..97b34b35 --- /dev/null +++ b/app/Livewire/ManagementDashboard/WorkManagement.php @@ -0,0 +1,68 @@ +refreshData(); + } + + public function refreshData() + + { + $this->totalEquipments = Equipment::count(); + + // Inicializar type3Count como 0 + $this->type3Count = 0; + + // Obter todos os equipamentos + $equipments = Equipment::all(); + + foreach ($equipments as $equipment) { + + // conta quantos dados existem na model OrderEquipmentTasks, referente ao equipamento indicado + $tasksCount = OrderEquipmentTasks::where('equipment_id', $equipment->equipment_id)->count(); + // Verifica quantos dados tem ao mesmo equipamento + $controlCount = ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id)->count(); + + if ($controlCount >= $tasksCount) { + $isValid = ControlEquipmentWorkstation::where('equipment_id', $equipment->equipment_id) + ->whereNotNull('entry_date') + ->whereNotNull('departure_date') + ->count() >= $tasksCount; + + if ($isValid) { + $this->type3Count++; + $type3EquipmentIds[] = $equipment->equipment_id; + } + } + } + + // Atualizar type2Count + $this->type2Count = Equipment::whereIn('equipment_id', ControlEquipmentWorkstation::select('equipment_id')) + ->whereNotIn('equipment_id', $type3EquipmentIds) + ->count(); + + // Contar equipamentos que NÃO estão em ControlEquipmentWorkstation + $this->type1Count = Equipment::whereNotIn('equipment_id', ControlEquipmentWorkstation::select('equipment_id'))->count(); + + } + public function render() + { + return view('livewire.management-dashboard.work-management'); + } +} diff --git a/app/Livewire/Preparadas/ShowQrcodeAndDetallsEquipment.php b/app/Livewire/Preparadas/ShowQrcodeAndDetallsEquipment.php index 710ed231..3f3fb748 100644 --- a/app/Livewire/Preparadas/ShowQrcodeAndDetallsEquipment.php +++ b/app/Livewire/Preparadas/ShowQrcodeAndDetallsEquipment.php @@ -5,19 +5,33 @@ use Livewire\Component; use App\Models\Equipment; +use App\Models\QrcodesAssociatedEquipment; class ShowQrcodeAndDetallsEquipment extends Component { public $equipment; - public function mount($equipment){ + public function mount($equipment) + { $this->equipment = $equipment; } public function render() { + // $this->equipment = Equipment::find($this->equipment->id); - return view('livewire.preparadas.show-qrcode-and-detalls-equipment'); + // return view('livewire.preparadas.show-qrcode-and-detalls-equipment'); + + // $associatedEquipments = QrcodesAssociatedEquipment::where('equipment_id', $this->equipment->equipment_id)->get(); + // return view('livewire.preparadas.show-qrcode-and-detalls-equipment', ['associatedEquipments' => $associatedEquipments]); + + $associatedEquipments = QrcodesAssociatedEquipment::where('equipment_id', $this->equipment->equipment_id)->get(); + + $associatedArray = []; + foreach ($associatedEquipments as $associatedEquipment) { + $associatedArray[$associatedEquipment->id] = $associatedEquipment->component_tag; + } + + return view('livewire.preparadas.show-qrcode-and-detalls-equipment', ['associatedArray' => $associatedArray,'associatedEquipments' => $associatedEquipments]); } - } diff --git a/app/Models/Equipment.php b/app/Models/Equipment.php index fc7552fa..2c3befd4 100755 --- a/app/Models/Equipment.php +++ b/app/Models/Equipment.php @@ -63,5 +63,8 @@ public function hasInspectionYes() return $this->orderEquipmentTasks()->where('inspection', 'Sim')->exists(); } + public function QrcodesAssociatedEquipment(){ + return $this->hasMany(QrcodesAssociatedEquipment::class,'equipment_id','equipment_id'); + } } diff --git a/app/Models/QrcodesAssociatedEquipment.php b/app/Models/QrcodesAssociatedEquipment.php new file mode 100644 index 00000000..f7cbd000 --- /dev/null +++ b/app/Models/QrcodesAssociatedEquipment.php @@ -0,0 +1,26 @@ +belongsTo(Equipment::class, 'equipment_id', 'equipment_id'); + } + +} diff --git a/public/assets/dist/css/adminlte.css b/public/assets/dist/css/adminlte.css index 3cf80e7c..d3f3b455 100644 --- a/public/assets/dist/css/adminlte.css +++ b/public/assets/dist/css/adminlte.css @@ -83,10 +83,13 @@ @font-face { /* Estilo para dimencionar o cartao do qrcode */ .modal-content-center { display: flex; + flex-direction: row; + /* Isso garante que os cartões sejam exibidos em uma linha horizontal */ + flex-wrap: wrap; + /* Isso permite que os cartões se envolvam para a próxima linha se não houver espaço suficiente */ justify-content: center; align-items: center; height: 100%; - /* Isso garante que o container ocupe toda a altura da modal */ } .card-to-print { @@ -97,6 +100,8 @@ .card-to-print { border: 1px solid #09255C; box-sizing: border-box; transform-origin: top left; + margin: 10px; + /* Isso adiciona uma margem ao redor de cada cartão */ } .custom-row { @@ -114,7 +119,6 @@ .custom-row { /* Remove a margem negativa padrão da classe row do Bootstrap */ } - .top { display: flex; justify-content: center; @@ -154,15 +158,69 @@ .custom-rowAll { /* Estilos para impressão */ @media print { - body * { - visibility: hidden; - } /* body, html { margin: 0; padding: 0; } */ + body * { + visibility: hidden; + } + + /* .modal, + .modal * { + visibility: visible !important; + } + + .modal-content-center, + .modal-content-center * { + visibility: visible !important; + } + + .card-to-print, + .card-to-print * { + visibility: visible !important; + } + + .modal-content-center { + position: absolute; + top: 0; + left: 0; + width: auto; + height: auto; + } + + .card-to-print { + display: inline-block; + margin-right: 2mm; + margin-bottom: 3mm; + } */ + + /* Mostra apenas o conteúdo da div .modal-content-center dentro de modais que têm um ID que começa com 'yourModalId-' */ + [id^="yourModalId-"] .modal-content-center, + [id^="yourModalId-"] .modal-content-center .card-to-print, + [id^="yourModalId-"] .modal-content-center .card-to-print * { + visibility: visible !important; + } + + [id^="yourModalId-"] .modal-content-center { + position: absolute; + top: 0; + left: 0; + width: auto; + height: auto; + } + + [id^="yourModalId-"] .modal-content-center .card-to-print { + display: inline-block; + margin-right: 2mm; + margin-bottom: 3mm; + } + + + + .print-container, .print-container * { visibility: visible !important; @@ -180,7 +238,13 @@ @media print { page-break-inside: avoid; } - .card-to-print, + /* .card-to-print { + display: inline-block; + margin-right: 2mm; + margin-bottom: 3mm; + } */ + + /* .card-to-print, .card-to-print * { visibility: visible; } @@ -189,7 +253,7 @@ @media print { position: absolute; left: 0; top: 0; - } + } */ } diff --git a/resources/views/livewire/management-dashboard/work-management.blade.php b/resources/views/livewire/management-dashboard/work-management.blade.php new file mode 100644 index 00000000..7667ab49 --- /dev/null +++ b/resources/views/livewire/management-dashboard/work-management.blade.php @@ -0,0 +1,39 @@ + + + +
+

Total de Equipamentos: {{ $totalEquipments }}

+ +
+ + diff --git a/resources/views/livewire/preparadas/show-qrcode-and-detalls-equipment.blade.php b/resources/views/livewire/preparadas/show-qrcode-and-detalls-equipment.blade.php index 15e76e98..15edaf5a 100644 --- a/resources/views/livewire/preparadas/show-qrcode-and-detalls-equipment.blade.php +++ b/resources/views/livewire/preparadas/show-qrcode-and-detalls-equipment.blade.php @@ -1,4 +1,4 @@ -{{-- --}} +
-