Allow filtering on multiple date ranges for invoices

This commit is contained in:
David Bomba 2024-01-21 13:00:33 +11:00
parent e8ffad5f0e
commit c17a65e7a0

View File

@ -247,24 +247,25 @@ class InvoiceFilters extends QueryFilters
return $this->builder->where('due_date', '>=', $date);
}
/**
* Filter by date range
*
* @param string $date_range
* @return Builder
*/
public function date_range(string $date_range = ''): Builder
{
$parts = explode(",", $date_range);
if (count($parts) != 3) {
if (count($parts) != 2) {
return $this->builder;
}
if(!in_array($parts[0], ['date','due_date'])) {
return $this->builder;
}
try {
$start_date = Carbon::parse($parts[1]);
$end_date = Carbon::parse($parts[2]);
$start_date = Carbon::parse($parts[0]);
$end_date = Carbon::parse($parts[1]);
return $this->builder->whereBetween($parts[0], [$start_date, $end_date]);
return $this->builder->whereBetween('date', [$start_date, $end_date]);
} catch(\Exception $e) {
return $this->builder;
}
@ -272,6 +273,33 @@ class InvoiceFilters extends QueryFilters
return $this->builder;
}
/**
* Filter by due date range
*
* @param string $date_range
* @return Builder
*/
public function due_date_range(string $date_range = ''): Builder
{
$parts = explode(",", $date_range);
if (count($parts) != 2) {
return $this->builder;
}
try {
$start_date = Carbon::parse($parts[0]);
$end_date = Carbon::parse($parts[1]);
return $this->builder->whereBetween('date', [$start_date, $end_date]);
} catch(\Exception $e) {
return $this->builder;
}
return $this->builder;
}
/**
* Sorts the list based on $sort.
*