From ec83540a4056a0a1303d8632fc69cf6de888d462 Mon Sep 17 00:00:00 2001 From: JiaSheng Date: Sat, 30 Sep 2023 12:48:49 +0800 Subject: [PATCH] wallet pagination filters --- .../Eloquent/Filters/CreatedAfterOrEqual.php | 4 +- .../Eloquent/Filters/CreatedBeforeOrEqual.php | 4 +- .../General/Eloquent/Filters/OwnerId.php | 3 +- .../General/Eloquent/Filters/OwnerType.php | 3 +- .../General/Eloquent/Filters/StatusIn.php | 3 +- .../Filters/WithBookingMarkingLike.php | 29 +++++++++ .../elements/CustomerTransactionComponent.vue | 65 ++++++++++++++++++- 7 files changed, 104 insertions(+), 7 deletions(-) create mode 100644 app/Classes/General/Eloquent/Filters/WithBookingMarkingLike.php diff --git a/app/Classes/General/Eloquent/Filters/CreatedAfterOrEqual.php b/app/Classes/General/Eloquent/Filters/CreatedAfterOrEqual.php index 7e563aee..9df98f40 100644 --- a/app/Classes/General/Eloquent/Filters/CreatedAfterOrEqual.php +++ b/app/Classes/General/Eloquent/Filters/CreatedAfterOrEqual.php @@ -16,6 +16,8 @@ class CreatedAfterOrEqual implements Filter */ public static function apply(Builder $builder, $value) { - return $builder->where('created_at', '>=', Carbon::parse($value)); + $table = $builder->getModel()->getTable(); + $startDate = Carbon::createFromFormat('d-m-Y', $value)->startOfDay(); + return $builder->where("{$table}.created_at", '>=', $startDate); } } \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/CreatedBeforeOrEqual.php b/app/Classes/General/Eloquent/Filters/CreatedBeforeOrEqual.php index ed97b48f..5b349540 100644 --- a/app/Classes/General/Eloquent/Filters/CreatedBeforeOrEqual.php +++ b/app/Classes/General/Eloquent/Filters/CreatedBeforeOrEqual.php @@ -15,6 +15,8 @@ class CreatedBeforeOrEqual implements Filter */ public static function apply(Builder $builder, $value) { - return $builder->where('created_at', '<=', Carbon::parse($value)); + $table = $builder->getModel()->getTable(); + $endDate = Carbon::createFromFormat('d-m-Y', $value)->endOfDay(); + return $builder->where("{$table}.created_at", '<=', $endDate); } } diff --git a/app/Classes/General/Eloquent/Filters/OwnerId.php b/app/Classes/General/Eloquent/Filters/OwnerId.php index eac7e32d..c2dfa685 100644 --- a/app/Classes/General/Eloquent/Filters/OwnerId.php +++ b/app/Classes/General/Eloquent/Filters/OwnerId.php @@ -14,7 +14,8 @@ class OwnerId implements Filter */ public static function apply(Builder $builder, $value) { - return $builder->where('owner_id', $value); + $table = $builder->getModel()->getTable(); + return $builder->where("{$table}.owner_id", $value); } } \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/OwnerType.php b/app/Classes/General/Eloquent/Filters/OwnerType.php index 6a13fb08..3feedccd 100644 --- a/app/Classes/General/Eloquent/Filters/OwnerType.php +++ b/app/Classes/General/Eloquent/Filters/OwnerType.php @@ -14,7 +14,8 @@ class OwnerType implements Filter */ public static function apply(Builder $builder, $value) { - return $builder->where('owner_type', $value); + $table = $builder->getModel()->getTable(); + return $builder->where("{$table}.owner_type", $value); } } \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/StatusIn.php b/app/Classes/General/Eloquent/Filters/StatusIn.php index cbfdfbd0..85425802 100644 --- a/app/Classes/General/Eloquent/Filters/StatusIn.php +++ b/app/Classes/General/Eloquent/Filters/StatusIn.php @@ -14,7 +14,8 @@ class StatusIn implements Filter */ public static function apply(Builder $builder, $value) { - return $builder->whereIn('status', $value); + $table = $builder->getModel()->getTable(); + return $builder->whereIn("{$table}.status", $value); } } \ No newline at end of file diff --git a/app/Classes/General/Eloquent/Filters/WithBookingMarkingLike.php b/app/Classes/General/Eloquent/Filters/WithBookingMarkingLike.php new file mode 100644 index 00000000..ed35cc31 --- /dev/null +++ b/app/Classes/General/Eloquent/Filters/WithBookingMarkingLike.php @@ -0,0 +1,29 @@ +join('transactions as t2', 't2.payment_reference', '=', 'transactions.bill_no') + ->join('bookings', function ($join) use ($value) { + $join->on('bookings.id', '=', 't2.owner_id') + ->where('bookings.marking', 'LIKE', '%'.$value.'%'); + }) + ->addSelect(['transactions.*','t2.owner_id as bookingId', 'bookings.marking as bookingMarking']); + } +} \ No newline at end of file diff --git a/resources/assets/vue/components/wallets/elements/CustomerTransactionComponent.vue b/resources/assets/vue/components/wallets/elements/CustomerTransactionComponent.vue index 1250432b..aeb045ce 100644 --- a/resources/assets/vue/components/wallets/elements/CustomerTransactionComponent.vue +++ b/resources/assets/vue/components/wallets/elements/CustomerTransactionComponent.vue @@ -1,6 +1,29 @@