<?php

namespace App\Http\Controllers;

use App\Area;
use App\Estado_Radicado;
use App\Radicado;
use Illuminate\Http\Request;

class SearchController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function Buscar(Request $request)
    {
        try {
            $criterio = $request->criterio;
            $scriterio = '%' . $criterio . '%';

            //$estados = Estado_Radicado::where('esfinal', 0)->pluck('id')->toArray();

            $estados = Estado_Radicado::all()->pluck('id')->toArray();

            if (\Auth::user()->id_perfil == 1 || \Auth::user()->id_perfil == 3) {
                $areas = Area::all()->pluck('id')->toArray();
            } else {
                $areas = \Auth::user()->Areas->pluck('id')->toArray();
            }

            $rads = Radicado::select('radicado.*',
                'tipo_radicado.nombre as TipoRadicado',
                'users.name  as NombreUsuario',
                'area.nombre as NombreArea',
                'estado_radicado.nombre as NombreEstado',
                'estado_radicado.color',
                'estado_radicado.esfinal',
                'solicitantes',
                \DB::raw('fnFechaLimite(radicado.created_at, radicado.id_tipo_radicado) as FechaLimite'))

                ->join('tipo_radicado', 'radicado.id_tipo_radicado', '=', 'tipo_radicado.id')
                ->join('users', 'radicado.id_usuario', '=', 'users.id')
                ->join('area', 'radicado.id_area', '=', 'area.id')
                ->join('estado_radicado', 'radicado.id_estado', '=', 'estado_radicado.id')
                ->join('vRadicadoSolicitantes', 'radicado.id', '=', 'vRadicadoSolicitantes.id_radicado')

                ->whereIn('id_estado', $estados)
                ->whereIn('id_area', $areas)

                ->where(function ($query) use ($scriterio) {
                    $query->orWhere('codigo', 'like', $scriterio);
                    $query->orWhere('asunto', 'like', $scriterio);
                    //$query->orWhere('descripcion', 'like', $scriterio);
                    $query->orWhere('tipo_radicado.nombre', 'like', $scriterio);
                    $query->orWhere('area.nombre', 'like', $scriterio);
                    $query->orWhere('estado_radicado.nombre', 'like', $scriterio);
                    $query->orWhere('solicitantes', 'like', $scriterio);
                })

                ->orderBy('FechaLimite', 'ASC')
                ->get();

            return $rads;

        } catch (\Exception $e) {
            return $e->getMessage();
        }

    }

}
