<?php

namespace App\Services\Api\Actions;

use App\Models\Environments\Environment;
use App\Models\Environments\EnvironmentStat;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

class StatsAction implements ActionInterface
{
    public function execute(Request $request, array $payload): array
    {
        /** @var Environment|null $environment */
        $environment = $request->input('_environment');

        if (!$environment) {
            throw new NotFoundHttpException('Environment not found for this host');
        }

        $dateNormalized = Carbon::parse($payload['date'])->format('Y-m-d');

        EnvironmentStat::updateOrCreate(
            [
                'environment_id' => $environment->id,
                'date' => $dateNormalized,
            ],
            [
                'data' => $payload['data'],
            ]
        );

        return [
            'saved' => true,
            'environment_id' => $environment->id,
            'date' => $dateNormalized,
        ];
    }
}
