<?php

namespace App\Infra\Empresa\Repositories;

use App\Domain\Empresa\Models\Empresa;
use App\Domain\Empresa\DTO\CriarEmpresaDTO;
use App\Domain\Empresa\Repositories\EmpresaRepositoryInterface;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Database\Eloquent\ModelNotFoundException;

class EmpresaRepositoryEloquent implements EmpresaRepositoryInterface
{
    public function __construct(
        private readonly Empresa $model
    ) {}

    public function criar(CriarEmpresaDTO $dados): Empresa
    {
        return $this->model->create([
            'nome' => $dados->nome,
            'cnpj' => $dados->cnpj,
            'email' => $dados->email,
            'telefone' => $dados->telefone
        ]);
    }

    public function listar(): LengthAwarePaginator
    {
        return $this->model->paginate(10);
    }

    public function encontrarPorId(int $id): ?Empresa
    {
        return $this->model->find($id);
    }

    public function excluir(int $id): void
    {
        $empresa = $this->model->find($id);
        
        if (!$empresa) {
            throw new ModelNotFoundException("Empresa não encontrada");
        }

        $empresa->delete();
    }
} 