seasons: fixes listing based on aired date (adds UTC timezone to datetime)

This commit is contained in:
Irfan 2023-06-11 06:58:24 +05:00
parent 1720d7aabb
commit 8772fb4ed8
4 changed files with 33 additions and 8 deletions

View File

@ -154,13 +154,25 @@ class Anime extends JikanApiSearchableModel
/** @noinspection PhpUnused */ /** @noinspection PhpUnused */
public function filterByStartDate(\Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder $query, CarbonImmutable $value): \Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder public function filterByStartDate(\Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder $query, CarbonImmutable $value): \Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder
{ {
return $query->where("aired.from", ">=", $value->setTime(0, 0)->toAtomString()); return $query
->where("aired.from", ">=",
$value
->setTime(0, 0)
->setTimezone(new \DateTimeZone('UTC'))
->toAtomString()
);
} }
/** @noinspection PhpUnused */ /** @noinspection PhpUnused */
public function filterByEndDate(\Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder $query, CarbonImmutable $value): \Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder public function filterByEndDate(\Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder $query, CarbonImmutable $value): \Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder
{ {
return $query->where("aired.to", "<=", $value->setTime(0, 0)->toAtomString()); return $query
->where("aired.to", "<=",
$value
->setTime(0, 0)
->setTimezone(new \DateTimeZone('UTC'))
->toAtomString()
);
} }
public function filterByProducer(\Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder $query, string $value): \Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder public function filterByProducer(\Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder $query, string $value): \Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder

View File

@ -61,11 +61,13 @@ abstract class QueryAnimeSeasonHandlerBase implements RequestHandler
default => throw new BadRequestException('Invalid season supplied'), default => throw new BadRequestException('Invalid season supplied'),
}; };
$from = Carbon::createFromDate($year, $monthStart, 1); $from = Carbon::createFromDate($year, $monthStart, 1)
$from->setTime(0, 0); ->setTimezone(new \DateTimeZone('UTC'))
->setTime(0, 0);
$to = Carbon::createFromDate($year, $monthEnd, 1); $to = Carbon::createFromDate($year, $monthEnd, 1)
$to->setTime(0, 0); ->setTimezone(new \DateTimeZone('UTC'))
->setTime(0,0);
return [ return [
$from, $from,

View File

@ -14,6 +14,7 @@ trait IsoDateFormatter
$dt[2] ?? 1 $dt[2] ?? 1
) )
->setTime(0, 0) ->setTime(0, 0)
->setTimezone(new \DateTimeZone('UTC'))
->format(DATE_ATOM); ->format(DATE_ATOM);
} }
} }

View File

@ -68,13 +68,23 @@ class Manga extends JikanApiSearchableModel
/** @noinspection PhpUnused */ /** @noinspection PhpUnused */
public function filterByStartDate(\Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder $query, CarbonImmutable $value): \Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder public function filterByStartDate(\Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder $query, CarbonImmutable $value): \Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder
{ {
return $query->where("published.from", ">=", $value->setTime(0, 0)->toAtomString()); return $query
->where("published.from", ">=",
$value->setTime(0, 0)
->setTimezone(new \DateTimeZone('UTC'))
->toAtomString()
);
} }
/** @noinspection PhpUnused */ /** @noinspection PhpUnused */
public function filterByEndDate(\Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder $query, CarbonImmutable $value): \Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder public function filterByEndDate(\Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder $query, CarbonImmutable $value): \Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder
{ {
return $query->where("published.to", "<=", $value->setTime(0, 0)->toAtomString()); return $query
->where("published.to", "<=",
$value->setTime(0, 0)
->setTimezone(new \DateTimeZone('UTC'))
->toAtomString()
);
} }
public function filterByMagazine(\Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder $query, string $value): \Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder public function filterByMagazine(\Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder $query, string $value): \Laravel\Scout\Builder|\Illuminate\Database\Eloquent\Builder