<?php

namespace App\Http\Controllers\Api;

use App\Facades\Options;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\CronTasksRequest;
use App\Http\Resources\CronTasksResource;
use App\Services\DashboardService;
use Str;

/**
 * Controller class that supports integration dashboard for order related features
 */
class DashboardController extends Controller
{
    /**
     * API method that return worker and queue info
     *
     * @return void
     */
    public function getWorkerStatus(DashboardService $service)
    {
        return [
            'workerStatus' => $service->getWorkerStatus(),
            'queueStatus' => $service->getQueueStatus(),
            'catalogIntegrationStatus' => $service->getCatalogIntegrationStatus(),
        ];
    }

    public function getCronTasks()
    {
        $cronTasks = Options::get('cron_tasks');

        return new CronTasksResource($cronTasks);
    }

    public function setCronTasks(CronTasksRequest $request)
    {
        $cronTasks = Options::get('cron_tasks');

        $data = $request->validated();

        $newState = [];
        foreach ($data as $key => $value) {
            $newState[Str::snake($key)] = $value;
        }

        $cronTasks = Options::set('cron_tasks', $newState);

        return new CronTasksResource($cronTasks);
    }
}
