<?php

use App\Exports\AudienciasExport;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\HomeController;

Route::get('/', function () {
    return view('auth.login');
});

Auth::routes();
Route::get('sso-login', [App\Http\Controllers\SsoAutenticacionSeguridadController::class, 'autenticacion']);
Route::get('/refresh-captcha', [App\Http\Controllers\Auth\LoginController::class, 'refreshCaptcha'])->name('refresh-captcha');
Route::middleware(['auth'])->group(function(){

    Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
   

    //User
    Route::post('users/store',[App\Http\Controllers\UserController::class,'store'])->name('users.store')->middleware('permission:users.create');
    Route::get('users',[App\Http\Controllers\UserController::class,'index'])->name('users.index')->middleware('permission:users.index');
    Route::get('users/create',[App\Http\Controllers\UserController::class,'create'])->name('users.create')->middleware('permission:users.create');
    Route::put('users/{user}',[App\Http\Controllers\UserController::class,'update'])->name('users.update')->middleware('permission:users.edit');
    Route::get('users/{user}',[App\Http\Controllers\UserController::class,'show'])->name('users.show')->middleware('permission:users.show');
    Route::delete('users/{user}',[App\Http\Controllers\UserController::class,'destroy'])->name('users.destroy')->middleware('permission:users.destroy');
    Route::get('users/{user}/edit',[App\Http\Controllers\UserController::class,'edit'])->name('users.edit')->middleware('permission:users.edit');
     
    //Roles
    Route::post('roles/store',[App\Http\Controllers\RoleController::class,'store'])->name('roles.store')->middleware('permission:roles.create');
    Route::get('roles',[App\Http\Controllers\RoleController::class,'index'])->name('roles.index')->middleware('permission:roles.index');
    Route::get('roles/create',[App\Http\Controllers\RoleController::class,'create'])->name('roles.create')->middleware('permission:roles.create');
    Route::put('roles/{role}',[App\Http\Controllers\RoleController::class,'update'])->name('roles.update')->middleware('permission:roles.edit');
    Route::get('roles/{role}',[App\Http\Controllers\RoleController::class,'show'])->name('roles.show')->middleware('permission:roles.show');
    Route::delete('roles/{role}',[App\Http\Controllers\RoleController::class,'destroy'])->name('roles.destroy')->middleware('permission:roles.destroy');
    Route::get('roles/{role}/edit',[App\Http\Controllers\RoleController::class,'edit'])->name('roles.edit')->middleware('permission:roles.edit');

    // Route::resource('casos', App\Http\Controllers\CasoController::class);

    //Casos
    Route::post('procesos/store',[App\Http\Controllers\ProcesoController::class,'store'])->name('procesos.store')->middleware('permission:procesos.create');
    Route::get('procesos-judiciales',[App\Http\Controllers\ProcesoController::class,'index'])->name('procesos.index')->middleware('permission:procesos.index');
    Route::get('nuevo-proceso',[App\Http\Controllers\ProcesoController::class,'create'])->name('procesos.create')->middleware('permission:procesos.create');
    Route::put('procesos/{proceso}',[App\Http\Controllers\ProcesoController::class,'update'])->name('procesos.update')->middleware('permission:procesos.edit');
    Route::get('procesos/{proceso}',[App\Http\Controllers\ProcesoController::class,'show'])->name('procesos.show')->middleware('permission:procesos.show');
    Route::delete('procesos/{proceso}',[App\Http\Controllers\ProcesoController::class,'destroy'])->name('procesos.destroy')->middleware('permission:procesos.destroy');
    Route::get('procesos/{proceso}/edit',[App\Http\Controllers\ProcesoController::class,'edit'])->name('procesos.edit')->middleware('permission:procesos.edit');
    Route::get('datos-proceso', [App\Http\Controllers\ProcesoController::class, 'datos_proceso'])->name('datos_proceso');

    Route::post('seguimientos/store', [App\Http\Controllers\SeguimientoController::class,'store'])->name('seguimientos.store')->middleware('permission:seguimientos.create');
    Route::get('ver-seguimientos', [App\Http\Controllers\SeguimientoController::class,'index'])->name('seguimientos.index')->middleware('permission:seguimientos.index');
    Route::get('seguimientos/create/{proceso}',[App\Http\Controllers\SeguimientoController::class,'create'])->name('seguimientos.create')->middleware('permission:seguimientos.create');
    Route::get('ver-adjuntos-seguimiento/{proceso}',[App\Http\Controllers\SeguimientoController::class,'ver_adjuntos'])->name('seguimientos.ver_adjuntos')->middleware('permission:seguimientos.create');
    Route::delete('seguimientos/{seguimiento}',[App\Http\Controllers\SeguimientoController::class,'destroy'])->name('seguimientos.destroy')->middleware('permission:seguimientos.destroy');
    Route::get('seguimientos/{seguimiento}/edit',[App\Http\Controllers\SeguimientoController::class,'edit'])->name('seguimientos.edit')->middleware('permission:seguimientos.edit');
    Route::put('seguimientos/{seguimiento}',[App\Http\Controllers\SeguimientoController::class,'update'])->name('seguimientos.update')->middleware('permission:seguimientos.edit');
    Route::get('procesos/{proceso}/pdf', [App\Http\Controllers\ProcesoController::class, 'pdf'])->name('procesos.pdf');
    Route::get('procesos-finalizados', [App\Http\Controllers\ProcesoController::class, 'procesos_finalizados'])->name('procesos.finalizados');

    Route::post('audiencias/store',[App\Http\Controllers\AudienciaController::class,'store'])->name('audiencias.store')->middleware('permission:audiencias.create');
    Route::get('audiencias-vigentes',[App\Http\Controllers\AudienciaController::class,'index'])->name('audiencias.index')->middleware('permission:audiencias.index');
    Route::get('nueva-audiencia',[App\Http\Controllers\AudienciaController::class,'create'])->name('audiencias.create')->middleware('permission:audiencias.create');
    Route::put('audiencias/{audiencia}',[App\Http\Controllers\AudienciaController::class,'update'])->name('audiencias.update')->middleware('permission:audiencias.edit');
    Route::get('audiencias/{audiencia}',[App\Http\Controllers\AudienciaController::class,'show'])->name('audiencias.show')->middleware('permission:audiencias.show');
    Route::delete('audiencias/{audiencia}',[App\Http\Controllers\AudienciaController::class,'destroy'])->name('audiencias.destroy')->middleware('permission:audiencias.destroy');
    Route::get('audiencias/{audiencia}/edit',[App\Http\Controllers\AudienciaController::class,'edit'])->name('audiencias.edit')->middleware('permission:audiencias.edit');

    Route::get('audiencias-finalizadas', [App\Http\Controllers\AudienciaController::class, 'audiencias_procesos_finalizados'])->name('audiencias.finalizadas');
    
    Route::get('/home/audiencias', [HomeController::class, 'audienciasCalendar'])->name('home.audiencias.calendar');
    Route::get('/audiencias/export/excel', function () {
        return Excel::download(new AudienciasExport, 'audiencias_juridicas_al_' . date('Y-m-d') . '.xlsx');
    })->name('audiencias.export.excel');

    Route::post('proceso-participantes/store', [App\Http\Controllers\ProcesoParticipanteController::class,'store'])->name('proceso_participantes.store')->middleware('permission:proceso_participantes.create');
    Route::get('ver-participantes', [App\Http\Controllers\ProcesoParticipanteController::class,'index'])->name('proceso_participantes.index')->middleware('permission:proceso_participantes.index');
    Route::get('proceso-participantes/create/{proceso}',[App\Http\Controllers\ProcesoParticipanteController::class,'create'])->name('proceso_participantes.create')->middleware('permission:proceso_participantes.create');
    Route::delete('proceso-participantes/{proceso_participante}',[App\Http\Controllers\ProcesoParticipanteController::class,'destroy'])->name('proceso_participantes.destroy')->middleware('permission:proceso_participantes.destroy');
    Route::get('proceso-participantes/{proceso_participante}/edit',[App\Http\Controllers\ProcesoParticipanteController::class,'edit'])->name('proceso_participantes.edit')->middleware('permission:proceso_participantes.edit');
    Route::put('proceso-participantes/{proceso_participante}',[App\Http\Controllers\ProcesoParticipanteController::class,'update'])->name('proceso_participantes.update')->middleware('permission:proceso_participantes.edit');

    Route::post('parametros/store', [App\Http\Controllers\ParametroController::class,'store'])->name('parametros.store')->middleware('permission:parametros.create');

    Route::get('provincias-por-departamento', [App\Http\Controllers\ParCiudadController::class, 'provincias'])->name('provincias');
    Route::get('municipios-por-provincia', [App\Http\Controllers\ParCiudadController::class, 'municipios'])->name('municipios');
    Route::get('ciudades-por-municipio', [App\Http\Controllers\ParCiudadController::class, 'ciudades'])->name('ciudades');

    Route::post('requerimientos/store',[App\Http\Controllers\RequerimientoController::class,'store'])->name('requerimientos.store')->middleware('permission:requerimientos.create');
    Route::get('requerimientos',[App\Http\Controllers\RequerimientoController::class,'index'])->name('requerimientos.index')->middleware('permission:requerimientos.index');
    Route::get('requerimientos/create/{proceso}',[App\Http\Controllers\RequerimientoController::class,'create'])->name('requerimientos.create')->middleware('permission:requerimientos.create');
    Route::put('requerimientos/{requerimiento}',[App\Http\Controllers\RequerimientoController::class,'update'])->name('requerimientos.update')->middleware('permission:requerimientos.edit');
    Route::get('requerimientos/{requerimiento}',[App\Http\Controllers\RequerimientoController::class,'show'])->name('requerimientos.show')->middleware('permission:requerimientos.show');
    Route::delete('requerimientos/{requerimiento}',[App\Http\Controllers\RequerimientoController::class,'destroy'])->name('requerimientos.destroy')->middleware('permission:requerimientos.destroy');
    Route::get('requerimientos/{requerimiento}/edit',[App\Http\Controllers\RequerimientoController::class,'edit'])->name('requerimientos.edit')->middleware('permission:requerimientos.edit');
    Route::put('/requerimientos/{requerimiento}/eliminar-adjunto',[App\Http\Controllers\RequerimientoController::class, 'destroyAdjunto'])->name('requerimientos.adjunto.destroy');


    Route::get('ver-adjuntos-requerimiento/{proceso}',[App\Http\Controllers\RequerimientoController::class,'ver_adjuntos'])->name('requerimientos.ver_adjuntos')->middleware('permission:requerimientos.create');

    Route::post('asignaciones/store',[App\Http\Controllers\AsignacionProcesoController::class,'store'])->name('asignaciones.store')->middleware('permission:asignaciones.create');
    Route::get('asignaciones-registradas',[App\Http\Controllers\AsignacionProcesoController::class,'index'])->name('asignaciones.index')->middleware('permission:asignaciones.index');
    Route::get('asignaciones/create',[App\Http\Controllers\AsignacionProcesoController::class,'create'])->name('asignaciones.create')->middleware('permission:asignaciones.create');
    Route::put('asignaciones/{asignacionProceso}',[App\Http\Controllers\AsignacionProcesoController::class,'update'])->name('asignaciones.update')->middleware('permission:asignaciones.edit');
    Route::get('asignaciones/{asignacionProceso}',[App\Http\Controllers\AsignacionProcesoController::class,'show'])->name('asignaciones.show')->middleware('permission:asignaciones.show');
    Route::delete('asignaciones/{asignacionProceso}',[App\Http\Controllers\AsignacionProcesoController::class,'destroy'])->name('asignaciones.destroy')->middleware('permission:asignaciones.destroy');
    Route::get('asignaciones/{asignacionProceso}/edit',[App\Http\Controllers\AsignacionProcesoController::class,'edit'])->name('asignaciones.edit')->middleware('permission:asignaciones.edit');

    //PARAMETROS
    Route::get('/parametros', [App\Http\Controllers\ParametroController::class, 'index'])->name('parametros.index')->middleware('permission:parametros.index');
    Route::get('/parametros/get-by-tipo', [App\Http\Controllers\ParametroController::class, 'getByTipo'])->name('parametros.get-by-tipo')->middleware('permission:parametros.index');
    Route::post('/parametros', [App\Http\Controllers\ParametroController::class, 'store'])->name('parametros.store')->middleware('permission:parametros.create');
    Route::get('/parametros/{id}', [App\Http\Controllers\ParametroController::class, 'show'])->name('parametros.show')->middleware('permission:parametros.show');
    Route::put('/parametros/{id}', [App\Http\Controllers\ParametroController::class, 'update'])->name('parametros.update')->middleware('permission:parametros.edit');
    Route::delete('/parametros/{id}', [App\Http\Controllers\ParametroController::class, 'destroy'])->name('parametros.destroy')->middleware('permission:parametros.destroy');

});
