35 lines
917 B
PHP
35 lines
917 B
PHP
<?php
|
|||
|
|
|
||
|
|
namespace App\Http\Controllers\Concerns;
|
||
|
|
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
use Illuminate\Support\Carbon;
|
||
|
|
|
||
|
|
trait ParsesDateRange
|
||
|
|
{
|
||
|
|
private function parseDateRange(Request $request): array
|
||
|
|
{
|
||
|
|
$range = $request->get('range', '7d');
|
||
|
|
$to = Carbon::today();
|
||
|
|
|
||
|
|
$from = match ($range) {
|
||
|
|
'today' => Carbon::today(),
|
||
|
|
'7d' => Carbon::today()->subDays(6),
|
||
|
|
'30d' => Carbon::today()->subDays(29),
|
||
|
|
'90d' => Carbon::today()->subDays(89),
|
||
|
|
'custom' => Carbon::parse($request->get('from', Carbon::today()->subDays(6)->toDateString())),
|
||
|
|
default => Carbon::today()->subDays(6),
|
||
|
|
};
|
||
|
|
|
||
|
|
if ($range === 'custom' && $request->has('to')) {
|
||
|
|
$to = Carbon::parse($request->get('to'));
|
||
|
|
}
|
||
|
|
|
||
|
|
if ($from->gt($to)) {
|
||
|
|
[$from, $to] = [$to, $from];
|
||
|
|
}
|
||
|
|
|
||
|
|
return [$from, $to];
|
||
|
|
}
|
||
|
|
}
|