<?php

declare(strict_types=1);

namespace App\Service;

use App\Repository\TblDepartamentoRepository;

final class TblDepartamentoService
{
    private TblDepartamentoRepository $TblDepartamentoRepository;

    public function __construct(TblDepartamentoRepository $TblDepartamentoRepository)
    {
        $this->TblDepartamentoRepository = $TblDepartamentoRepository;
    }

    public function checkAndGet(int $TblDepartamentoId): object
    {
        return $this->TblDepartamentoRepository->checkAndGet($TblDepartamentoId);
    }

    public function getAll(): array
    {
        return $this->TblDepartamentoRepository->getAll();
    }

    public function getOne(int $TblDepartamentoId): object
    {
        return $this->checkAndGet($TblDepartamentoId);
    }

    public function create(array $input): object
    {
        $TblDepartamento = json_decode((string) json_encode($input), false);

        return $this->TblDepartamentoRepository->create($TblDepartamento);
    }

    public function update(array $input, int $TblDepartamentoId): object
    {
        $TblDepartamento = $this->checkAndGet($TblDepartamentoId);
        $data = json_decode((string) json_encode($input), false);

        return $this->TblDepartamentoRepository->update($TblDepartamento, $data);
    }

    public function delete(int $TblDepartamentoId): void
    {
        $this->checkAndGet($TblDepartamentoId);
        $this->TblDepartamentoRepository->delete($TblDepartamentoId);
    }
}
