From 1a7d2793b0bc6f39424fafdf54efd389baaeda38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Pocrnji=C4=8D?= Date: Wed, 10 Dec 2025 20:52:31 +0100 Subject: [PATCH 1/4] removed csrf from blade --- resources/views/app.blade.php | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/views/app.blade.php b/resources/views/app.blade.php index 558aac4..334627a 100644 --- a/resources/views/app.blade.php +++ b/resources/views/app.blade.php @@ -3,7 +3,6 @@ - {{ config('app.name', 'Laravel') }} From 53941c054ea588020bb9f409a0d25c4a48474dca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Pocrnji=C4=8D?= Date: Wed, 10 Dec 2025 21:05:22 +0100 Subject: [PATCH 2/4] add maatwebsite/excel to composer.json as required package --- composer.json | 1 + 1 file changed, 1 insertion(+) diff --git a/composer.json b/composer.json index 0bee2c3..9c4b92d 100644 --- a/composer.json +++ b/composer.json @@ -16,6 +16,7 @@ "laravel/sanctum": "^4.0", "laravel/scout": "^10.11", "laravel/tinker": "^2.9", + "maatwebsite/excel": "^3.1", "meilisearch/meilisearch-php": "^1.11", "robertboes/inertia-breadcrumbs": "dev-laravel-12", "tightenco/ziggy": "^2.0" From 79de54eef0d1549802889dcad3efa187b94a95a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Pocrnji=C4=8D?= Date: Wed, 10 Dec 2025 21:15:53 +0100 Subject: [PATCH 3/4] Contract reference text format inside exported excel --- app/Exports/SegmentContractsExport.php | 13 ++++++++++++- tests/Feature/SegmentExportTest.php | 3 ++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/Exports/SegmentContractsExport.php b/app/Exports/SegmentContractsExport.php index 5d10234..a7dc401 100644 --- a/app/Exports/SegmentContractsExport.php +++ b/app/Exports/SegmentContractsExport.php @@ -11,11 +11,14 @@ use Maatwebsite\Excel\Concerns\WithHeadings; use Maatwebsite\Excel\Concerns\WithMapping; use PhpOffice\PhpSpreadsheet\Shared\Date as ExcelDate; +use PhpOffice\PhpSpreadsheet\Style\NumberFormat; class SegmentContractsExport implements FromQuery, ShouldAutoSize, WithColumnFormatting, WithHeadings, WithMapping { public const DATE_EXCEL_FORMAT = 'dd"."mm"."yyyy'; + public const TEXT_EXCEL_FORMAT = NumberFormat::FORMAT_TEXT; + /** * @var array */ @@ -76,8 +79,16 @@ public function columnFormats(): array $formats = []; foreach ($this->columns as $index => $column) { + $letter = $this->columnLetter($index); + + if ($column === 'reference') { + $formats[$letter] = self::TEXT_EXCEL_FORMAT; + + continue; + } + if (in_array($column, ['start_date', 'end_date'], true)) { - $formats[$this->columnLetter($index)] = self::DATE_EXCEL_FORMAT; + $formats[$letter] = self::DATE_EXCEL_FORMAT; } } diff --git a/tests/Feature/SegmentExportTest.php b/tests/Feature/SegmentExportTest.php index 5d6fd49..ba0513c 100644 --- a/tests/Feature/SegmentExportTest.php +++ b/tests/Feature/SegmentExportTest.php @@ -141,7 +141,7 @@ public function test_export_filename_includes_client_name_when_filtered(): void }); } - public function test_column_formats_apply_to_date_columns(): void + public function test_column_formats_apply_to_reference_and_date_columns(): void { $export = new SegmentContractsExport( Contract::query(), @@ -150,6 +150,7 @@ public function test_column_formats_apply_to_date_columns(): void $this->assertSame( [ + 'A' => SegmentContractsExport::TEXT_EXCEL_FORMAT, 'B' => SegmentContractsExport::DATE_EXCEL_FORMAT, 'D' => SegmentContractsExport::DATE_EXCEL_FORMAT, ], From aa40ebed5cd362089e0447b2af1c404558338cae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Pocrnji=C4=8D?= Date: Wed, 10 Dec 2025 21:36:17 +0100 Subject: [PATCH 4/4] Again contract format problem in excel export fixed now! --- app/Exports/SegmentContractsExport.php | 42 +++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/app/Exports/SegmentContractsExport.php b/app/Exports/SegmentContractsExport.php index a7dc401..be0462d 100644 --- a/app/Exports/SegmentContractsExport.php +++ b/app/Exports/SegmentContractsExport.php @@ -8,17 +8,26 @@ use Maatwebsite\Excel\Concerns\FromQuery; use Maatwebsite\Excel\Concerns\ShouldAutoSize; use Maatwebsite\Excel\Concerns\WithColumnFormatting; +use Maatwebsite\Excel\Concerns\WithCustomValueBinder; use Maatwebsite\Excel\Concerns\WithHeadings; use Maatwebsite\Excel\Concerns\WithMapping; +use PhpOffice\PhpSpreadsheet\Cell\Cell; +use PhpOffice\PhpSpreadsheet\Cell\DataType; +use PhpOffice\PhpSpreadsheet\Cell\DefaultValueBinder; use PhpOffice\PhpSpreadsheet\Shared\Date as ExcelDate; use PhpOffice\PhpSpreadsheet\Style\NumberFormat; -class SegmentContractsExport implements FromQuery, ShouldAutoSize, WithColumnFormatting, WithHeadings, WithMapping +class SegmentContractsExport extends DefaultValueBinder implements FromQuery, ShouldAutoSize, WithColumnFormatting, WithCustomValueBinder, WithHeadings, WithMapping { public const DATE_EXCEL_FORMAT = 'dd"."mm"."yyyy'; public const TEXT_EXCEL_FORMAT = NumberFormat::FORMAT_TEXT; + /** + * @var array + */ + private array $columnLetterMap = []; + /** * @var array */ @@ -78,9 +87,7 @@ public function columnFormats(): array { $formats = []; - foreach ($this->columns as $index => $column) { - $letter = $this->columnLetter($index); - + foreach ($this->getColumnLetterMap() as $letter => $column) { if ($column === 'reference') { $formats[$letter] = self::TEXT_EXCEL_FORMAT; @@ -133,4 +140,31 @@ private function columnLetter(int $index): string return $letter; } + + public function bindValue(Cell $cell, $value): bool + { + $columnKey = $this->getColumnLetterMap()[$cell->getColumn()] ?? null; + + if ($columnKey === 'reference') { + $cell->setValueExplicit((string) $value, DataType::TYPE_STRING); + + return true; + } + + return parent::bindValue($cell, $value); + } + + /** + * @return array + */ + private function getColumnLetterMap(): array + { + if ($this->columnLetterMap === []) { + foreach ($this->columns as $index => $column) { + $this->columnLetterMap[$this->columnLetter($index)] = $column; + } + } + + return $this->columnLetterMap; + } }