<?php

namespace App\Repositories;

use App\Models\Doacao;
use Illuminate\Pagination\LengthAwarePaginator;

class DoacaoRepository
{
    public function listarDoUsuario(int $userId): LengthAwarePaginator
    {
        return Doacao::where('user_id', $userId)
            ->with('ecoponto')
            ->orderByDesc('created_at')
            ->paginate(20);
    }

    public function listarTodas(array $filtros): LengthAwarePaginator
    {
        $query = Doacao::with(['user', 'ecoponto']);

        if (!empty($filtros['status'])) {
            $query->where('status', $filtros['status']);
        }
        if (!empty($filtros['user_id'])) {
            $query->where('user_id', $filtros['user_id']);
        }
        if (!empty($filtros['eco_ponto_id'])) {
            $query->where('eco_ponto_id', $filtros['eco_ponto_id']);
        }

        return $query->orderByDesc('created_at')->paginate(20);
    }

    public function criar(array $dados): Doacao
    {
        return Doacao::create($dados);
    }

    public function buscarPorId(int $id): Doacao
    {
        return Doacao::with(['user', 'ecoponto'])->findOrFail($id);
    }
}
