<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\Roles\RolController;
use App\Http\Controllers\Roles\PermissionController;
use App\Http\Controllers\GradoController;
use App\Http\Controllers\ArmaController;
use App\Http\Controllers\EspecialidadeController;
use App\Http\Controllers\PersonaController;
use App\Http\Controllers\UnidadController;
use App\Http\Controllers\PushController;
use App\Http\Controllers\UsuarioController;
use App\Http\Controllers\MisionController;
use App\Http\Controllers\ReporteController;

/*Route::get('/user', function (Request $request) {
    return $request->user();
})->middleware('auth:sanctum');*/

Route::group([
    //'middleware' => 'api',
    'prefix' => 'auth'
], function ($router) {
    Route::post('/register', [AuthController::class, 'register'])->name('register');
    Route::post('/login', [AuthController::class, 'login'])->name('login');
    Route::post('/logout', [AuthController::class, 'logout'])->middleware(['auth:api', 'jwt.csrf'])->name('logout');
    Route::post('/refresh', [AuthController::class, 'refresh'])->middleware(['auth:api', 'jwt.csrf'])->name('refresh');
    Route::post('/me', [AuthController::class, 'me'])->middleware(['auth:api', 'jwt.csrf'])->name('me');
    Route::post('/change-password', [AuthController::class, 'changePassword'])->middleware(['auth:api', 'jwt.csrf'])->name('change-password');

    Route::post('/savemonitoreo',[AuthController::class, 'savemonitoreo'])->middleware(['auth:api', 'jwt.csrf'])->name('savemonitoreo');
});

Route::group([
	"middleware" => ["auth:api", "jwt.csrf"]
], function($router) {
	Route::resource("roles",RolController::class);
	Route::resource("permissions",PermissionController::class);

    Route::resource("grados",GradoController::class);
    Route::resource("armas",ArmaController::class);
    Route::resource("especialidades",EspecialidadeController::class);
    Route::post("personalist",[PersonaController::class, 'index']);
    Route::resource("personas",PersonaController::class);
    Route::post("getgrados",[PersonaController::class, 'getgrados']);
    Route::post("getespecialidades",[PersonaController::class, 'getespecialidades']);
    Route::post("getarmas",[PersonaController::class, 'getarmas']);

    Route::resource("users",UsuarioController::class);
    Route::get("getunidades",[UsuarioController::class, 'getunidades']);
    Route::get("getroles",[UsuarioController::class, 'getroles']);
    Route::post("getpersonal",[UsuarioController::class, 'getpersonal']);

    Route::resource("unidades",UnidadController::class);
    Route::post("unidades/{id}/logo",[UnidadController::class, 'updateLogo'])->middleware('permission:edit_unidad');
    Route::patch("unidades/{id}/estado",[UnidadController::class, 'toggleEstado'])->middleware('permission:edit_unidad');
    Route::post("getunidades",[UnidadController::class, 'getunidades']);
    Route::get("mapaunisups",[UnidadController::class,'mapaunisups']);

    Route::get("mapadivision",[UnidadController::class,'mapadivision']);
    Route::get("markers",[UnidadController::class,'markers']);

    Route::get("markersunidad",[UnidadController::class,'markersunidad']);

    Route::resource("misiones",MisionController::class);
    Route::get("listmisionesunidades",[MisionController::class,'listmisionesunidades']);
    Route::get("listmisionesunidad/{uni_cod}",[MisionController::class,'listmisionesunidad']);
    Route::get("listmisionespersonal/{mision_cod}",[MisionController::class,'listmisionespersonal']);
    Route::post("storemisionespersonal",[MisionController::class,'storemisionespersonal']);
    Route::delete("destroymisionespersonal/{mitem_cod}",[MisionController::class,'destroymisionespersonal']);
    Route::get("listmisionesdivisiones",[MisionController::class,'listmisionesdivisiones']);

    Route::get('get-unidades-padre', [UnidadController::class, 'getUnidadesPadre']);
    Route::get('get-unidades-hijas', [UnidadController::class, 'getUnidadesHijas']);
    Route::get('get-unidad/{codigo}', [UnidadController::class, 'getUnidadById']);

    Route::get('divisiones',[UnidadController::class, 'divisiones']);
    Route::get('unidependientes/{uni_cod}',[UnidadController::class, 'unidependientes']);

    Route::get('listpuestos/{uni_cod}',[UnidadController::class, 'listpuestos']);
    Route::post('storepuesto',[UnidadController::class, 'storepuesto']);
    Route::get('showpuesto/{uni_cod}',[UnidadController::class, 'showpuesto']);
    Route::put('updatepuesto/{puesto_cod}',[UnidadController::class, 'updatepuesto']);
    Route::delete('destroypuesto/{puesto_cod}',[UnidadController::class, 'destroypuesto']);

    Route::get('getpuestosunidad/{uni_cod}',[UnidadController::class, 'getpuestosunidad']);
    Route::get('getmisionespuestos/{puesto_cod}',[UnidadController::class, 'getmisionespuestos']);
    Route::get('markers-por-mision/{mision_cod}', [UnidadController::class, 'getMarkersPorMision']);
    Route::get('puestogeojson/{puesto_cod}', [UnidadController::class, 'puestogeojson']);

    Route::get('listunidadesdependientes/{uni_cod}',[UnidadController::class, 'listunidadesdependientes']);
    Route::get('dashboard',[UnidadController::class, 'dashboard']);
});

Route::post('/token', [PushController::class, 'saveToken']);
Route::get('/send', [PushController::class, 'send']);

Route::get('/reportes',[ReporteController::class,'reportes']);
Route::get('/listparamreportes',[ReporteController::class,'listparamreportes']);
