2025-11-12 14:32:50 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Casts;
|
|
|
|
|
|
|
|
|
|
use Carbon\Carbon;
|
2026-02-10 15:43:47 +01:00
|
|
|
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
|
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
2025-11-12 14:32:50 +01:00
|
|
|
|
|
|
|
|
class LocalDateTime implements CastsAttributes
|
|
|
|
|
{
|
2026-02-10 15:43:47 +01:00
|
|
|
/**
|
|
|
|
|
* Get local date time.
|
|
|
|
|
*
|
|
|
|
|
* @param \Illuminate\Database\Eloquent\Model $model
|
|
|
|
|
* @param string $key
|
2026-02-12 17:14:08 +01:00
|
|
|
* @param mixed $value
|
2026-02-10 15:43:47 +01:00
|
|
|
* @param array $attributes
|
|
|
|
|
* @return \Carbon\Carbon|null
|
|
|
|
|
* @phpcs:disable
|
|
|
|
|
*/
|
2026-02-12 17:14:08 +01:00
|
|
|
public function get(Model $model, string $key, mixed $value, array $attributes): ?\Carbon\Carbon
|
2025-11-12 14:32:50 +01:00
|
|
|
{
|
2026-02-10 15:43:47 +01:00
|
|
|
// phpcs:enable
|
2025-11-12 14:32:50 +01:00
|
|
|
return $value
|
|
|
|
|
? Carbon::parse($value)->setTimezone(config('app.timezone'))
|
|
|
|
|
: null;
|
|
|
|
|
}
|
|
|
|
|
|
2026-02-10 15:43:47 +01:00
|
|
|
/**
|
|
|
|
|
* Set the locale date time.
|
|
|
|
|
*
|
|
|
|
|
* @param \Illuminate\Database\Eloquent\Model $model
|
|
|
|
|
* @param string $key
|
2026-02-12 17:14:08 +01:00
|
|
|
* @param mixed $value
|
2026-02-10 15:43:47 +01:00
|
|
|
* @param array $attributes
|
|
|
|
|
* @return \Carbon\Carbon|null
|
|
|
|
|
* @phpcs:disable
|
|
|
|
|
*/
|
2026-02-12 17:14:08 +01:00
|
|
|
public function set(Model $model, string $key, mixed $value, array $attributes): ?\Carbon\Carbon
|
2025-11-12 14:32:50 +01:00
|
|
|
{
|
2026-02-10 15:43:47 +01:00
|
|
|
// phpcs:enable
|
2025-11-12 14:32:50 +01:00
|
|
|
return $value
|
|
|
|
|
? Carbon::parse($value, config('app.timezone'))->setTimezone('UTC')
|
|
|
|
|
: null;
|
|
|
|
|
}
|
|
|
|
|
}
|