<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Solicitud;
use App\Http\Controllers\reciboController;

class solicitudController extends Controller
{
    function enviar(Request $request){

        $vldc = $this->validarCampos($request);

        $reciboCotlr = new reciboController();

        if ($vldc == true) {
            $vldc = $this->guardar($request);

            if ($vldc == true) {
                $requestEncpld = $this->encapsular($request);

                $dataRecibo = $reciboCotlr->enviar($requestEncpld);

                if ($dataRecibo == 'Error') {
                    return redirect()->route('vistaFormulario');
                } else {
                    return view('recibo', compact('dataRecibo'));
                }
            
            } 
            // else {

            // }
            
        } else {
            return redirect()->route('vistaFormulario');
        }
    }

    function validarCampos($dataForm){
        $valdCond = false;

        $campos = [
            'nombre_completo',
            'tipo_documento',
            'documento',
            'correo_pers',
            'num_cel',
            'universidad',
            'sede',
            'departamento',
            'edad',
            'alergias',
            'dieta',
            'eps',
            'discapacidad',
            'nombre_emergencia_1',
            'num_emergencia_1',
            'Parentezco_1',
        ];

        $camposOpcnls = [
            'codigo_id',
            'correo_inst',
            'num_whatsapp',
            'nombre_emergencia_2',
            'num_emergencia_2',
            'Parentezco_2'
        ];
        
        $camposDepndts =[
            'otro_tipo_documento' => 'tipo_documento',
            'otro_universidad' => 'universidad',
            'cual_alergias' => 'alergias',
            'cual_discapacidad' => 'discapacidad'
        ];

        if ($dataForm->has($campos) && $dataForm->has($camposOpcnls)) {
            $valdCond = true;

            foreach ($campos as $cmp) {
                if (empty($dataForm[$cmp])) {
                    $valdCond = false;
                    break;
                }
            }

            foreach ($camposDepndts as $clave => $cmp){
                // $valdCond = true;
                if ($dataForm[$cmp] == 'OTRO' || $dataForm[$cmp] == 'Si') {
                    // dd($dataForm);
                    if (empty($dataForm[$clave])) {
                        $valdCond = false;
                        break;
                    }
                }
            }
        }

        return $valdCond;
    }

    function guardar($resp){
        $cond = true;

        //El nombre de la key/clave del array debe ser igual al nombre de la columna en la base de datos (incluye mayusculas y minusculas)
        $data = [    
            'NOMBRES_COMPLETO' => $resp['nombre_completo'],
            'TIPO_DOCUMENTO' => $resp['tipo_documento'],
            'OTRO_TIPO_DOCUMENTO' => ($resp->has('otro_tipo_documento')) ? $resp['otro_tipo_documento'] : null,
            'DOCUMENTO' => $resp['documento'],
            'CODIGO_ID' => $resp['codigo_id'],
            'CORREO_INST' => $resp['correo_inst'],
            'CORREO_PERS' => $resp['correo_pers'],
            'NUM_CEL' => $resp['num_cel'],
            'NUM_WHATSAPP' => $resp['num_whatsapp'],
            'UNIVERSIDAD' => $resp['universidad'],
            'OTRA_UNIVERSIDAD' => ($resp->has('otro_universidad')) ? $resp['otro_universidad'] : null,
            'SEDE' => $resp['sede'],
            'DEPARTAMENTO' => $resp['departamento'],
            'EDAD' => $resp['edad'],
            'ALERGIAS' => $resp['alergias'],
            'CUAL_ALERGIAS' => ($resp->has('cual_alergias')) ? $resp['cual_alergias'] : null,
            'DIETA' => $resp['dieta'],
            'EPS' => $resp['eps'],
            'DISCAPACIDAD' => $resp['discapacidad'],
            'CUAL_DISCAPACIDAD' => ($resp->has('cual_discapacidad')) ? $resp['cual_discapacidad'] : null,
            'NOMBRE_EMERGENCIA_1' => $resp['nombre_emergencia_1'],
            'NUMERO_EMERGENCIA_1' => $resp['num_emergencia_1'],
            'PARENTESCO_1' => $resp['Parentezco_1'],
            'NOMBRE_EMERGENCIA_2' => $resp['nombre_emergencia_2'],
            'NUMERO_EMERGENCIA_2' => $resp['num_emergencia_2'],
            'PARENTESCO_2' => $resp['Parentezco_2']
        ];
        
        try {
            Solicitud::insert($data);
        } catch (\Throwable $th) {
            $cond = false;
        }

        return $cond;
    }

    function encapsular($data){
        $dataEncpsld = [
            'nombEvento' => 'Encuentro Nacional de Trabajo Social',
            'nombCliente' => $data["nombre_completo"],
            'tipoDoc' => ($data->has('otro_tipo_documento')) ? $data["otro_tipo_documento"] : $data["tipo_documento"],
            'numDoc' => $data["documento"],
            'correoPers' => $data["correo_pers"]
        ];

        return $dataEncpsld;
    }
}
