Recebi um teste onde eu precisaria aplicar uma regra de negócios onde posso deletar apenas clientes que não tenham um plano específico e/ou que não sejam de uma cidade específica. Utilizei laravel com algumas camadas como services, providers, repositories, models, controllers, requests, etc. Coloquei a regra no serviço, está correto?
Esta é parte do meu ClienteService
public function deletar(int $id): void
{
if ($this->clientePodeSerDeletado($id)) {
$this->clienteRepository->deletar($id);
}
}
public function clientePodeSerDeletado(int $id): bool
{
$cliente = $this->obterPorId($id);
if ($cliente->estado === 'São Paulo') {
throw new Exception('Clientes de São Paulo não são elegíveis para exclusão.');
}
$planos = json_decode($cliente->planos);
foreach ($planos as $plano) {
if ($plano->nome === 'Free') {
throw new Exception('Clientes do plano Free não são elegíveis para exclusão.');
}
}
return true;
}