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]); $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(); $paymentMethod = ''; foreach ($payments->get() as $payment) { if ( $paymentMethod == '' ) { $paymentMethod = $payment->payment_method; } else { if ( $payment->payment_method != $paymentMethod ) { $paymentMethod = 0; // set it to Hybrid } } } $paymentmethondArray = PaymentMethodType::PAYMENT_METHODS_ID; $paymentmethondArray[0] = 'Hybrid'; $paymentMethod == '' ? '' : $paymentMethod = $paymentmethondArray[$paymentMethod]; 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, '', ]; } }