<?php

use Daite\Coopdigital\Http\Controllers\ControladorAfiliar;
use Daite\Coopdigital\Http\Middleware\VerificacionInicioSesion;
use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use Daite\Coopdigital\Mail\CorreoTransferencia;
use Daite\Coopdigital\Mail\CorreoRecuperarContrasena;
use Daite\Coopdigital\Mail\CorreoRegistro;

use Daite\Coopdigital\Http\Controllers\ControladorInicioSesion;
use Daite\Coopdigital\Http\Controllers\ControladorPanel;
use Daite\Coopdigital\Http\Controllers\ControladorConsultas;
use Daite\Coopdigital\Http\Controllers\ControladorContrasena;
use Daite\Coopdigital\Http\Controllers\ControladorRegistro;
use Daite\Coopdigital\Http\Controllers\ControladorReportes;


Route::group(['middleware' => ['web']], function() {
    Route::controller(ControladorInicioSesion::class) -> group(function() {

        Route::post('/iniciarSesion', 'iniciarSesion') -> name('iniciarSesion');
        Route::get('/cerrarSesion', 'cerrarSesion') -> name('cerrarSesion');

    });

    Route::controller(ControladorContrasena::class) -> group(function() {

        Route::get('/recuperar', function() {

            return view('coopdigital::autenticacion.recuperar');

        })->name('recuperar');

        Route::post('/recuperarContrasena', 'recuperarContrasena') -> name('recuperarContrasena');

    });

    Route::get('correo/recuperarContrasena', function(Request $request) {

        if (!trim($request->correo)) return 0;

        $datosFormulario = [

          'correo' => $request->correo,
          'cedula' => $request->cedula,
          'usuario' => $request->usuario,
          'contrasena' => $request->contrasena

        ];

        Mail::to($datosFormulario['correo'])->send(new CorreoRecuperarContrasena($datosFormulario));

        return redirect() -> route('inicioSesion');

    });

    Route::get('correo/registro', function (Request $request) {

        if (!trim($request->correo)) return 0;

        $datosCorreo = [

            'nombreUsuario' => $request->nombreUsuario,
            'correo' => $request->correo,

        ];

        Mail::to($request->correo)->send(new CorreoRegistro($datosCorreo));

        return 1;

    });

    Route::controller(ControladorRegistro::class) -> group(function() {


        Route::get('/obtener', function() {

            return view('coopdigital::autenticacion.obtener');

        })->name('obtener');

        Route::get('/verificarRegistro', 'verificarRegistro') -> name('verificarRegistro');
        Route::get('/registrarSesion', 'registrarSesion') -> name('registrarSesion');

    });

    // Route::controller(ControladorAfiliar::class)->group(function() {

    //     Route::get('/afiliar/identificacion/{identificacion}', 'identificacion');
    //     Route::get('/afiliar/sexos', 'sexos');
    //     Route::get('/afiliar/provincias', 'provincias');
    //     Route::get('/afiliar/municipios', 'municipios');
    //     Route::get('/afiliar/sectores', 'sectores');

    // });

    // Route::get('/afiliar', function() {

    //     return view('coopdigital::autenticacion.afiliar');

    // })->name('afiliar');

    // Route::get('/afiliarse', function(Request $request) {

    //     if (empty($request['contrasena']))
    //         $request['contrasena'] = $request->clave
    //     ;

    //     if ($request->titulos)
    //         $request->titulos = json_decode($request->titulos, true)
    //     ;

    //     $validar = [
    //         'tipo_entidad',
    //         'identificacion',
    //         'primer_nombre',
    //         'primer_apellido',
    //         'id_genero',
    //         'telefono',
    //         'celular',
    //         'correo',
    //         'id_provincia',
    //         'id_municipio',
    //         'id_sector',
    //         'direccion',
    //         'usuario',
    //         'contrasena',
    //         'confirmarContrasena'
    //     ];

    //     if ($request['tipo_entidad'] === 'E')
    //         $validar = array_diff($validar, ['primer_apellido'])
    //     ;

    //     foreach ($validar as $indice => $campo) {

    //         if (empty($request[$campo]))
    //             return [(object) [
    //                 'estado' => 400,
    //                 'mensaje' => '¡Tienes que llenar el campo ' . $request->titulos[$campo] . '!',
    //                 'campo' => $campo
    //             ]]
    //         ;

    //     }

    //     $identificacion = DB::select(
    //         "SET NOCOUNT ON; EXEC [AppMovil].[p_traer_datos_cliente] ?, ?",
    //         ['', $request->identificacion]
    //     );

    //     if (count($identificacion))
    //         return [(object) [
    //             'estado' => 400,
    //             'mensaje' => "¡Esta identificación ya está en uso!",
    //             'campo' => 'identificacion'
    //         ]]
    //     ;

    //     $usuario = DB::select(
    //         "SET NOCOUNT ON; EXEC [AppMovil].[p_validar_valores_pantalla] ?, ?",
    //         [$request->usuario, 'NUEVO_USUARIO']
    //     )[0];

    //     if ($usuario->existe)
    //         return [(object) [
    //             'estado' => 400,
    //             'mensaje' => "¡Este nombre de usuario ya está en uso!",
    //             'campo' => 'usuario'
    //         ]]
    //     ;

    //     if ($request['contrasena'] !== $request['confirmarContrasena'])
    //         return [(object) [
    //             'estado' => 400,
    //             'mensaje' => '¡Las contraseñas no coinciden!',
    //             'campo' => 'confirmarContrasena'
    //         ]]
    //     ;

    //     $afiliacion = DB::select("
    //         SET NOCOUNT ON;
    //         EXEC [AppMovil].[p_registrar_afiliacion] ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
    //     ", [
    //         $request->tipo_identificacion,
    //         $request->identificacion,
    //         $request->primer_nombre,
    //         $request->segundo_nombre,
    //         $request->primer_apellido,
    //         $request->segundo_apellido,
    //         $request->correo,
    //         $request->telefono,
    //         $request->celular,
    //         $request->usuario,
    //         $request->contrasena,
    //         $request->genero,
    //         $request->id_provincia,
    //         $request->id_municipio,
    //         $request->id_sector,
    //         $request->direccion
    //     ]);

    //     return [(object) [
    //         'estado' => 200,
    //         'mensaje' => '¡Solicitud de afiliación enviada con éxito!'
    //     ]];

    // })->name('afiliarse');

    Route::middleware([VerificacionInicioSesion::class])->group(function() {

        Route::get('/', [ControladorInicioSesion::class, 'inicioSesion']) -> name('inicioSesion');

        Route::controller(ControladorPanel::class) -> group(function() {

            Route::get('panel', 'inicio') -> name('panel.inicio');
            Route::get('panel/ultimasTransacciones', 'ultimasTransacciones') -> name('panel.ultimasTransacciones');
            Route::get('panel/prestamos', 'prestamos') -> name('panel.prestamos');
            Route::get('panel/pagos/prestamos', 'pagosPrestamos') -> name('panel.pagos.prestamos');
            Route::get('panel/lineasCredito', 'lineasCredito') -> name('panel.lineasCredito');
            Route::get('panel/cuentas', 'cuentas') -> name('panel.cuentas');
            Route::get('panel/estadisticasCuentas', 'estadisticasCuentas') -> name('panel.estadisticasCuentas');
            Route::get('panel/transacciones', 'transacciones') -> name('panel.transacciones');
            Route::get('panel/pagarServicios', 'pagarServicios') -> name('panel.pagarServicios');
            Route::get('panel/transferencias', 'transferencias') -> name('panel.transferencias');
            Route::get('panel/certificados', 'certificados') -> name('panel.certificados');
            Route::get('panel/transacciones/certificados', 'transaccionesCertificados') -> name('panel.transacciones.certificados');
            Route::get('panel/facturas', 'facturas') -> name('panel.facturas');
            Route::get('panel/pagos/facturas', 'pagosFacturas') -> name('panel.pagos.facturas');
            Route::get('panel/descuentoNomina', 'descuentoNomina') -> name('panel.descuentoNomina');
            Route::get('panel/proximosDescuentos', 'proximosDescuentos') -> name('panel.proximosDescuentos');
            Route::get('panel/cambiarAhorroAporte', 'cambiarAhorroAporte') -> name('panel.cambiarAhorroAporte');
            Route::get('panel/variablesFinancieras', 'variablesFinancieras') -> name('panel.variablesFinancieras');
            Route::get('panel/reportes', 'reportes') -> name('panel.reportes');
            Route::get('panel/directivos', 'directivos') -> name('panel.directivos');
            Route::get('panel/calculadoraPrestamos', 'calculadoraPrestamos') -> name('panel.calculadoraPrestamos');
            Route::get('panel/perfil/configuracion', 'configuracion') -> name('panel.perfil.configuracion');
            Route::get('panel/solicitudesRetiros', 'solicitudesRetiros') -> name('panel.solicitudesRetiros');
            Route::get('panel/solicitarRetiro', 'solicitarRetiro') -> name('panel.solicitarRetiro');
        });

        Route::controller(ControladorConsultas::class) -> group(function() {

            // Enlace para ejecutar consultas
            Route::get('consulta', 'consulta');
            Route::post('consulta2', 'consulta2');

            Route::post('/traerVariablesFinancierasPrestamos', 'traerVariablesFinancierasPrestamos')
            ->name('traerVariablesFinancierasPrestamos');
            Route::get('/traerFiltrosVariablesFinancieras', 'traerFiltrosVariablesFinancieras')
            ->name('traerFiltrosVariablesFinancieras');

        });

        Route::get('correo/transferencia', function(Request $request) {

            $datosCorreo = [

                'nombreUsuario' => $request->nombreUsuario,

                'correo' => $request->correo,

                'cuentaOrigen' => $request->cuentaOrigen,
                'cuentaDestino' => $request->cuentaDestino,
                'monto' => $request->monto,
                'concepto' => $request->concepto

            ];

            Mail::to($request->correo)->send(new CorreoTransferencia($datosCorreo));

            return redirect() -> route('panel.transferencias');

        });

        Route::controller(ControladorReportes::class)->group(function() {
            Route::post('/traerResumen', 'traerResumen')->name('traerResumen');
            Route::get('/traerEstadisticas', 'traerEstadisticas')->name('traerEstadisticas');
        });

    });
});



