<?php

namespace App\Http\Controllers;

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



class solicitudController extends Controller
{
    function enviar(Request $request){
        
        $this->validarCampos($request);

        $oferta = OfertaController::ObtenerOferta($request->input('curso'));
        if (!$oferta) return redirect()->back();
        
        // DB::beginTransaction();
        $solicitud = $this->guardar($request,  $oferta);
      
        
        if($solicitud){
            $reciboCotlr = new reciboController();
            $recibo = $reciboCotlr->guardar($solicitud);
            if($recibo){ 
                $campos_Recibo = $recibo->toArray();
                $campos_Recibo['documento'] = $solicitud->documento;
                $codigo =BarcodeController::setDataFormat($campos_Recibo);
                
                return view('recibo', compact('solicitud', 'recibo', 'codigo'));
            }
        } 


    }

    function validarCampos(Request $request){
        $request->validate([
            'nombre_completo' => 'required|string',
            'tipo_documento' => 'required|string',
            'otro_documento' => 'required_if:tipo_documento,OTRO',
            'documento' => 'required|integer',
            'correo_pers' => 'required|email',
            'num_cel' => 'required|numeric',
            'nivel' => 'required|integer',
            'departamento' => 'required|integer',
            'municipio' => 'required|integer',
            'curso' => 'required|integer',
            'precio' => 'required|numeric',
            'descuento' => 'required|integer',
            'total' => 'required|numeric',
        ], [
            'nombre_completo.required' => 'El campo del nombre es requerido',
            'nombre_completo.string' => 'El campo de nombre solo acepta texto',
            'tipo_documento.required' => 'El campo de tipo de identidad es requerido',
            'tipo_documento.string' => 'Elija uno de los valores del campo tipo de documento',
            'otro_documento.required_if' => 'El campo de otro documento es requerido',
            // 'otro_documento.string' => 'El campo de otro documento solo acepta texto',
            'documento.required' => 'El campo de numero de documento es requerido',
            'documento.integer' => 'El campo del numero de documento solo acepta numeros enteros',
            'correo_pers.required' => 'El campo del correo es requerido',
            'correo_pers.email' => 'El campo de nombre deber ser un correo válido',
            'num_cel.required' => 'El campo del numero celular es requerido',
            'num_cel.numeric' => 'El campo del numero celular solo acepta numeros',
            'nivel.required' => 'El campo del nivel es requerido',
            'nivel.numeric' => 'Elija uno de los valores del campo nivel',
            'curso.required' => 'El campo del curso es requerido',
            'curso.numeric' => 'Elija uno de los valores del campo curso',
            'departamento.required' => 'El campo del departamento es requerido',
            'departamento.numeric' => 'Elija uno de los valores del campo departamento',
            'municipio.required' => 'El campo del municipio es requerido',
            'municipio.numeric' => 'Elija uno de los valores del campo municipio',
            'precio.required' => 'El campo del precio es requerido',
            'precio.numeric' => 'El campo de precio solo acepta numeros',
            'descuento.required' => 'El campo del descuento es requerido',
            'descuento.integer' => 'El campo de descuento solo acepta numeros enteros',
            'total.required' => 'El campo del total es requerido',
            'total.numeric' => 'El campo de total solo acepta numeros',
        ]);
    }

    function guardar(Request $request, $oferta){

       $solicitud = new solicitud();
       $max = solicitud::max('consecutivo');
       //dd($max);
    
       $solicitud->consecutivo=($max !== null) ? $max +1 :1001 ; 
       $solicitud->nombres_completo=$request->input('nombre_completo');
       $solicitud->tipo_documento=$request->input('tipo_documento');
       $solicitud->otro_tipo_documento=($request->input('otro_documento')) ? $request->input('otro_documento') : null ;
       $solicitud->documento=$request->input('documento');
       $solicitud->correo_pers=$request->input('correo_pers');
       $solicitud->num_cel=$request->input('num_cel');
       $solicitud->nivel=$request->input('nivel');
       $solicitud->departamento=$request->input('departamento');
       $solicitud->municipio=$request->input('municipio');
       $solicitud->curso=$request->input('curso');
       $solicitud->precio=$oferta->precio;
       $solicitud->descuento=$oferta->descuento;
       $solicitud->total=$oferta->precio - ($oferta->precio * ($oferta->descuento));
   
       
        try {
           $solicitud->save();
           
            
        } catch (\Throwable $th) {
          // dd($th);
            return null;
        }

        return $solicitud;
    }
    
 
}
