/home2/mshostin/farms.ms-hostingladz.com/app/Repositories/Animal/AnimalRepository.php
<?php

namespace App\Repositories\Animal;

use App\Models\Animal;
use Illuminate\Support\Facades\Auth;

class AnimalRepository implements AnimalRepositoryInterface
{
    public function all()
    {
        $currentUser = Auth::user();
        $query = Animal::with('farm');

        if ($currentUser && $currentUser->hasRole('farm_admin')) {
            $query->where('farm_id', $currentUser->farm_id);
        }

        return $query->get();
    }

    public function find(int $id): ?Animal
    {
        return Animal::with('farm')->find($id);
    }

    public function create(array $data): Animal
    {
        return Animal::create($data);
    }

    public function update(Animal $animal, array $data): Animal
    {
        $animal->update($data);
        return $animal;
    }

    public function delete(Animal $animal): bool
    {
        $animal->users()->delete();
        return $animal->delete();
    }
}