From bb616e62b5cdaa42d3207d1282e0fd663a7627ee Mon Sep 17 00:00:00 2001 From: ygbanzato Date: Mon, 9 Dec 2024 08:21:37 +0000 Subject: [PATCH] update qrcodes --- .../Controllers/CreateProjectController.php | 1 + .../Controllers/PreparedProjectController.php | 77 ++-- .../Controllers/ProjectoDatacontroller.php | 3 - app/Models/Equipment.php | 7 - app/Models/EquipmentAssociationAmbit.php | 4 + app/Services/PdfWrapper.php | 9 + public/templateExcel/Valves_Template.xlsx | Bin 71601 -> 73596 bytes ...etailsEquipmentForQrCodePdf.blade copy.php | 176 +++++++ ...showDetailsEquipmentForQrCodePdf.blade.php | 435 ++++++++++++------ .../database/mysql/create-testing-database.sh | 6 - vendor/laravel/sail/stubs/mysql.stub | 20 - 11 files changed, 530 insertions(+), 208 deletions(-) create mode 100644 resources/views/projectsClients/showDetailsEquipmentForQrCodePdf.blade copy.php delete mode 100755 vendor/laravel/sail/database/mysql/create-testing-database.sh delete mode 100755 vendor/laravel/sail/stubs/mysql.stub diff --git a/app/Http/Controllers/CreateProjectController.php b/app/Http/Controllers/CreateProjectController.php index 560370de..41139a98 100755 --- a/app/Http/Controllers/CreateProjectController.php +++ b/app/Http/Controllers/CreateProjectController.php @@ -1218,6 +1218,7 @@ public function receiveIdEquipment(Equipment $equipment) public function processStep2(Request $request) { + // Valide e processe os dados do formulário $file = $request->file('documento'); diff --git a/app/Http/Controllers/PreparedProjectController.php b/app/Http/Controllers/PreparedProjectController.php index 70e44093..b2f774f0 100755 --- a/app/Http/Controllers/PreparedProjectController.php +++ b/app/Http/Controllers/PreparedProjectController.php @@ -18,6 +18,7 @@ use App\Models\Unit; use App\Models\AmbitsEquipment; use Illuminate\Support\Facades\Auth; +use App\Services\PdfWrapper; // use PDF; @@ -174,23 +175,12 @@ public function showAllEquipmentsInProjectForQrCode($projectId) } - // public function showDetailsEquipmentForQrCode($equipmentId, $projectId) // { // $detailsEquipment = Equipment::find($equipmentId); - - // // Gera o QR Code - // $qrCode = new QrCode($detailsEquipment->equipment_tag); - // $writer = new PngWriter(); - - // // Converte o QR Code para base64 para incorporar na página - // $qrCodeImage = 'data:image/png;base64,' . base64_encode($writer->write($qrCode)->getString()); - // $detailsCompanyProject = CompanyProject::find($projectId); // $detailsPlant = Plant::where('plant_id', $detailsCompanyProject->plant_id)->first(); - - // $detailsCompany= Company::where('company_id', $detailsPlant->company_id)->first(); - + // $detailsCompany = Company::where('company_id', $detailsPlant->company_id)->first(); // $logoPath = public_path('companies_logo/' . ($detailsCompany->company_logo ?: 'logoISPT4.0.jpg')); // if (!file_exists($logoPath)) { @@ -198,61 +188,94 @@ public function showAllEquipmentsInProjectForQrCode($projectId) // } // $associatedEquipments = QrcodesAssociatedEquipment::where('equipment_id', $detailsEquipment->equipment_id)->get(); - // $associatedArray = []; + // $qrCodeImages = []; + // foreach ($associatedEquipments as $associatedEquipment) { // $associatedArray[$associatedEquipment->id] = $associatedEquipment->component_tag; + // $qrCode = new QrCode($associatedEquipment->component_tag); + // $writer = new PngWriter(); + // $qrCodeImages[$associatedEquipment->id] = 'data:image/png;base64,' . base64_encode($writer->write($qrCode)->getString()); // } // $html = view('projectsClients.showDetailsEquipmentForQrCodePdf', [ // 'detailsEquipment' => $detailsEquipment, // 'logoPath' => $logoPath, - // 'qrCodeImage' => $qrCodeImage, + // 'qrCodeImages' => $qrCodeImages, // 'associatedArray' => $associatedArray // ])->render(); - // // Define a orientação da folha como horizontal (Landscape) - // $mpdf = new \Mpdf\Mpdf([ - // 'mode' => 'utf-8', - // 'format' => 'A4' // Define o formato como A4 e orientação como Landscape (horizontal) - // ]); + // $mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8', 'format' => 'A4']); // $mpdf->WriteHTML($html); // $mpdf->Output('nome_do_arquivo.pdf', 'I'); // } + public function showDetailsEquipmentForQrCode($equipmentId, $projectId) { + // Busca os detalhes do equipamento, projeto e empresa $detailsEquipment = Equipment::find($equipmentId); $detailsCompanyProject = CompanyProject::find($projectId); $detailsPlant = Plant::where('plant_id', $detailsCompanyProject->plant_id)->first(); $detailsCompany = Company::where('company_id', $detailsPlant->company_id)->first(); + + // Definir o caminho da logo da empresa $logoPath = public_path('companies_logo/' . ($detailsCompany->company_logo ?: 'logoISPT4.0.jpg')); + + // Verificar se o caminho do logo existe, se não, usa um logo padrão if (!file_exists($logoPath)) { $logoPath = public_path('companies_logo/logoISPT4.0.jpg'); } + + $isptLogoPath = public_path('/img/ispt/ispt.jpg'); + + // Associar equipamentos ao QR Code $associatedEquipments = QrcodesAssociatedEquipment::where('equipment_id', $detailsEquipment->equipment_id)->get(); $associatedArray = []; $qrCodeImages = []; + + // Gerar QR Codes para cada equipamento associado foreach ($associatedEquipments as $associatedEquipment) { - $associatedArray[$associatedEquipment->id] = $associatedEquipment->component_tag; + // Extrair o texto após o '@' + $componentParts = explode('@', $associatedEquipment->component_tag); + $associatedArray[$associatedEquipment->id] = isset($componentParts[1]) ? $componentParts[1] : $associatedEquipment->component_tag; + + // Gerar QR Code $qrCode = new QrCode($associatedEquipment->component_tag); $writer = new PngWriter(); + + // Converter o QR Code para imagem base64 $qrCodeImages[$associatedEquipment->id] = 'data:image/png;base64,' . base64_encode($writer->write($qrCode)->getString()); } - $html = view('projectsClients.showDetailsEquipmentForQrCodePdf', [ + // dd($detailsEquipment->equipmentType->equipment_type_id); + + return view('projectsClients.showDetailsEquipmentForQrCodePdf', [ 'detailsEquipment' => $detailsEquipment, 'logoPath' => $logoPath, 'qrCodeImages' => $qrCodeImages, - 'associatedArray' => $associatedArray - ])->render(); + 'associatedArray' => $associatedArray, + 'isptLogoPath'=> $isptLogoPath + ]); + + + // // Usar PdfWrapper para gerar o PDF + // $pdfWrapper = new PdfWrapper(); + // // Gera e retorna o PDF com os detalhes e QR Codes + // return $pdfWrapper + // ->loadView('projectsClients.showDetailsEquipmentForQrCodePdf', [ + // 'detailsEquipment' => $detailsEquipment, + // 'logoPath' => $logoPath, + // 'qrCodeImages' => $qrCodeImages, + // 'associatedArray' => $associatedArray, + // 'isptLogoPath'=> $isptLogoPath + // ]) + // ->setOrientation('landscape') + // ->stream('nome_do_arquivo.pdf'); // Exibe o PDF diretamente no navegador - $mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8', 'format' => 'A4']); - $mpdf->WriteHTML($html); - $mpdf->Output('nome_do_arquivo.pdf', 'I'); } @@ -306,7 +329,7 @@ public function PreparedProject($ProjectId) ->with('units', $checkUnits) ->with('numberProject', $numberProject) ->with('equipmentsProjects', $equipmentsProjects); - + } public function getAmbits($equipmentType) diff --git a/app/Http/Controllers/ProjectoDatacontroller.php b/app/Http/Controllers/ProjectoDatacontroller.php index c919c34b..da569625 100755 --- a/app/Http/Controllers/ProjectoDatacontroller.php +++ b/app/Http/Controllers/ProjectoDatacontroller.php @@ -21,9 +21,6 @@ use ZipArchive; - - - use Yajra\DataTables\Facades\DataTables; use Carbon\Carbon; diff --git a/app/Models/Equipment.php b/app/Models/Equipment.php index 40d20a40..3013f2f6 100755 --- a/app/Models/Equipment.php +++ b/app/Models/Equipment.php @@ -43,13 +43,6 @@ public function specificAttributes() ->orderBy('general_attributes_equipaments.general_attributes_equipment_description', 'asc'); } - //Trocar para EquipmentWorkHistory - public function equipmentAssociationAmbit() - { - //Antiga hasMany , apenas colocado hasOne para funcionar o datatables - return $this->hasOne(EquipmentAssociationAmbit::class, 'equipment_id', 'equipment_id'); - } - public function orderEquipmentTasks() { return $this->hasMany(OrderEquipmentTasks::class, 'equipment_id', 'equipment_id'); diff --git a/app/Models/EquipmentAssociationAmbit.php b/app/Models/EquipmentAssociationAmbit.php index 771bedbf..28e6d1d0 100755 --- a/app/Models/EquipmentAssociationAmbit.php +++ b/app/Models/EquipmentAssociationAmbit.php @@ -25,4 +25,8 @@ public function Equipment(){ return $this->belongsTo(Equipment::class,'equipment_id', 'equipment_id'); } + public function equipmentWorkHistory() + { + return $this->belongsTo(EquipmentWorkHistory::class, 'equipmentWorkHistorys_id', 'equipmentWorkHistorys_id'); + } } diff --git a/app/Services/PdfWrapper.php b/app/Services/PdfWrapper.php index 21511fce..686f7df2 100644 --- a/app/Services/PdfWrapper.php +++ b/app/Services/PdfWrapper.php @@ -10,12 +10,20 @@ class PdfWrapper { protected Browsershot $pdfGenerator; protected string $html; + protected $orientation = 'portrait'; public function __construct() { $this->pdfGenerator = new Browsershot(); } + // Método para configurar a orientação (paisagem ou retrato) + public function setOrientation($orientation): self + { + $this->orientation = $orientation; + return $this; + } + // Load view and render HTML public function loadView(string $bladeFile, array $data = []): self { @@ -50,6 +58,7 @@ public function generate(): Browsershot return $this->pdfGenerator ->html($this->html) ->format('A4') + ->landscape($this->orientation === 'landscape') // Verifica se deve ser paisagem ->scale(0.7) ->fullPage() ->setOption('printBackground', true) diff --git a/public/templateExcel/Valves_Template.xlsx b/public/templateExcel/Valves_Template.xlsx index 29d05803fee9f9e67e6f544487d43a53c42b7106..9438b91b65f60d0eec99256506a27b0482ad844b 100644 GIT binary patch delta 31339 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 delta 29181 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 diff --git a/resources/views/projectsClients/showDetailsEquipmentForQrCodePdf.blade copy.php b/resources/views/projectsClients/showDetailsEquipmentForQrCodePdf.blade copy.php new file mode 100644 index 00000000..67e564f3 --- /dev/null +++ b/resources/views/projectsClients/showDetailsEquipmentForQrCodePdf.blade copy.php @@ -0,0 +1,176 @@ + + + + + + + + Document + + + + + + + + @php $contador = 0; @endphp + @foreach ($associatedArray as $id => $componentTag) + + @if ($contador % 4 == 0 && $contador != 0) +
+ @endif + + @php + $parts = explode('@', $componentTag); + $tagName = $parts[0]; // a parte antes do '@' + $tagType = $parts[1]; // a parte depois do '@' + @endphp + +
+
+
+
+
+
+ ISPT 4.0 +
+
+ +
+
+
+ QR Code +
Tag : {{ $tagName }}
+
{{$tagType}}
+ +
{{ $detailsEquipment->equipmentType->equipment_type_name }}
+
{{ $detailsEquipment->unit->unit_name }}
+ +
+ Logo Esquerdo +
+ +
+ Logo da Empresa +
+
+
+ @php $contador++; @endphp + @endforeach + + + diff --git a/resources/views/projectsClients/showDetailsEquipmentForQrCodePdf.blade.php b/resources/views/projectsClients/showDetailsEquipmentForQrCodePdf.blade.php index 67e564f3..6a542a19 100644 --- a/resources/views/projectsClients/showDetailsEquipmentForQrCodePdf.blade.php +++ b/resources/views/projectsClients/showDetailsEquipmentForQrCodePdf.blade.php @@ -4,113 +4,27 @@ - - Document + Card Example + + .card-header { + flex-basis: 40%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + padding: 0; + /* Remove qualquer padding adicional */ + } + + .title-card { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + height: 100%; + } + + + .card-footer { + flex-basis: 60%; + display: flex; + flex-direction: column; + /* Stack rows vertically */ + justify-content: space-between; + /* Distribute space evenly */ + text-align: center; + } + + .card-footer .row { + width: 100%; + height: 100%; + margin-left: 0.4px; + /* flex-grow: 1; */ + /* Make each row grow equally to fill the space */ + display: flex; + justify-content: center; + align-items: center; + border: 1px solid gray; + /* Optional: add some separation between rows */ + } + + .qr-code { + /* margin-top: 5px; */ + width: 15mm; + height: 15mm; + } + + .tag-name-qrcode { + font-size: 10px; + margin: 0; + padding: 0; + } + + .img-company { + margin-top: 7px; + width: 12mm; + height: 12mm; + } + + .blue { + background-color: #09255C; + color: white; + /* border-radius: 5px; */ + + display: flex; + justify-content: center; + align-items: center; + box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); + font-weight: bold; + } + + .gray { + background-color: #EAF3F6; + color: black; + /* border-radius: 5px; */ + + display: flex; + justify-content: center; + align-items: center; + box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); + font-weight: bold; + } + + .dark-blue { + background-color: #00B0EA; + color: white; + /* border-radius: 5px; */ + + display: flex; + justify-content: center; + align-items: center; + box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); + font-weight: bold; + } + - - @php $contador = 0; @endphp - @foreach ($associatedArray as $id => $componentTag) - - @if ($contador % 4 == 0 && $contador != 0) -
- @endif - - @php - $parts = explode('@', $componentTag); - $tagName = $parts[0]; // a parte antes do '@' - $tagType = $parts[1]; // a parte depois do '@' - @endphp - -
-
-
-
+ @foreach ($associatedArray as $key => $value) + + @if ($detailsEquipment->equipmentType->equipment_type_id == 3) +
+
+
+
+
+ Logo da Empresa +
+
+ Logo da Empresa +
+
+
+
Paragem ###
+
N.Ispt ###
+
Tag ###
+
+
+
+ QR Code +
+
+

{{ $associatedArray[$key] }}

+
+
+
-
- ISPT 4.0 -
-
- + + +
-
- QR Code -
Tag : {{ $tagName }}
-
{{$tagType}}
+ -
{{ $detailsEquipment->equipmentType->equipment_type_name }}
-
{{ $detailsEquipment->unit->unit_name }}
- -
- Logo Esquerdo + + @elseif($detailsEquipment->equipmentType->equipment_type_id == 1) +
+
+
+
+
+ Logo da Empresa +
+
+ Logo da Empresa +
+
+
+
Paragem ###
+
N.Ispt ###
+
Tag ###
+
+
+
+ QR Code +
+
+

{{ $associatedArray[$key] }}

+
+
+
- -
- Logo da Empresa + + +
-
- @php $contador++; @endphp - @endforeach + + + + + @elseif($detailsEquipment->equipmentType->equipment_type_id == 2) +
+
+
+
+
+ Logo da Empresa +
+
+ Logo da Empresa +
+
+
+
Paragem ###
+
N.Ispt ###
+
Tag ###
+
+
+
+ QR Code +
+
+

{{ $associatedArray[$key] }}

+
+
+
+
+ + + +
+ @endif + @endforeach + diff --git a/vendor/laravel/sail/database/mysql/create-testing-database.sh b/vendor/laravel/sail/database/mysql/create-testing-database.sh deleted file mode 100755 index aeb1826f..00000000 --- a/vendor/laravel/sail/database/mysql/create-testing-database.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -mysql --user=root --password="$MYSQL_ROOT_PASSWORD" <<-EOSQL - CREATE DATABASE IF NOT EXISTS testing; - GRANT ALL PRIVILEGES ON \`testing%\`.* TO '$MYSQL_USER'@'%'; -EOSQL diff --git a/vendor/laravel/sail/stubs/mysql.stub b/vendor/laravel/sail/stubs/mysql.stub deleted file mode 100755 index c4d66f97..00000000 --- a/vendor/laravel/sail/stubs/mysql.stub +++ /dev/null @@ -1,20 +0,0 @@ -mysql: - image: 'mysql/mysql-server:8.0' - ports: - - '${FORWARD_DB_PORT:-3306}:3306' - environment: - MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}' - MYSQL_ROOT_HOST: "%" - MYSQL_DATABASE: '${DB_DATABASE}' - MYSQL_USER: '${DB_USERNAME}' - MYSQL_PASSWORD: '${DB_PASSWORD}' - MYSQL_ALLOW_EMPTY_PASSWORD: 1 - volumes: - - 'sail-mysql:/var/lib/mysql' - - './vendor/laravel/sail/database/mysql/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh' - networks: - - sail - healthcheck: - test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"] - retries: 3 - timeout: 5s