| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?php
- namespace App\Services;
- use App\Helpers\DateHelper;
- use App\Models\File;
- use App\Models\MafView;
- use Illuminate\Support\Facades\Storage;
- use PhpOffice\PhpSpreadsheet\IOFactory;
- use PhpOffice\PhpSpreadsheet\Style\Border;
- use PhpOffice\PhpSpreadsheet\Style\Color;
- use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
- use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;
- use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
- class ExportMafService
- {
- public function handle(int $userId): string
- {
- $inputFileType = 'Xlsx'; // Xlsx - Xml - Ods - Slk - Gnumeric - Csv
- $inputFileName = './templates/Mafs.xlsx';
- $reader = IOFactory::createReader($inputFileType);
- $spreadsheet = $reader->load($inputFileName);
- $sheet = $spreadsheet->getActiveSheet();
- $sheet->getPageSetup()->setOrientation(PageSetup::ORIENTATION_LANDSCAPE);
- $mafs = MafView::query()->get();
- $i = 2;
- foreach ($mafs as $maf) {
- $sheet->setCellValue('A' . $i, $maf->id);
- $sheet->setCellValue('B' . $i, $maf->year);
- $sheet->setCellValue('C' . $i, $maf->district_name);
- $sheet->setCellValue('D' . $i, $maf->area_name);
- $sheet->setCellValue('E' . $i, $maf->object_address);
- $sheet->setCellValue('F' . $i, $maf->order_number);
- $sheet->setCellValue('G' . $i, $maf->status);
- $sheet->setCellValue('H' . $i, $maf->rfid);
- $sheet->setCellValue('I' . $i, $maf->factory_number);
- $sheet->setCellValue('J' . $i, (is_string($maf->manufacture_date)) ? DateHelper::ISODateToExcelDate($maf->manufacture_date) : '');
- $sheet->setCellValue('K' . $i, $maf->statement_number);
- $sheet->setCellValue('L' . $i, (is_string($maf->statement_date)) ? DateHelper::ISODateToExcelDate($maf->statement_date) : '');
- $sheet->setCellValue('M' . $i, $maf->upd_number);
- $sheet->setCellValue('N' . $i, $maf->nomenclature_number);
- $sheet->setCellValue('O' . $i, $maf->article);
- $sheet->setCellValue('P' . $i, $maf->name_tz);
- $sheet->setCellValue('Q' . $i, $maf->type_tz);
- $sheet->setCellValue('R' . $i, $maf->type);
- $sheet->setCellValue('S' . $i, $maf->manufacturer_name);
- $sheet->setCellValue('T' . $i, $maf->comment);
- $sheet->getStyle('J' . $i)
- ->getNumberFormat()
- ->setFormatCode(NumberFormat::FORMAT_DATE_DDMMYYYY);
- $sheet->getStyle('L' . $i)
- ->getNumberFormat()
- ->setFormatCode(NumberFormat::FORMAT_DATE_DDMMYYYY);
- $i++;
- }
- $sheet->getStyle('A1:T' . $i - 1)->getBorders()->getAllBorders()->setBorderStyle(Border::BORDER_THIN)->setColor(new Color('777777'));
- $fileName = 'export_mafs_' . date('Y-m-d_H-i-s') . '.xlsx';
- $writer = new Xlsx($spreadsheet);
- $fd = 'export';
- Storage::disk('public')->makeDirectory($fd);
- $fp = storage_path('app/public/export/') . $fileName;
- Storage::disk('public')->delete($fd . '/' . $fileName);
- $writer->save($fp);
- // create zip archive
- $fileModel = File::query()->create([
- 'link' => url('/storage/') . '/export/' . $fileName,
- 'path' => $fp,
- 'user_id' => $userId,
- 'original_name' => $fileName,
- 'mime_type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
- ]);
- // return link
- return $fileName;
- }
- }
|