<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Radicado extends Model
{
    protected $table = 'radicado';

    public function solicitantes()
    {
        return $this->belongsToMany('App\Solicitante', 'radicado_solicitante',
            'id_radicado', 'id_solicitante');
    }

    public function adjuntos()
    {
        return $this->belongsToMany('App\Adjunto', 'adjunto_radicado',
            'id_radicado', 'id_adjunto');
    }

    public function TipoRadicado()
    {
        return $this->belongsTo('App\Tipo_Radicado', 'id_tipo_radicado', 'id', 'TipoRadicado');
    }

    public function Usuario()
    {
        return $this->belongsTo('App\User', 'id_usuario', 'id');
    }

    public function Area()
    {
        return $this->belongsTo('App\Area', 'id_area', 'id');
    }

    public function Estado()
    {
        return $this->belongsTo('App\Estado_Radicado', 'id_estado', 'id');
    }

    public function UltimoTramite()
    {
        return $this->belongsTo('App\Tramite',
            'id', 'id_radicado')
            ->orderBy('created_at', 'desc');
    }

    public function Tramites()
    {
        return $this->hasMany('App\Tramite',
            'id_radicado', 'id')
            ->orderBy('created_at', 'desc');
    }

    public function FechaLimite()
    {
        $tipo = $this->TipoRadicado;

        $dias = $tipo->dias_respuesta;

        $fecha_limite = $this->created_at . ' ';

        $partes = explode(' ', $fecha_limite);

        $diasreal = 0;
        $nva = $partes[0];

        $i = 0;

        if (!$this->ValidaFecha($nva)) {
            $nva = $this->BuscarSiguienteHabil($nva);
        } else {
            $i = 1;
        }

        do {

            $nva = $this->BuscarSiguienteHabil($nva);

            $i++;
        } while ($i < $dias);

        return $nva;

    }

    private function ValidaFecha($fecha)
    {

        $ds = date('N', strtotime($fecha));

        if ($ds == 6 || $ds == 7) {
            return false;
        }

        $partes = explode('-', $fecha);

        $seleccionado = Festivo::where('dia', $partes[2])
            ->where('mes', $partes[1])
            ->where('year', $partes[0])
            ->get()
            ->first();

        if ($seleccionado != null) {
            return false;
        }

        return true;
    }

    public function BuscarSiguienteHabil($fecha)
    {
        $date1 = str_replace('-', '/', $fecha);
        $fecha = date('Y-m-d', strtotime($date1 . "+1 days"));

        if ($this->ValidaFecha($fecha) == false) {
            return $this->BuscarSiguienteHabil($fecha);
        }

        return $fecha;
    }

}
