diff --git a/app/Classes/Modules/Exports/Services/ExportsAnalyticBookingTransactions.php b/app/Classes/Modules/Exports/Services/ExportsAnalyticBookingTransactions.php new file mode 100644 index 00000000..791c0de3 --- /dev/null +++ b/app/Classes/Modules/Exports/Services/ExportsAnalyticBookingTransactions.php @@ -0,0 +1,104 @@ +request = $request; + } + + public function headings(): array + { + return [ + 'TransID', + 'Company ID', + 'Type Of User', + 'Group Control / Experiment', + 'Payment Date', + 'Completed Purchase OrderDate', + 'DayTo Closed', + 'IsCompleted Purchase Order (1 or 0)', + 'Final Payment', + 'Discount Amount', + 'PaymentType', + 'RowUpdateDate' + ]; + } + + /** + * @return \Illuminate\Support\Collection|mixed + */ + public function query() + { + return Booking::query(); + } + + /** + * @param $booking + * @return array + */ + public function map($booking): array + { + $companyType = []; + $companyType[companyType::COMPANY_BUSINESS] = 'COMPANY_BUSINESS'; + $companyType[companyType::PERSONAL_BUSINESS] = 'PERSONAL_BUSINESS'; + + $payments = $booking->transactions()->where('type', 1)->whereIn('status', [2, 3]); + + $paymentmethondArray = PaymentMethodType::PAYMENT_METHODS_ID; + $paymentmethondArray[0] = 'Hybrid'; + $paymentMethod = ''; + foreach ($payments->get() as $payment) { + if ( $paymentMethod == '' ) { + $paymentMethod = $payment->payment_method; + } else if ( $payment->payment_method != $paymentMethod ) { + $paymentMethod = 0; // set it to Hybrid + } + } + $paymentMethod === '' ? '' : $paymentMethod = $paymentmethondArray[$paymentMethod]; + + $firstPayment = $payments->first(); + + $CompletedPurchaseOrders = $booking->transactions()->where('type', 7)->whereIn('status', [1, 2]); + + $FirstCompletedPurchaseOrder = $CompletedPurchaseOrders->first(); + + $lastPayment = $booking->transactions()->where('type', 1)->whereIn('status', [2, 3])->orderBy('id', 'desc')->first(); + + return [ + $booking->id, + $booking->company_id, + $companyType[$booking->company->type], + '', + $firstPayment == null ? '' : $firstPayment->created_at, + $FirstCompletedPurchaseOrder == null ? '' : $FirstCompletedPurchaseOrder->created_at, + '', + $CompletedPurchaseOrders->count() > 0 ? '1' : '0', + $lastPayment == null ? '' : $lastPayment->amount, + '', + $paymentMethod, + '', + ]; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Exports/ExportAnalyticToExcelController.php b/app/Http/Controllers/Exports/ExportAnalyticToExcelController.php new file mode 100644 index 00000000..135e570d --- /dev/null +++ b/app/Http/Controllers/Exports/ExportAnalyticToExcelController.php @@ -0,0 +1,30 @@ +headers->set('Authorization', 'Bearer '.$token); + } + + public function bookingData(ExportsAnalyticBookingTransactions $exportsAnalyticBookingTransactions, Request $request){ + $response = $exportsAnalyticBookingTransactions->download('bookingData.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 dafe7a1f..5628c585 100644 --- a/routes/web.php +++ b/routes/web.php @@ -96,6 +96,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('/products', function (\App\Classes\Modules\Exports\Services\ExportsProducts $exportsProducts) { return $exportsProducts->download('products.csv', Excel::CSV, ['Content-Type' => 'text/csv']);