diff --git a/app/Classes/Modules/Exports/Services/ExportsOrderSummaryByMarking.php b/app/Classes/Modules/Exports/Services/ExportsOrderSummaryByMarking.php new file mode 100644 index 00000000..3e95e122 --- /dev/null +++ b/app/Classes/Modules/Exports/Services/ExportsOrderSummaryByMarking.php @@ -0,0 +1,96 @@ +customerMarking = $customerMarking; + } + + /** + * @return \Illuminate\Support\Collection|mixed + */ + public function collection() + { + $connection = CompanyConnection::where('invitee_reference', $this->customerMarking)->first(); + + $company_id = $connection->invitee->company->id; + $company_module_id = $connection->invitee->id; + $packagesArray = collect(); + $orders = Order::where('company_module_id', $company_module_id)->get(); + + foreach ($orders as $order){ + $packingLists = $order->packingLists; + foreach ($packingLists as $packingList){ + if($packingList->packingLists->first()){ + $packingList = $packingList->packingLists->first(); + } + $packages = $packingList->packages; + foreach ($packages as $package){ + $packagesArray->push($package); + } + } + } + + return $packagesArray; + } + + /** + * @param Package $package + * + * @return array + */ + public function map($package): array + { + $packinglist = ($package->packingList()->first()->owner->owner_type == Order::class) ? $package->packingList()->first(): $package->packingList->owner; + $order = $packinglist->owner; + + return [ + Carbon::parse($package->created_at)->format('d-m-Y'), + '', + $order->reference, + $package->packingList->reference, + $package->description, + $package->quantity, + $package->length, + $package->height, + $package->width, + ((($package->length / 100) * ($package->height / 100) * ($package->width / 100)) * $package->quantity) + ]; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Exports/ExportCompanyModuleSummaryController.php b/app/Http/Controllers/Exports/ExportCompanyModuleSummaryController.php index 17ee64d8..6c07f57f 100644 --- a/app/Http/Controllers/Exports/ExportCompanyModuleSummaryController.php +++ b/app/Http/Controllers/Exports/ExportCompanyModuleSummaryController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Exports; use App\Classes\Modules\Exports\Services\ExportsCompanyModuleSummary; +use App\Classes\Modules\Exports\Services\ExportsOrderSummaryByMarking; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -27,4 +28,13 @@ class ExportCompanyModuleSummaryController ob_end_clean(); return $response; } + + public function exportOrderSummaryByMarking(Request $request) { + $exportsOrderSummaryByMarking = new ExportsOrderSummaryByMarking($request); + $customer_marking = $request->route('marking'); + $exportsOrderSummaryByMarking->setParameters($customer_marking); + $response = $exportsOrderSummaryByMarking->download($customer_marking . '_order_summary.xls', Excel::XLS, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); + ob_end_clean(); + return $response; + } } diff --git a/routes/web.php b/routes/web.php index 82803520..887bd171 100644 --- a/routes/web.php +++ b/routes/web.php @@ -373,6 +373,7 @@ Route::get('/settings', function () { })->name('settings'); Route::get('/customer/{company_module_id}/summary', 'Exports\ExportCompanyModuleSummaryController@export')->name('customer.summary.export'); +Route::get('/export-customer-order/{marking}', 'Exports\ExportCompanyModuleSummaryController@exportorderSummaryByMarking')->name('customer.orderSummary.export'); Route::get('/customer/summary/monthly', function () { $containers = Container::whereMonth('loading_date', '>=', ((float)Carbon::now()->format('m') - 2))->whereYear('loading_date', (float)Carbon::now()->format('Y'))->get();