GenerateDocumentsService.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace App\Services;
  3. use App\Models\Order;
  4. use Exception;
  5. use Illuminate\Support\Facades\Storage;
  6. class GenerateDocumentsService
  7. {
  8. /**
  9. * @param Order $order
  10. * @param int $userId
  11. * @return string
  12. * @throws Exception
  13. */
  14. public function generateInstallationPack(Order $order, int $userId): string
  15. {
  16. $products_sku = $order->products_sku;
  17. $articles = [];
  18. Storage::disk('public')->makeDirectory('orders/' . $order->id . '/installation/Схемы сборки');
  19. foreach ($products_sku as $sku) {
  20. if(!in_array($sku->product->article, $articles)) {
  21. $articles[] = $sku->product->article;
  22. // find and copy scheme files to installation directory
  23. // ...
  24. }
  25. // generate xlsx order file
  26. // ...
  27. // create zip archive
  28. $fileModel = (new FileService())->createZipArchive('orders/' . $order->id . '/installation', 'Installation-' . $order->id . '.zip', $userId);
  29. // create link
  30. return $fileModel->link;
  31. }
  32. }
  33. }