|
|
@@ -93,4 +93,61 @@ class GenerateDocumentsService
|
|
|
|
|
|
$writer->save(storage_path('app/public/orders/') . $order->id .'/tmp/' . $fileName);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public function generateHandoverPack(Order $order, int $userId): string
|
|
|
+ {
|
|
|
+ $articles = [];
|
|
|
+ Storage::disk('public')->makeDirectory('orders/' . $order->id . '/tmp/ПАСПОРТ/');
|
|
|
+ Storage::disk('public')->makeDirectory('orders/' . $order->id . '/tmp/СЕРТИФИКАТ/');
|
|
|
+ Storage::disk('public')->makeDirectory('orders/' . $order->id . '/tmp/ФОТО ПСТ/photos');
|
|
|
+ Storage::disk('public')->makeDirectory('orders/' . $order->id . '/tmp/ФОТО ТН/');
|
|
|
+
|
|
|
+ // copy app photos
|
|
|
+ foreach ($order->photos as $photo) {
|
|
|
+ $from = $photo->path;
|
|
|
+ $to = 'orders/' . $order->id . '/tmp/ФОТО ПСТ/photos/' . $photo->original_name;
|
|
|
+ if(!Storage::disk('public')->exists($to)) {
|
|
|
+ Storage::disk('public')->copy($from, $to);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ foreach ($order->products_sku as $sku) {
|
|
|
+ // copy certificates
|
|
|
+ if($sku->product->certificate_id) {
|
|
|
+ $from = $sku->product->certificate->path;
|
|
|
+ $to = 'orders/' . $order->id . '/tmp/СЕРТИФИКАТ/' . $sku->product->certificate->original_name;
|
|
|
+ if(!Storage::disk('public')->exists($to)) {
|
|
|
+ Storage::disk('public')->copy($from, $to);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // copy passport
|
|
|
+ if($sku->passport_id) {
|
|
|
+ $from = $sku->passport->path;
|
|
|
+ $to = 'orders/' . $order->id . '/tmp/ПАСПОРТ/' . $sku->passport->original_name;
|
|
|
+ if(!Storage::disk('public')->exists($to)) {
|
|
|
+ Storage::disk('public')->copy($from, $to);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // generate xlsx order files
|
|
|
+ // ...
|
|
|
+
|
|
|
+ // create zip archive
|
|
|
+ $fileModel = (new FileService())->createZipArchive('orders/' . $order->id . '/tmp', self::HANDOVER_FILENAME . $order->common_name . '.zip', $userId);
|
|
|
+
|
|
|
+ // remove temp files
|
|
|
+ Storage::disk('public')->deleteDirectory('orders/' . $order->id . '/tmp');
|
|
|
+ $order->documents()->syncWithoutDetaching($fileModel);
|
|
|
+
|
|
|
+ // return link
|
|
|
+ return $fileModel?->link ?? '';
|
|
|
+ }
|
|
|
+
|
|
|
}
|