<?php

namespace App\Rules;

use App\AnalitoEP15;
use App\CorridaAnalito;
use App\CorridaArea;
use App\ProyectoEP15;
use App\SuperUsuario;
use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\Auth;

class AnalitoEP15NumProjectRule implements Rule
{
    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        $usuarioAutenticado = Auth::user();
        $clientReference = SuperUsuario::query()->where('id', $usuarioAutenticado->super_admin_id)->first();
        $proyectosEP15 = ProyectoEP15::query()->where('client', $clientReference->id)->get();
        $contadorTotalProyectos = 0;
        foreach ($proyectosEP15 as $proyectoEP15){
            $analitosEP15 = AnalitoEP15::query()
                ->where('proyecto_ep15_id_proyecto_ep15', $proyectoEP15->id_proyecto_ep15)->get();
            $contadorTotalProyectos += count($analitosEP15);
        }

        $proyectosEP09 = CorridaArea::query()->where('client', $clientReference->id)->get();
        foreach ($proyectosEP09 as $proyectoEPO9){
            $analitosEP09 = CorridaAnalito::query()
                ->where('corrida_area_id_corrida_area', $proyectoEPO9->id_corrida_area)->get();
            $contadorTotalProyectos += count($analitosEP09);
        }

        $tieneProyectosDisponibles = $contadorTotalProyectos < $clientReference->num_project;
        return $tieneProyectosDisponibles ;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'El cliente no tiene proyectos disponibles';
    }
}
