diff --git a/app/Classes/Modules/Transactions/ControllersLogic/ListUrgentTransactionsLogic.php b/app/Classes/Modules/Transactions/ControllersLogic/ListUrgentTransactionsLogic.php new file mode 100644 index 00000000..35a57e48 --- /dev/null +++ b/app/Classes/Modules/Transactions/ControllersLogic/ListUrgentTransactionsLogic.php @@ -0,0 +1,49 @@ +listsTransactions = $listsTransactions; + } + + /** + * @return array + */ + protected function notification():array { + return [ + 'title' => 'Retrieved Transactions Urgent', + 'message' => 'You have successfully retrieved a list of transactions' + ]; + } + + /** @var ListsTransactions */ + private $listsTransactions; + + + + public function logic(Request $request) : JsonResponse + { + + $query = $this->listsTransactions->execute($this->listsTransactions->deserializeFilters($request->input('filters'))); + + return $this->collectionResponse(TransactionUrgentResource::collection($query)); + + } + + + +} diff --git a/app/Http/Controllers/Transactions/ListUrgentTransactionsController.php b/app/Http/Controllers/Transactions/ListUrgentTransactionsController.php new file mode 100644 index 00000000..b97cba14 --- /dev/null +++ b/app/Http/Controllers/Transactions/ListUrgentTransactionsController.php @@ -0,0 +1,21 @@ +execute($request); + } +} diff --git a/app/Http/Resources/TransactionUrgentResource.php b/app/Http/Resources/TransactionUrgentResource.php new file mode 100644 index 00000000..8b795fe8 --- /dev/null +++ b/app/Http/Resources/TransactionUrgentResource.php @@ -0,0 +1,71 @@ +type, [TransactionType::BILL, TransactionType::REFUND, TransactionType::SUPPLIER_REFUND])){ + $booking = $this->owner->owner; + $bank = $this->owner->bank ?? $booking->bank; + } + else{ + $booking = $this->owner; + $bank = $this->bank ?? $booking->bank; + } + //Check if Transaction of type PAYMENT has an override for recipient bank - ends + $days = $this->created_at->endOfDay()->addWeekdays($booking->service_id === 3 ? 3 : 1); + + return [ + 'id' => $this->id, + 'booking' => new BookingResource($booking), + // 'type' => (int) $this->type, + // 'bill_no' => $this->bill_no, + // 'payment_reference' => $this->payment_reference, + // 'payment_method' => (float) $this->payment_method, + 'recipient_bank_account' => new BankResource($bank), + // 'issuer_name' => $this->issuerCompany->name, + // 'issuer_id' => $this->issuerCompany->id, + // 'amount' => (double) ($this->type === TransactionType::SUPPLIER_REFUND ? $this->amount - $this->transactions()->where('type', TransactionType::BILL_REFUND)->where('status', ApprovalStatus::APPROVED)->sum('amount') : $this->amount), + 'original_amount' => (double) ($this->type === TransactionType::SUPPLIER_REFUND ? $this->original_amount - $this->transactions()->where('type', TransactionType::BILL_REFUND)->where('status', ApprovalStatus::APPROVED)->sum('original_amount') : $this->original_amount), + // 'currency' => new CurrencyResource($this->currency), + // 'original_currency' => new CurrencyResource($this->original_currency), + // 'service_charge' => (double) $this->service_charge, + // 'tax' => (double) $this->tax, + // 'currency_rate' => (double) $this->currency_rate, + // 'status' => (int) $this->status, + //'details' => TransactionDetailResource::collection($this->transactionDetails), + 'documents' => new DocumentResource($this->documents()->first()), + //'transaction_bill' => new TransactionResource($this->when((int) $this->type === TransactionType::PAYMENT, $this->transactions()->bills()->first())), + //'transaction_refunds' => TransactionResource::collection($this->when((int) $this->type === TransactionType::PAYMENT, $this->transactions()->refunds()->get())), + //'refunded_amount' => $this->booking ? floatval((App()->make(CalculatesBookingRefundAmount::class))->calculateRefundAmount($this->resource, $this->booking->fix_currency_id)) : null, + // 'expires_on' => Carbon::parse($this->expires_on)->format('d-m-Y h:i:s A'), + 'updated_at' => Carbon::parse($this->updated_at)->format('d-m-Y h:i:s A'), + // 'created_at' => Carbon::parse($this->created_at)->format('d-m-Y h:i:s A'), + 'interval' => [ + 'value' => $days->gt(Carbon::now()) ? '+' : '-', + 'duration' => $days->diff(Carbon::now())->format('%d'), + ], + //'remarks' => RemarkResource::collection($this->remarks), + //'redemption' => new VoucherRedemptionResource($this->voucherRedemption), + // 'bank' => ((int) $this->type === TransactionType::PAYMENT) ? new BankResource($bank) : null, //When a transaction (of type payment) has an override recipient bank details on booking, this is NOT null + ]; + } +} diff --git a/resources/assets/vue/components/bookings/sections/UrgentListSectionComponent.vue b/resources/assets/vue/components/bookings/sections/UrgentListSectionComponent.vue index 1148837c..8a7d339d 100644 --- a/resources/assets/vue/components/bookings/sections/UrgentListSectionComponent.vue +++ b/resources/assets/vue/components/bookings/sections/UrgentListSectionComponent.vue @@ -48,7 +48,7 @@ }, methods: { fetchList(Page = 1){ - this.submit(route('api.transaction.list') + '?page='+ Page +'&filters=' + JSON.stringify({status: 2, type: 1, owner_type: 'App\\Models\\Booking', per_page: 50, order_by: { + this.submit(route('api.transaction.list.urgent') + '?page='+ Page +'&filters=' + JSON.stringify({status: 2, type: 1, owner_type: 'App\\Models\\Booking', per_page: 50, order_by: { column: 'created_at', DESC: true }}), 'get', 'urgentListSection', false, true) @@ -59,4 +59,4 @@ } } } - \ No newline at end of file + diff --git a/routes/transaction.php b/routes/transaction.php index 4d18c31b..fd3e1f64 100644 --- a/routes/transaction.php +++ b/routes/transaction.php @@ -6,6 +6,7 @@ Route::group(['prefix' => 'transactions', 'namespace' => 'Transactions', 'as' => Route::get('/list', 'ListTransactionsController@list')->name('list'); Route::get('/list/job', 'ListTransactionsJobController@list')->name('list.job'); + Route::get('/list/urgent', 'ListUrgentTransactionsController@list')->name('list.urgent'); Route::delete('/suspend/{id}', 'SuspendTransactionController@suspend')->name('suspend'); route::post('/supplier/{id}/bill/create', 'CreateSupplierTransactionController@create')->name('supplier.create');