mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-04-07 13:41:23 +00:00
Upadate filters with laravel best practices
This commit is contained in:
@@ -250,51 +250,47 @@ class Invoice extends Model implements HasMedia
|
|||||||
{
|
{
|
||||||
$filters = collect($filters);
|
$filters = collect($filters);
|
||||||
|
|
||||||
if ($filters->get('search')) {
|
$query->when($filters->get('search'), function ($query, $search) {
|
||||||
$query->whereSearch($filters->get('search'));
|
$query->whereSearch($search);
|
||||||
}
|
});
|
||||||
|
|
||||||
if ($filters->get('status')) {
|
$query->when($filters->get('status'), function ($query, $status) {
|
||||||
if (
|
match ($status) {
|
||||||
$filters->get('status') == self::STATUS_UNPAID ||
|
self::STATUS_UNPAID, self::STATUS_PARTIALLY_PAID, self::STATUS_PAID => $query->wherePaidStatus($status),
|
||||||
$filters->get('status') == self::STATUS_PARTIALLY_PAID ||
|
'DUE' => $query->whereDueStatus($status),
|
||||||
$filters->get('status') == self::STATUS_PAID
|
default => $query->whereStatus($status),
|
||||||
) {
|
};
|
||||||
$query->wherePaidStatus($filters->get('status'));
|
});
|
||||||
} elseif ($filters->get('status') == 'DUE') {
|
|
||||||
$query->whereDueStatus($filters->get('status'));
|
|
||||||
} else {
|
|
||||||
$query->whereStatus($filters->get('status'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($filters->get('paid_status')) {
|
$query->when($filters->get('paid_status'), function ($query, $status) {
|
||||||
$query->wherePaidStatus($filters->get('status'));
|
$query->wherePaidStatus($status);
|
||||||
}
|
});
|
||||||
|
|
||||||
if ($filters->get('invoice_id')) {
|
$query->when($filters->get('invoice_id'), function ($query, $invoiceId) {
|
||||||
$query->whereInvoice($filters->get('invoice_id'));
|
$query->whereInvoice($invoiceId);
|
||||||
}
|
});
|
||||||
|
|
||||||
if ($filters->get('invoice_number')) {
|
$query->when($filters->get('invoice_number'), function ($query, $invoiceNumber) {
|
||||||
$query->whereInvoiceNumber($filters->get('invoice_number'));
|
$query->whereInvoiceNumber($invoiceNumber);
|
||||||
}
|
});
|
||||||
|
|
||||||
if ($filters->get('from_date') && $filters->get('to_date')) {
|
$query->when($filters->get('from_date') && $filters->get('to_date'), function ($query) use ($filters) {
|
||||||
$start = Carbon::createFromFormat('Y-m-d', $filters->get('from_date'));
|
$start = Carbon::parse($filters->get('from_date'));
|
||||||
$end = Carbon::createFromFormat('Y-m-d', $filters->get('to_date'));
|
$end = Carbon::parse($filters->get('to_date'));
|
||||||
$query->invoicesBetween($start, $end);
|
$query->invoicesBetween($start, $end);
|
||||||
}
|
});
|
||||||
|
|
||||||
if ($filters->get('customer_id')) {
|
$query->when($filters->get('customer_id'), function ($query, $customerId) {
|
||||||
$query->whereCustomer($filters->get('customer_id'));
|
$query->where('customer_id', $customerId);
|
||||||
}
|
});
|
||||||
|
|
||||||
if ($filters->get('orderByField') || $filters->get('orderBy')) {
|
$query->when($filters->get('orderByField') || $filters->get('orderBy'), function ($query) use ($filters) {
|
||||||
$field = $filters->get('orderByField') ? $filters->get('orderByField') : 'sequence_number';
|
$field = $filters->get('orderByField', 'sequence_number');
|
||||||
$orderBy = $filters->get('orderBy') ? $filters->get('orderBy') : 'desc';
|
$orderBy = $filters->get('orderBy', 'desc');
|
||||||
$query->whereOrder($field, $orderBy);
|
$query->orderBy($field, $orderBy);
|
||||||
}
|
});
|
||||||
|
|
||||||
|
return $query;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function scopeWhereInvoice($query, $invoice_id)
|
public function scopeWhereInvoice($query, $invoice_id)
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite --host",
|
"dev": "vite",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
"serve": "vite preview",
|
"serve": "vite preview",
|
||||||
"test": "eslint ./resources/scripts --ext .js,.vue"
|
"test": "eslint ./resources/scripts --ext .js,.vue"
|
||||||
|
|||||||
Reference in New Issue
Block a user