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 @@
-{{-- --}}
+