<?php
namespace Fourtwosix\StatusBundle\Controller;
use Fourtwosix\StatusBundle\Classes\StatusModel;
use Fourtwosix\StatusBundle\Exceptions\DuplicateHandlerException;
use Fourtwosix\StatusBundle\Services\SchedulingLoader;
use Fourtwosix\StatusBundle\Services\StatusLoader;
use Fourtwosix\StatusBundle\Services\OpenMetricEncoder;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
use Symfony\Contracts\Translation\TranslatorInterface;
class AlarmController extends AbstractController
{
protected StatusLoader $statusLoader;
protected SchedulingLoader $schedulingLoader;
protected TranslatorInterface $translator;
public function __construct(
StatusLoader $statusLoader,
SchedulingLoader $schedulingLoader,
TranslatorInterface $translator
) {
$this->statusLoader = $statusLoader;
$this->schedulingLoader = $schedulingLoader;
$this->translator = $translator;
}
/**
* Returns a json with the checks results on the system
* @return JsonResponse
* @throws DuplicateHandlerException
*/
#[Route('/api/_alarm/errors', name: 'fourtwosix_status_bundle.alarms.errors')]
public function index(): Response
{
$statusCode = 200;
$errors = [];
$statusErrors = $this->statusLoader->loadErrors();
$schedulingErrors = $this->schedulingLoader->loadErrors();
if ($statusErrors->count() > 0) {
$statusCode = 500;
$errors["status"] = $statusErrors;
}
if ($schedulingErrors->count() > 0) {
$statusCode = 500;
$errors["scheduling"] = $schedulingErrors;
}
return $this->json([
"errors" => $errors
], $statusCode);
}
}