migrate to gtea from bistbucket
This commit is contained in:
60
app/Traits/DateFilterTrait.php
Normal file
60
app/Traits/DateFilterTrait.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace App\Traits;
|
||||
|
||||
use Carbon\Carbon;
|
||||
|
||||
trait DateFilterTrait
|
||||
{
|
||||
public function applyDateFilter($query, ?string $duration, string $dateColumn = 'created_at', $fromDate = null, $toDate = null)
|
||||
{
|
||||
switch ($duration) {
|
||||
case 'today':
|
||||
$query->whereDate($dateColumn, Carbon::today());
|
||||
break;
|
||||
case 'yesterday':
|
||||
$query->whereDate($dateColumn, Carbon::yesterday());
|
||||
break;
|
||||
case 'last_seven_days':
|
||||
$query->whereBetween($dateColumn, [
|
||||
Carbon::today()->subDays(6)->startOfDay(),
|
||||
Carbon::today()->endOfDay(),
|
||||
]);
|
||||
break;
|
||||
case 'last_thirty_days':
|
||||
$query->whereBetween($dateColumn, [
|
||||
Carbon::today()->subDays(29)->startOfDay(),
|
||||
Carbon::today()->endOfDay(),
|
||||
]);
|
||||
break;
|
||||
case 'current_month':
|
||||
$query->whereBetween($dateColumn, [
|
||||
Carbon::now()->startOfMonth()->startOfDay(),
|
||||
Carbon::now()->endOfMonth()->endOfDay(),
|
||||
]);
|
||||
break;
|
||||
case 'last_month':
|
||||
$query->whereBetween($dateColumn, [
|
||||
Carbon::now()->subMonth()->startOfMonth()->startOfDay(),
|
||||
Carbon::now()->subMonth()->endOfMonth()->endOfDay(),
|
||||
]);
|
||||
break;
|
||||
case 'current_year':
|
||||
$query->whereBetween($dateColumn, [
|
||||
Carbon::now()->startOfYear()->startOfDay(),
|
||||
Carbon::now()->endOfYear()->endOfDay(),
|
||||
]);
|
||||
break;
|
||||
case 'custom_date':
|
||||
if ($fromDate && $toDate) {
|
||||
$query->whereBetween($dateColumn, [
|
||||
Carbon::parse($fromDate)->startOfDay(),
|
||||
Carbon::parse($toDate)->endOfDay(),
|
||||
]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return $query;
|
||||
}
|
||||
}
|
||||
23
app/Traits/DateRangeTrait.php
Normal file
23
app/Traits/DateRangeTrait.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Traits;
|
||||
|
||||
use Carbon\Carbon;
|
||||
|
||||
trait DateRangeTrait
|
||||
{
|
||||
public function applyDateRange(?string $duration, $fromDate = null, $toDate = null): array
|
||||
{
|
||||
return match ($duration) {
|
||||
'today' => [Carbon::today(), Carbon::today()],
|
||||
'yesterday' => [Carbon::yesterday(), Carbon::yesterday()],
|
||||
'last_seven_days' => [Carbon::today()->subDays(6), Carbon::today()],
|
||||
'last_thirty_days' => [Carbon::today()->subDays(29), Carbon::today()],
|
||||
'current_month' => [Carbon::now()->startOfMonth(), Carbon::now()->endOfMonth()],
|
||||
'last_month' => [Carbon::now()->subMonth()->startOfMonth(), Carbon::now()->subMonth()->endOfMonth()],
|
||||
'current_year' => [Carbon::now()->startOfYear(), Carbon::now()->endOfYear()],
|
||||
'custom_date' => $fromDate && $toDate ? [Carbon::parse($fromDate), Carbon::parse($toDate)] : [null, null],
|
||||
default => [null, null],
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user