diff --git a/app/Classes/Modules/Exports/Services/ExportsAllCustomersInfoForLarkSystem.php b/app/Classes/Modules/Exports/Services/ExportsAllCustomersInfoForLarkSystem.php new file mode 100644 index 00000000..c76f36f5 --- /dev/null +++ b/app/Classes/Modules/Exports/Services/ExportsAllCustomersInfoForLarkSystem.php @@ -0,0 +1,57 @@ +execute(Company::query(), [ + 'has_business_module_type' => 1, + ]); + } + + public function map($company): array + { + $company_module = $company->companyModules()->first(); + $marking = $company_module->getMarking(); + $employees = $company_module->employees()->first(); + + $data = [ + $marking, + $company->name, + $company->contacts()->first()->phone ?? '', + $employees?->email ?? '', + $company->created_at, + $company->updated_at, + $company_module->connections()->first()->segments()->pluck('name')->implode(', ') + ]; + + return $data; + } +} diff --git a/app/Http/Controllers/Exports/ExportCompanyModuleSummaryController.php b/app/Http/Controllers/Exports/ExportCompanyModuleSummaryController.php index 39f5f33b..42bcc084 100644 --- a/app/Http/Controllers/Exports/ExportCompanyModuleSummaryController.php +++ b/app/Http/Controllers/Exports/ExportCompanyModuleSummaryController.php @@ -10,6 +10,7 @@ use Illuminate\Support\Facades\Auth; use Maatwebsite\Excel\Excel; use Illuminate\Support\Facades\Storage; use App\Classes\General\AWSS3Helper; +use App\Classes\Modules\Exports\Services\ExportsAllCustomersInfoForLarkSystem; use App\Classes\Modules\Exports\Services\ExportsSegmentCustomers; use App\Models\Segment; @@ -77,4 +78,24 @@ class ExportCompanyModuleSummaryController return $response; } } + + public function exportAllCustomersInfoForLarkSystem(Request $request) + { + $password = $request->input('password'); + if ($password !== 'all_customers_data') { + return response()->json(['error' => 'Invalid password'], 403); + } + + $exportsAllCustomersInfoForLarkSystem = new ExportsAllCustomersInfoForLarkSystem($request); + $exportFileName = 'all_customers_info_for_lark_system.xls'; + + $filesystemDriver = Storage::getDefaultDriver(); + if ($filesystemDriver === 's3') { + return response(['src' => AWSS3Helper::S3Exportable($exportFileName, $exportsAllCustomersInfoForLarkSystem)]); + } else { + $response = $exportsAllCustomersInfoForLarkSystem->download($exportFileName, 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 ce9a5c70..94909ea0 100644 --- a/routes/web.php +++ b/routes/web.php @@ -488,6 +488,7 @@ Route::get('/export/arrived-parcel', 'Exports\ExportArrivedParcelController@expo Route::get('/export/parcel-summary', 'Exports\ExportArrivedParcelController@summary')->middleware(['api'])->middleware(['valid.token'])->name('packing_list.arrived_parcel.parcel-summary'); Route::get('/export/aging-list', 'Exports\ExportArrivedParcelController@aging')->middleware(['api'])->middleware(['valid.token'])->name('aging-listing.export'); Route::get('/export/segment-customers/{segment}/{companyMarking}', 'Exports\ExportCompanyModuleSummaryController@exportSegmentCustomers')->middleware(['api'])->middleware(['valid.token'])->name('segment-customers.export'); +Route::get('/export/all-customers-info-for-lark-system', 'Exports\ExportCompanyModuleSummaryController@exportAllCustomersInfoForLarkSystem')->middleware(['api'])->middleware(['valid.token'])->name('exportAllCustomersInfoForLarkSystem.export'); //Converted to protected route ends (20240925) Route::get('/settings', function () {