From fe5756efc29d3fca09e71f392945045ff09c8b48 Mon Sep 17 00:00:00 2001 From: edmondlang Date: Sat, 14 May 2022 15:02:17 +0800 Subject: [PATCH] export billing analaytic data --- .../ExportsAnalyticBillingTransactions.php | 87 +++++++++++++++++++ .../ValueObjects/Constants/CompanyType.php | 5 ++ .../ExportAnalyticToExcelController.php | 7 ++ routes/web.php | 1 + 4 files changed, 100 insertions(+) create mode 100644 app/Classes/Modules/Exports/Services/ExportsAnalyticBillingTransactions.php diff --git a/app/Classes/Modules/Exports/Services/ExportsAnalyticBillingTransactions.php b/app/Classes/Modules/Exports/Services/ExportsAnalyticBillingTransactions.php new file mode 100644 index 00000000..11fafa15 --- /dev/null +++ b/app/Classes/Modules/Exports/Services/ExportsAnalyticBillingTransactions.php @@ -0,0 +1,87 @@ +request = $request; + } + + public function headings(): array + { + return [ + 'Booking Id', + 'Service Type', + 'Payment Method', + 'Company Id', + 'Customer Segment', + 'Company Create Date', + 'Company Type', + 'Supplier Id', + 'Customer Payment', + 'Customer Rate', + 'Customer Service Charge', + 'Customer Payment Date', + 'Original Amount', + 'Supplier Payment', + 'Supplier Rate', + 'Supplier Sevice Charge', + 'Supplier Payment Date' + ]; + } + + /** + * @return \Illuminate\Support\Collection|mixed + */ + public function query() + { + return Transaction::where('type', 3); + } + + /** + * @param $transaction + * @return array + */ + public function map($transaction): array + { + dd($transaction->owner->owner->company); + + $paymentmethondArray = PaymentMethodType::PAYMENT_METHODS_ID; + $paymentMethod = $paymentmethondArray[$transaction->payment_method]; + + $companyTypeArray = CompanyType::COMPANY_TYPE_ID; + $companyType = $companyTypeArray[$transaction->owner->owner->company->business_type]; + + return [ + $transaction->id, + $transaction->booking->service->name, + $paymentMethod, + $transaction->owner->owner->company->id, + $transaction->owner->owner->company->segments->first()->name, + $transaction->owner->owner->company->created_at, + + ]; + } +} \ No newline at end of file diff --git a/app/Classes/ValueObjects/Constants/CompanyType.php b/app/Classes/ValueObjects/Constants/CompanyType.php index 61918925..135aa700 100644 --- a/app/Classes/ValueObjects/Constants/CompanyType.php +++ b/app/Classes/ValueObjects/Constants/CompanyType.php @@ -8,4 +8,9 @@ final class CompanyType { public const COMPANY_BUSINESS = 1; + public const COMPANY_TYPE_ID = [ + self::PERSONAL_BUSINESS => 'PERSONAL_BUSINESS', + self::COMPANY_BUSINESS => 'COMPANY_BUSINESS', + ]; + } diff --git a/app/Http/Controllers/Exports/ExportAnalyticToExcelController.php b/app/Http/Controllers/Exports/ExportAnalyticToExcelController.php index 135e570d..2a93a991 100644 --- a/app/Http/Controllers/Exports/ExportAnalyticToExcelController.php +++ b/app/Http/Controllers/Exports/ExportAnalyticToExcelController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Exports; use App\Classes\Modules\Exports\Services\ExportsAnalyticBookingTransactions; +use App\Classes\Modules\Exports\Services\ExportsAnalyticBillingTransactions; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -27,4 +28,10 @@ class ExportAnalyticToExcelController ob_end_clean(); return $response; } + + public function billingData(ExportsAnalyticBillingTransactions $exportsAnalyticBillingTransactions, Request $request){ + $response = $exportsAnalyticBillingTransactions->download('billingData.csv', Excel::CSV, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); + ob_end_clean(); + return $response; + } } \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 5628c585..50a64e90 100644 --- a/routes/web.php +++ b/routes/web.php @@ -97,6 +97,7 @@ Route::get('/online_payment/redirect', 'Billplz\CallbackBillplzController@callba Route::get('/export/customers/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@export'); Route::get('/export/transactions/f614e339d7058904a831aad742e24d55', 'Exports\ExportCustomersToExcelController@transactions'); Route::get('/export/analytic/booking', 'Exports\ExportAnalyticToExcelController@bookingData'); +Route::get('/export/analytic/bills', 'Exports\ExportAnalyticToExcelController@billingData'); Route::get('/products', function (\App\Classes\Modules\Exports\Services\ExportsProducts $exportsProducts) { return $exportsProducts->download('products.csv', Excel::CSV, ['Content-Type' => 'text/csv']);