sort customers by total payments

This commit is contained in:
omair saleh
2021-10-09 12:41:37 +08:00
parent 04b1388cc2
commit b3fccad498
3 changed files with 27 additions and 2 deletions
@@ -0,0 +1,25 @@
<?php
namespace App\Classes\General\Eloquent\Filters;
use App\Classes\ValueObjects\Constants\ApprovalStatus;
use App\Classes\ValueObjects\Constants\TransactionType;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Facades\DB;
class WithTotalPayments implements Filter
{
/**
* @param Builder $builder
* @param $value
* @return mixed
*/
public static function apply(Builder $builder, $value)
{
return $builder->leftJoin('bookings', 'companies.id', '=', 'bookings.company_id')->rightJoin('transactions', function ($join) {
$join->on('bookings.id', '=', 'transactions.booking_id')->where('transactions.type', TransactionType::PAYMENT)->whereIn('transactions.status', [ApprovalStatus::APPROVED, ApprovalStatus::COMPLETED]);
})->addSelect(['companies.*', DB::raw('SUM(transactions.amount) as total_payments')])->groupBy(['companies.id']);
}
}
+1 -1
View File
@@ -56,7 +56,7 @@ return [
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'strict' => false,
'engine' => null,
'options' => extension_loaded('pdo_mysql') ? array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
+1 -1
View File
@@ -564,7 +564,7 @@
<div class="row no-margin" v-if="$store.getters.isAdmin">
<div class="col bg-white padding-25">
<div class="row tabsContainer tabContent" tab-name="customer-list">
<list-component key="2" section="customerListSection" cla :endpoint="route('api.company.list')" :options="{'business_type': 2, with_bookings:true}">
<list-component key="2" section="customerListSection" :endpoint="route('api.company.list')" :options="{'with_total_payments': true, 'business_type': 2, with_bookings:true, order_by:{ column:'total_payments', DESC:false}}">
<template slot="list" slot-scope="{data}">
<company-list-component :data="data"></company-list-component>
</template>