Improve sort filters

This commit is contained in:
David Bomba 2023-12-20 14:10:45 +11:00
parent 685c21c78a
commit 93d36abe4c
26 changed files with 86 additions and 35 deletions

View File

@ -97,7 +97,9 @@ class BankIntegrationFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -129,12 +129,14 @@ class BankTransactionFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
$dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
if ($sort_col[0] == 'deposit') { if ($sort_col[0] == 'deposit') {
return $this->builder->where('base_type', 'CREDIT')->orderBy('amount', $sort_col[1]); return $this->builder->where('base_type', 'CREDIT')->orderBy('amount', $dir);
} }
if ($sort_col[0] == 'withdrawal') { if ($sort_col[0] == 'withdrawal') {
return $this->builder->where('base_type', 'DEBIT')->orderBy('amount', $sort_col[1]); return $this->builder->where('base_type', 'DEBIT')->orderBy('amount', $dir);
} }
if ($sort_col[0] == 'status') { if ($sort_col[0] == 'status') {
@ -145,7 +147,7 @@ class BankTransactionFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -65,7 +65,9 @@ class BankTransactionRuleFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -162,7 +162,9 @@ class ClientFilters extends QueryFilters
$sort_col[0] = 'name'; $sort_col[0] = 'name';
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -50,7 +50,9 @@ class CompanyGatewayFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -139,12 +139,14 @@ class CreditFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
$dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
if ($sort_col[0] == 'client_id') { if ($sort_col[0] == 'client_id') {
return $this->builder->orderBy(\App\Models\Client::select('name') return $this->builder->orderBy(\App\Models\Client::select('name')
->whereColumn('clients.id', 'credits.client_id'), $sort_col[1]); ->whereColumn('clients.id', 'credits.client_id'), $dir);
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -51,7 +51,9 @@ class DesignFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
public function entities(string $entities = ''): Builder public function entities(string $entities = ''): Builder

View File

@ -12,6 +12,7 @@
namespace App\Filters; namespace App\Filters;
use App\Models\Company; use App\Models\Company;
use App\Filters\QueryFilters;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
/** /**
@ -63,7 +64,9 @@ class DocumentFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }

View File

@ -65,7 +65,9 @@ class GroupSettingFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -286,14 +286,16 @@ class InvoiceFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
$dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
if ($sort_col[0] == 'client_id') { if ($sort_col[0] == 'client_id') {
return $this->builder->orderBy(\App\Models\Client::select('name') return $this->builder->orderBy(\App\Models\Client::select('name')
->whereColumn('clients.id', 'invoices.client_id'), $sort_col[1]); ->whereColumn('clients.id', 'invoices.client_id'), $dir);
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -69,9 +69,11 @@ class ProjectFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
if (is_array($sort_col)) { if (is_array($sort_col) && in_array($sort_col[1], ['asc','desc'])) {
return $this->builder->orderBy($sort_col[0], $sort_col[1]); return $this->builder->orderBy($sort_col[0], $sort_col[1]);
} }
return $this->builder;
} }
/** /**

View File

@ -123,12 +123,14 @@ class PurchaseOrderFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
$dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
if ($sort_col[0] == 'vendor_id') { if ($sort_col[0] == 'vendor_id') {
return $this->builder->orderBy(\App\Models\Vendor::select('name') return $this->builder->orderBy(\App\Models\Vendor::select('name')
->whereColumn('vendors.id', 'purchase_orders.vendor_id'), $sort_col[1]); ->whereColumn('vendors.id', 'purchase_orders.vendor_id'), $dir);
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -146,10 +146,12 @@ class QuoteFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
$dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
if($sort_col[0] == 'client_id') { if($sort_col[0] == 'client_id') {
return $this->builder->orderBy(\App\Models\Client::select('name') return $this->builder->orderBy(\App\Models\Client::select('name')
->whereColumn('clients.id', 'quotes.client_id'), $sort_col[1]); ->whereColumn('clients.id', 'quotes.client_id'), $dir);
} }
@ -157,7 +159,7 @@ class QuoteFilters extends QueryFilters
$sort_col[0] = 'due_date'; $sort_col[0] = 'due_date';
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -63,7 +63,9 @@ class RecurringExpenseFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -62,7 +62,9 @@ class RecurringQuoteFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -50,7 +50,9 @@ class SchedulerFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -50,7 +50,9 @@ class SubscriptionFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -75,7 +75,9 @@ class SystemLogFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -131,17 +131,19 @@ class TaskFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
$dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
if ($sort_col[0] == 'client_id') { if ($sort_col[0] == 'client_id') {
return $this->builder->orderBy(\App\Models\Client::select('name') return $this->builder->orderBy(\App\Models\Client::select('name')
->whereColumn('clients.id', 'tasks.client_id'), $sort_col[1]); ->whereColumn('clients.id', 'tasks.client_id'), $dir);
} }
if ($sort_col[0] == 'user_id') { if ($sort_col[0] == 'user_id') {
return $this->builder->orderBy(\App\Models\User::select('first_name') return $this->builder->orderBy(\App\Models\User::select('first_name')
->whereColumn('users.id', 'tasks.user_id'), $sort_col[1]); ->whereColumn('users.id', 'tasks.user_id'), $dir);
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); return $this->builder->orderBy($sort_col[0], $dir);
} }
public function task_status(string $value = ''): Builder public function task_status(string $value = ''): Builder

View File

@ -50,7 +50,9 @@ class TaskStatusFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -50,7 +50,9 @@ class TaxRateFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -56,7 +56,9 @@ class TokenFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -54,7 +54,9 @@ class UserFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -69,7 +69,9 @@ class VendorFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**

View File

@ -50,7 +50,9 @@ class WebhookFilters extends QueryFilters
return $this->builder; return $this->builder;
} }
return $this->builder->orderBy($sort_col[0], $sort_col[1]); $dir = ($sort_col[1] == 'asc') ? 'asc' : 'desc';
return $this->builder->orderBy($sort_col[0], $dir);
} }
/** /**