<?php

declare(strict_types=1);

namespace Seka\Portal\Modul\Statistiky\Console;

use Carbon\Carbon;
use Illuminate\Console\Command;
use Log;
use Seka\Portal\Modul\Statistiky\Entities\Import\Import;

/**
 * Class KontrolaImportuZaznamovCommand
 *
 * @package Seka\Portal\Modul\Statistiky\Console
 */
final class KontrolaImportuZaznamovCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'statistiky:kontrola-importu {datum : Datum importu vo formate Y-m-d}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Kontrola prebehnutia importu štatistík technikov a pracovísk emisných kontrol za daný deň';

    /**
     * @throws \Seka\Portal\Modul\Statistiky\Exceptions\ZiadnyImportZaznamovZaPredchadzajuciDenException
     */
    public function handle(): void
    {
        $date = Carbon::createFromFormat('Y-m-d', $this->argument('datum'));
        $result = 0 < Import::query()
                ->whereDate('datum_cas_akcie', $date)
                ->where('subor_velkost', '>', 0)
                ->get()
                ->count();

        if ($result) {
            $this->info(sprintf('Za deň %s sa našlo %d importov záznamov zo súboru.', $date->format('d.m.Y'), $result));
            return;
        }

        $errorMessage = sprintf('Za deň %s sa nenašiel žiadny import záznamov zo súboru.', $date->format('d.m.Y'));
        Log::warning($errorMessage);
        $this->info($errorMessage);
    }
}
