/home2/mshostin/farms.ms-hostingladz.com/app/Policies/FarmPolicy.php
<?php

namespace App\Policies;

use App\Models\User;
use App\Models\Farm;

class FarmPolicy
{
    /**
     * Only super admin can view list of all farms.
     */
    public function viewAny(User $user): bool
    {
        return $user->hasRole('super_admin');
    }

    /**
     * View a single farm.
     * Super admin = can view all
     * Farm admin = only own farm
     */
    public function view(User $user, Farm $farm): bool
    {
        if ($user->hasRole('super_admin')) {
            return true;
        }

        if ($user->hasRole('farm_admin')) {
            return $user->farm_id === $farm->id;
        }
        

        return false;
    }

    /**
     * Only super admin can create farms.
     */
    public function create(User $user): bool
    {
        return $user->hasRole('super_admin');
    }

    /**
     * Update farm:
     * - super admin: any farm
     * - farm admin: only their own farm
     */
    public function update(User $user, Farm $farm): bool
    {
        if ($user->hasRole('super_admin')) {
            return true;
        }

        if ($user->hasRole('farm_admin')) {
            return $user->farm_id === $farm->id;
        }

        return false;
    }

    /**
     * Only super admin can delete farms.
     */
    public function delete(User $user, Farm $farm): bool
    {
        return $user->hasRole('super_admin');
    }
}