|
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Enums\DurationModifier;
|
|
use App\Http\Requests\CalculateDurationRequest;
|
|
use App\Http\Resources\CalculateDurationResponse;
|
|
use App\Services\CalculateDuration;
|
|
use DateTimeImmutable;
|
|
|
|
class CalculateDurationController extends Controller
|
|
{
|
|
public function __invoke(CalculateDurationRequest $request): CalculateDurationResponse
|
|
{
|
|
$startData = $request->validated('start');
|
|
$endData = $request->validated('end');
|
|
|
|
$start = DateTimeImmutable::createFromFormat('Y-m-d', $startData['date'], $startData['timezone'] ?? null);
|
|
$end = DateTimeImmutable::createFromFormat('Y-m-d', $endData['date'], $endData['timezone'] ?? null);
|
|
|
|
$calculateDuration = new CalculateDuration($start, $end);
|
|
|
|
$durationModifier = DurationModifier::tryFrom($request->validated('convert_to')) ?? DurationModifier::None;
|
|
|
|
return new CalculateDurationResponse(
|
|
$calculateDuration->result($durationModifier)
|
|
);
|
|
}
|
|
}
|