<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Solicitante;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

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

    public function getUnicoSol($id)
    {
        $solicitante = Solicitante::find($id);

        return (new Response($solicitante, 200));
    }

    public function ReadSolicitantes($id_tipo_sol)
    {
        $Naturales = Solicitante::where('id_tipo_solicitante', $id_tipo_sol)
            ->orderBy('apellidos', 'asc')
            ->orderBy('nombres', 'asc')
            ->get();

        return (new Response($Naturales, 200));
    }

    public function ReadALL()
    {
        try {
            $sol = Solicitante::select('solicitante.*',
                'tipo_solicitante.nombre as NombreTipo',
                \DB::raw("trim(concat(solicitante.nombres, ' ', solicitante.apellidos)) as nombre_completo"))
                ->join('tipo_solicitante', 'solicitante.id_tipo_solicitante', '=', 'tipo_solicitante.id')
                ->where('solicitante.estado', 1)
                ->orderBy('solicitante.apellidos', 'asc')
                ->orderBy('solicitante.nombres', 'asc')
                ->get();

            $rta = [];

            /* foreach ($sol as $s) {
            $rta[] = [
            "id" => $s->id,
            "tipo_documento" => $s->tipo_documento,
            "identificacion" => $s->identificacion,
            "nombres" => $s->nombres,
            "apellidos" => $s->apellidos,
            "nombre_completo" => trim($s->nombres . ' ' . $s->apellidos),
            "direccion" => $s->direccion,
            "telefono" => $s->telefono,
            "celular" => $s->celular,
            "email" => $s->email,
            "tipo_solicitante" => $s->tipoSolicitante,
            ];
            } */

            return (new Response($sol, 200));
        } catch (\Exception $e) {
            return $e->getMessage();
        }
    }

    public function CreateSolicitanteNatural(Request $request)
    {
        $datos = json_decode($request->datos);

        $sol = new Solicitante();
        $sol->tipo_documento = $datos[0]->tipo_documento;
        $sol->identificacion = $datos[0]->identificacion;
        $sol->nombres = $datos[0]->nombres;
        $sol->apellidos = $datos[0]->apellidos;
        $sol->direccion = $datos[0]->direccion;
        $sol->telefono = $datos[0]->telefono;
        $sol->celular = $datos[0]->celular;
        $sol->email = $datos[0]->email;
        $sol->id_tipo_solicitante = $datos[0]->id_tipo_solicitante;
        $sol->estado = 1;

        $sol->save();

        return (new Response($sol, 200));

    }

    public function UpdateSolicitanteNatural(Request $request)
    {
        $datos = json_decode($request->datos);

        $sol = Solicitante::find($datos[0]->id);
        $sol->tipo_documento = $datos[0]->tipo_documento;
        $sol->identificacion = $datos[0]->identificacion;
        $sol->nombres = $datos[0]->nombres;
        $sol->apellidos = $datos[0]->apellidos;
        $sol->direccion = $datos[0]->direccion;
        $sol->telefono = $datos[0]->telefono;
        $sol->celular = $datos[0]->celular;
        $sol->email = $datos[0]->email;
        $sol->id_tipo_solicitante = $datos[0]->id_tipo_solicitante;
        $sol->estado = 1;

        $sol->save();

        return (new Response($sol, 200));

    }

    public function CreateSolicitanteJuridica(Request $request)
    {
        $datos = json_decode($request->datos);

        $sol = new Solicitante();
        $sol->tipo_documento = "NIT";
        $sol->identificacion = $datos[0]->identificacion;
        $sol->nombres = $datos[0]->nombres;
        $sol->apellidos = "";
        $sol->direccion = $datos[0]->direccion;
        $sol->telefono = $datos[0]->telefono;
        $sol->celular = $datos[0]->celular;
        $sol->email = $datos[0]->email;
        $sol->id_tipo_solicitante = $datos[0]->id_tipo_solicitante;
        $sol->estado = 1;

        $sol->save();

        return (new Response($sol, 200));

    }

    public function UpdateSolicitanteJuridica(Request $request)
    {
        $datos = json_decode($request->datos);

        $sol = Solicitante::find($datos[0]->id);
        $sol->tipo_documento = "NIT";
        $sol->identificacion = $datos[0]->identificacion;
        $sol->nombres = $datos[0]->nombres;
        $sol->apellidos = "";
        $sol->direccion = $datos[0]->direccion;
        $sol->telefono = $datos[0]->telefono;
        $sol->celular = $datos[0]->celular;
        $sol->email = $datos[0]->email;
        $sol->id_tipo_solicitante = $datos[0]->id_tipo_solicitante;
        $sol->estado = 1;

        $sol->save();

        return (new Response($sol, 200));

    }

    public function CreateSolicitanteEntidad(Request $request)
    {
        $datos = json_decode($request->datos);

        $sol = new Solicitante();
        $sol->tipo_documento = "";
        $sol->identificacion = "";
        $sol->nombres = $datos[0]->nombres;
        $sol->apellidos = "";
        $sol->direccion = $datos[0]->direccion;
        $sol->telefono = $datos[0]->telefono;
        $sol->celular = $datos[0]->celular;
        $sol->email = $datos[0]->email;
        $sol->id_tipo_solicitante = $datos[0]->id_tipo_solicitante;
        $sol->estado = 1;

        $sol->save();

        return (new Response($sol, 200));

    }

    public function UpdateSolicitanteEntidad(Request $request)
    {
        $datos = json_decode($request->datos);
        $sol = Solicitante::find($datos[0]->id);
        $sol->tipo_documento = "";
        $sol->identificacion = "";
        $sol->nombres = $datos[0]->nombres;
        $sol->apellidos = "";
        $sol->direccion = $datos[0]->direccion;
        $sol->telefono = $datos[0]->telefono;
        $sol->celular = $datos[0]->celular;
        $sol->email = $datos[0]->email;
        $sol->id_tipo_solicitante = $datos[0]->id_tipo_solicitante;
        $sol->estado = 1;

        $sol->save();

        return (new Response($sol, 200));

    }
}
