|
|
@@ -3,6 +3,7 @@
|
|
|
namespace App\Services;
|
|
|
|
|
|
use App\Helpers\DateHelper;
|
|
|
+use App\Models\ProductSKU;
|
|
|
use App\Models\Product;
|
|
|
use Illuminate\Support\Collection;
|
|
|
use Illuminate\Support\Facades\Log;
|
|
|
@@ -25,6 +26,18 @@ class ExportOrdersService
|
|
|
*/
|
|
|
public function handle(Collection $orders, int $userId): string
|
|
|
{
|
|
|
+ $orderIds = $orders->pluck('id')->filter()->values();
|
|
|
+ $orderYears = $orders->pluck('year')->filter()->unique()->values();
|
|
|
+
|
|
|
+ $productsSkuByOrder = collect();
|
|
|
+ if ($orderIds->isNotEmpty() && $orderYears->isNotEmpty()) {
|
|
|
+ $productsSkuByOrder = ProductSKU::query()
|
|
|
+ ->withoutGlobalScopes()
|
|
|
+ ->whereIn('order_id', $orderIds)
|
|
|
+ ->whereIn('year', $orderYears)
|
|
|
+ ->get()
|
|
|
+ ->groupBy('order_id');
|
|
|
+ }
|
|
|
|
|
|
$inputFileType = 'Xlsx'; // Xlsx - Xml - Ods - Slk - Gnumeric - Csv
|
|
|
$inputFileName = './templates/Orders.xlsx';
|
|
|
@@ -40,6 +53,10 @@ class ExportOrdersService
|
|
|
$prevInstDate = '';
|
|
|
$j = 1;
|
|
|
foreach ($orders as $order) {
|
|
|
+ $orderProductsSku = ($productsSkuByOrder->get($order->id) ?? collect())
|
|
|
+ ->where('year', (int) $order->year)
|
|
|
+ ->values();
|
|
|
+ $order->setRelation('products_sku', $orderProductsSku);
|
|
|
|
|
|
$instDate = ($order->installation_date) ? DateHelper::getHumanDate($order->installation_date, true) : '';
|
|
|
$readyDate = ($order->ready_date) ? DateHelper::getHumanDate($order->ready_date, true) : '';
|
|
|
@@ -91,4 +108,4 @@ class ExportOrdersService
|
|
|
return $fileModel?->link ?? '';
|
|
|
|
|
|
}
|
|
|
-}
|
|
|
+}
|