diff --git a/app/Http/Controllers/InstitucionesController.php b/app/Http/Controllers/InstitucionesController.php new file mode 100644 index 0000000000000000000000000000000000000000..73de09cbb5e030c7bd0db09d8b62a6f177d3ba1a --- /dev/null +++ b/app/Http/Controllers/InstitucionesController.php @@ -0,0 +1,279 @@ +validate([ + 'nombre' => 'required|string|max:255', + 'RFC' => 'nullable|string|max:13', + 'aniversario' => 'nullable|date', + 'observaciones_inst' => 'nullable|string', + 'domicilio' => 'nullable|string', + 'codigo_postal' => 'nullable|integer', + 'localidad' => 'nullable|string', + 'imagen' => 'nullable|file|image|max:2048', + ]); + + // Depuración: inspeccionar los datos recibidos + //\Log::info('Datos recibidos:', $data); + + // Procesamiento y almacenamiento de la institución + DB::beginTransaction(); + try { + //$path_file = $this->storeProfilePicture($request); + $fieldsToCheck = [ + 'subgrupo_id', + ]; + $requestData = $request->all(); + foreach ($fieldsToCheck as $field) { + if (isset($requestData[$field]) && $requestData[$field] === "null") { + unset($requestData[$field]); + } + } + $request->replace($requestData); + $data = $request->all(); + // Crear la institución con los datos recibidos + $institucion = Instituciones::create($data); + + // Manejar los datos de teléfonos + if (!empty($data['telefonos'])) { + $this->storeTelefonos($institucion->id, $data['telefonos']); + } + + // Manejar los datos de redes sociales + if (!empty($data['redes_sociales'])) { + $this->storeRedesSociales($institucion->id, $data['redes_sociales']); + } + + DB::commit(); + return redirect()->route('instituciones.get')->with('success', 'Institución guardada correctamente'); + } catch (\Exception $e) { + DB::rollBack(); + return redirect()->route('instituciones.create')->withErrors('Hubo un problema al crear la institución: ' . $e->getMessage()); + } + } + + public function show(string $id) + { + return view('adminGen.instituciones.show', compact('instituciones')); + } + + public function edit(string $id) + { + $subgrupos = Subgrupo::all(); + $instituciones = Instituciones::findOrFail($id); + $instituciones->load('redesSocialesInst'); // Cargar relaciones si son necesarias + + // Puedes acceder a las redes sociales cargadas así: + $redes = $instituciones->redesSocialesInst; // Esto te dará una colección de redes sociales + + return view('adminGen.instituciones.edit', compact('instituciones', 'subgrupos', 'redes')); + } + + public function update(Request $request, string $id) + { + // Validar los datos + $validatedData = $request->validate([ + 'nombre' => 'required|string|max:255', + 'imagen' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + ]); + + $institucion = Instituciones::findOrFail($id); + + $fieldsToCheck = [ + 'subgrupo_id', + ]; + $requestData = $request->all(); + foreach ($fieldsToCheck as $field) { + if (isset($requestData[$field]) && $requestData[$field] === "null") { + unset($requestData[$field]); + } + } + + $request->replace($requestData); + + // Actualizar los datos principales de la institución + $institucion->update($validatedData); + + // Manejar la imagen de perfil si se sube una nueva + if ($request->hasFile('imagen')) { + // Eliminar la imagen de perfil anterior si existe + if ($institucion->imagen) { + Storage::delete('public/' . $institucion->imagen); + } + + // Guardar la nueva imagen de perfil + $path_file = $this->storeProfilePicture($request); + $institucion->imagen = $path_file; + $institucion->save(); // Guardar los cambios en la institución + } + + // Manejar los teléfonos + if ($request->has('prefijo')) { + $telefonos = collect($request->input('prefijo'))->map(function($prefijo, $index) use ($request) { + return [ + 'prefijo' => $prefijo, + 'lada' => $request->input('lada')[$index] ?? null, + 'numero' => $request->input('numero')[$index] ?? null, + 'tipo' => $request->input('tipo')[$index] ?? null, + 'estatus' => $request->input('estatus')[$index] ?? null, + 'ext' => $request->input('ext')[$index] ?? null, + 'id_radio' => $request->input('id_radio')[$index] ?? null, + 'observaciones' => $request->input('observaciones')[$index] ?? null, + ]; + })->toArray(); + + // Eliminar los teléfonos existentes y crear los nuevos + $institucion->telefonos()->delete(); + $institucion->telefonos()->createMany($telefonos); + } + + // Manejar las redes sociales + if ($request->has('link_inst')) { + $redes = collect($request->input('link_inst'))->map(function($url, $index) use ($request) { + $red_social_inst = $request->input('red_social_inst')[$index] ?? null; + $tipo_RS_inst = $request->input('tipo_red_social')[$index] ?? null; + + return [ + 'red_social_inst' => $red_social_inst, + 'link_inst' => $url, + 'tipo_RS_inst' => $tipo_RS_inst, + ]; + })->toArray(); + + // Eliminar las redes sociales existentes y crear las nuevas + $institucion->redesSocialesInst()->delete(); + $institucion->redesSocialesInst()->createMany($redes); + } + + return redirect()->route('instituciones.get')->with('success', 'Institución actualizada correctamente'); + } + + public function destroy(string $id) + { + try { + $instituciones = Instituciones::findOrFail($id); + $instituciones->redesSocialesInst()->delete(); // Cambio aquí + $instituciones->delete(); + return redirect()->route('instituciones.get')->with('success', 'Institución eliminada correctamente.'); + } catch(\Exception $e) { + return redirect()->route('instituciones.get')->withErrors('Error al eliminar la institución.'); + } + } + + private function storeInstPicture(Request $request) + { + if ($request->hasFile('imagen')) { + // Obtener el archivo de la solicitud + $file = $request->file('imagen'); + + // Generar un UUID de versión 4 + $uuid = Str::uuid()->toString(); + + // Obtener la extensión del archivo + $extension = $file->getClientOriginalExtension(); + + // Crear el nuevo nombre de archivo + $filename = $uuid . '.' . $extension; + + // Almacenar el archivo en el directorio storage/app/public/fotos_perfil + $path = $file->storeAs('public/imagen', $filename); + + // Retornar la ruta del archivo sin el prefijo 'public/' + return str_replace('public/', '', $path); + } + + // Retornar null si no hay archivo + return null; + } + + private function storeTelefonos($institucionId, $telefonosData) + { + $telefonos = []; + + foreach ($telefonosData['numero'] as $index => $numero) { + // Verificar si todos los campos del teléfono están vacíos (null o "null") + $isEmpty = true; + foreach ($telefonosData as $key => $values) { + if (!is_null($values[$index]) && $values[$index] !== "null") { + $isEmpty = false; + break; + } + } + + if (!$isEmpty) { + $telefonos[] = [ + 'instituciones_id' => $institucionId, + 'prefijo' => $telefonosData['prefijo'][$index], + 'lada' => $telefonosData['lada'][$index], + 'numero' => $numero, + 'tipo' => $telefonosData['tipo'][$index], + 'estatus' => $telefonosData['estatus'][$index], + 'ext' => $telefonosData['ext'][$index], + 'id_radio' => $telefonosData['id_radio'][$index], + 'observaciones' => $telefonosData['observaciones'][$index], + ]; + } + } + + if (!empty($telefonos)) { + TelefonoInst::insert($telefonos); + return true; + } + + return false; + } + + + private function storeProfilePicture(Request $request) + { + if ($request->hasFile('imagen')) { + // Obtener el archivo de la solicitud + $file = $request->file('imagen'); + + // Generar un UUID de versión 4 + $uuid = Str::uuid()->toString(); + + // Obtener la extensión del archivo + $extension = $file->getClientOriginalExtension(); + + // Crear el nuevo nombre de archivo + $filename = $uuid . '.' . $extension; + + // Almacenar el archivo en el directorio storage/app/public/imagen + $path = $file->storeAs('public/imagen', $filename); + + // Retornar la ruta del archivo sin el prefijo 'public/' + return str_replace('public/', '', $path); + } + + // Retornar null si no hay archivo + return null; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/RedesSocialesInstController.php b/app/Http/Controllers/RedesSocialesInstController.php new file mode 100644 index 0000000000000000000000000000000000000000..449e26fb6f151a8dd367679beebd6fac723caa44 --- /dev/null +++ b/app/Http/Controllers/RedesSocialesInstController.php @@ -0,0 +1,75 @@ +get(); + return view('redes_sociales.index', compact('redesSociales')); + } + + public function create() + { + $instituciones = Institucion::all(); + return view('redes_sociales.create', compact('instituciones')); + } + + + public function store(Request $request) + { + $data = $request->all(); + + $redSocial = new RedSocialInst([ + 'nombre' => $request->nombre, + 'link' => $request->link, + 'tipo' => $request->tipo, + 'instituciones_id' => $request->instituciones_id + ]); + + $redSocial->save(); + + return redirect()->route('instituciones.create')->with('success', 'Red social creada exitosamente.'); + } + + public function show($id) + { + $institucion = Institucion::findOrFail($id); + $redesSociales = $institucion->redesSociales; + + return view('instituciones.show', compact('institucion', 'redesSociales')); + } + + + public function edit(RedSocialInst $redSocial) + { + $instituciones = Institucion::all(); + return view('redes_sociales.edit', compact('redSocial', 'instituciones')); + } + + public function update(Request $request, RedSocialInst $redSocial) + { + $request->validate([ + 'nombre' => 'required|string|max:255', + 'link' => 'required|url|max:255', + 'tipo' => 'required|string|max:255', + 'instituciones_id' => 'nullable|exists:instituciones,id' + ]); + + $redSocial->update($request->all()); + + return redirect()->route('redes_sociales.index')->with('success', 'Red social actualizada exitosamente.'); + } + + public function destroy(RedSocialInst $redSocial) + { + $redSocial->delete(); + + return redirect()->route('redes_sociales.index')->with('success', 'Red social eliminada exitosamente.'); + } +} diff --git a/app/Http/Controllers/TelefonoInstController.php b/app/Http/Controllers/TelefonoInstController.php new file mode 100644 index 0000000000000000000000000000000000000000..4f7789078cb01e6459f2e9cc9fb887ba9c66fb95 --- /dev/null +++ b/app/Http/Controllers/TelefonoInstController.php @@ -0,0 +1,29 @@ +validate([ + 'prefijo' => 'required|integer', + 'lada' => 'required|integer', + 'numero' => 'required|integer', + 'tipo' => 'required|string|max:255', + 'estatus' => 'required|boolean', + 'ext' => 'nullable|integer', + 'observaciones' => 'nullable|string|max:255', + 'ID_radio' => 'nullable|string|max:255', + 'instituciones_id' => 'required|exists:instituciones,id' + ]); + + TelefonoInst::create($validatedData); + + return redirect()->back()->with('success', 'Teléfono creado con éxito'); + } +} + diff --git a/app/Models/Instituciones.php b/app/Models/Instituciones.php new file mode 100644 index 0000000000000000000000000000000000000000..6a48dcb5d4a15281ced6480e35cd447aac9bc930 --- /dev/null +++ b/app/Models/Instituciones.php @@ -0,0 +1,38 @@ +belongsTo(Subgrupo::class); + } + + public function redesSocialesInst() + { + return $this->hasMany(RedesSocialesInst::class, 'instituciones_id'); + } + + public function telefonos() + { + return $this->hasMany(TelefonoInst::class, 'instituciones_id'); + } +} diff --git a/app/Models/RedesSocialesInst.php b/app/Models/RedesSocialesInst.php new file mode 100644 index 0000000000000000000000000000000000000000..6cb8c0bd38faec759e3e8286aa8f2b058bbc5afa --- /dev/null +++ b/app/Models/RedesSocialesInst.php @@ -0,0 +1,23 @@ +belongsTo(Instituciones::class, 'instituciones_id'); + } +} \ No newline at end of file diff --git a/app/Models/TelefonoInst.php b/app/Models/TelefonoInst.php new file mode 100644 index 0000000000000000000000000000000000000000..93f975d38aa7f1dc98b9fa10a19c55b250db750d --- /dev/null +++ b/app/Models/TelefonoInst.php @@ -0,0 +1,28 @@ +belongsTo(Instituciones::class, 'instituciones_id'); + } +} diff --git a/database/migrations/2024_06_21_202405_create_instituciones_table.php b/database/migrations/2024_06_21_202405_create_instituciones_table.php new file mode 100644 index 0000000000000000000000000000000000000000..676289ce2b9b4403d986a1662062c9282dd5a7e7 --- /dev/null +++ b/database/migrations/2024_06_21_202405_create_instituciones_table.php @@ -0,0 +1,42 @@ +id(); + $table->string('imagen')->nullable(); + $table->string('nombre'); + $table->string('RFC')->nullable(); + $table->string('domicilio')->nullable(); + $table->integer('codigo_postal')->nullable(); + $table->string('localidad')->nullable(); + $table->date('aniversario')->nullable(); + $table->string('observaciones_inst')->nullable(); + $table->timestamps(); + + $table->unsignedBigInteger('subgrupo_id')->nullable(); + $table->foreign('subgrupo_id') + ->references('id') + ->on('subgrupos') + ->nullable() + ->onDelete('set null'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('instituciones'); + } +}; diff --git a/database/migrations/2024_06_24_175038_create_redes_sociales_insts_table.php b/database/migrations/2024_06_24_175038_create_redes_sociales_insts_table.php new file mode 100644 index 0000000000000000000000000000000000000000..0d9ce997c11544156eb1302eb44d9aaabb43557e --- /dev/null +++ b/database/migrations/2024_06_24_175038_create_redes_sociales_insts_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('red_social_inst')->nullable(); + $table->string('link_inst')->nullable(); + $table->string('tipo_RS_inst')->nullable(); + $table->timestamps(); + + $table->unsignedBigInteger('instituciones_id')->nullable(); + $table->foreign('instituciones_id') + ->references('id') + ->on('instituciones') + ->onDelete('set null'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('redes_sociales_insts'); + } +}; diff --git a/database/migrations/2024_06_24_175056_create_telefono_insts_table.php b/database/migrations/2024_06_24_175056_create_telefono_insts_table.php new file mode 100644 index 0000000000000000000000000000000000000000..534e06671839b63fad0dcc943fdfaeda786d9d6a --- /dev/null +++ b/database/migrations/2024_06_24_175056_create_telefono_insts_table.php @@ -0,0 +1,41 @@ +id(); + $table->integer('prefijo')->nullable(); + $table->integer('lada')->nullable(); + $table->bigInteger('numero')->nullable(); + $table->string('tipo')->nullable(); + $table->string('estatus')->nullable(); + $table->integer('ext')->nullable(); + $table->string('observaciones')->nullable(); + $table->string('ID_radio')->nullable(); + $table->timestamps(); + + $table->unsignedBigInteger('instituciones_id')->nullable(); + $table->foreign('instituciones_id') + ->references('id') + ->on('instituciones') + ->onDelete('set null'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('telefono_insts'); + } +}; diff --git a/resources/views/adminGen/instituciones/create.blade.php b/resources/views/adminGen/instituciones/create.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..6a6af7350fa923d9b9fa9a539eb2ae059e096773 --- /dev/null +++ b/resources/views/adminGen/instituciones/create.blade.php @@ -0,0 +1,444 @@ + + + + + +
+ +
+ +

Agregar Institución

+
+
+
+
+
+ +
+ + +
+
+ @csrf + +
+
+

Agregar Datos

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+
+
+ +
+
+
+

Agregar domicilio

+
+ + +
+
+ + +
+
+ + +
+
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+ +
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+
+ +
+
+ +
+

Enviar formulario

+
+

Por favor, revise toda la información antes de enviar el formulario.

+

Si encuentra algún error, puede regresar y editar la información antes de enviar.

+
+
+ +
+
+
+
+ +
+ + +
+
+ + + + + + + + + + + + + + diff --git a/resources/views/adminGen/instituciones/edit.blade.php b/resources/views/adminGen/instituciones/edit.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..100e9e6b227e9d6f509a4a70526a25c3198f2d1d --- /dev/null +++ b/resources/views/adminGen/instituciones/edit.blade.php @@ -0,0 +1,463 @@ + + + + + +
+ +
+ +

Agregar Institución

+
+
+
+
+
+ +
+ + +
+
+ @csrf + @method('PUT') + +
+
+

Agregar Datos

+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + @if($instituciones->imagen) +
+ Foto de institucion +
+ @endif + +
+
+
+
+ +
+
+
+

Agregar domicilio

+
+ + +
+
+ + +
+
+ + +
+
+
+
+ +
+
+ @foreach($instituciones->telefonos as $telefono) +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ +
+
+ @endforeach +
+ +
+
+ +
+
+ @foreach ($redes as $red) +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+ @endforeach +
+ +
+
+ +
+

Enviar formulario

+
+

Por favor, revise toda la información antes de enviar el formulario.

+

Si encuentra algún error, puede regresar y editar la información antes de enviar.

+
+
+ +
+
+
+
+ +
+ + +
+
+ + + + + + + + + + + + + + + diff --git a/resources/views/adminGen/instituciones/index.blade.php b/resources/views/adminGen/instituciones/index.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..10bdd45efbdd4c41fbc893704403e54d97133358 --- /dev/null +++ b/resources/views/adminGen/instituciones/index.blade.php @@ -0,0 +1,128 @@ + + + + + + +
+ + +
+ + + + + + + + + + + + + @foreach($instituciones as $institucion) + + + + + + + + @endforeach + +
IdNombreAniversarioDomicilioAcciones
{{ $institucion->id }}{{ $institucion->nombre }}{{ $institucion->aniversario }}{{ $institucion->domicilio }} +
+ Ver institución + Editar +
+ @csrf + @method('DELETE') + +
+
+
+ +
+
+ + + + + + + + + + +
diff --git a/resources/views/adminGen/instituciones/show.blade.php b/resources/views/adminGen/instituciones/show.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..83b2f5651ea953e80a99394b5b70efca33fbbd4f --- /dev/null +++ b/resources/views/adminGen/instituciones/show.blade.php @@ -0,0 +1,586 @@ + + +
+
    +
  • + Dashboard +
  • +
  • + Institución +
  • +
  • +

    {{ $instituciones->nombre }}

    +
  • +
+
+
+
+
+
Institución
+ + + + + + + +
+
+
+ image +

{{ $instituciones->nombre }}

+
+
    +
  • + + + + + + + {{$instituciones->nombre}} +
  • + @if($instituciones->domicilio) +
  • + + + + + + + + {{$instituciones->domicilio}} +
  • + @endif + @if($instituciones->aniversario) +
  • + + + + + + + + {{ $instituciones->aniversario . ' de ' . Str::title(\Carbon\Carbon::create()->month($instituciones->aniversario)->monthName) }} +
  • + @endif +
+ + +
+
+
+
+
Domicilio oficial
+
+
+
    + @if($contacto->domicilio_oficial) +
  • + + + + + + {{'Domicilio: ' . $contacto->domicilio_oficial}} +
  • + @endif + @if($contacto->codigo_postal) +
  • + + + + + + {{'Código postal: ' . $contacto->codigo_postal}} +
  • + @endif + @if($contacto->localidad_oficial) +
  • + + + + + + {{'Localidad: ' . $contacto->localidad_oficial}} +
  • + @endif + @if($contacto->municipio_oficial) +
  • + + + + + + {{'Municipio: ' . $contacto->municipio_oficial}} +
  • + @endif + @if($contacto->estado) +
  • + + + + + + {{'Estado: ' . $contacto->estado}} +
  • + @endif + @if($contacto->pais) +
  • + + + + + + {{'Pais: ' . $contacto->pais}} +
  • + @endif +
+
+
+
+
+
Domicilio particular
+
+
+
    + @if($contacto->domicilio_par) +
  • + + + + + + {{'Domicilio: ' . $contacto->domicilio_par}} +
  • + @endif + @if($contacto->codigo_postal_par) +
  • + + + + + + {{'Código postal: ' . $contacto->codigo_postal_par}} +
  • + @endif + @if($contacto->localidad_par) +
  • + + + + + + {{'Localidad: ' . $contacto->localidad_par}} +
  • + @endif + @if($contacto->municipio_par) +
  • + + + + + + {{'Municipio: ' . $contacto->municipio_par}} +
  • + @endif + @if($contacto->estado_par) +
  • + + + + + + {{'Estado: ' . $contacto->estado_par}} +
  • + @endif + @if($contacto->pais_par) +
  • + + + + + + {{'Pais: ' . $contacto->pais_par}} +
  • + @endif +
+
+
+ @if($contacto->pareja) +
+
+
Pareja
+
+
+
+ image +

{{ $contacto->pareja->nombre . ' ' . $contacto->pareja->ap_paterno . ' ' . $contacto->pareja->ap_materno}}

+
+
    + @if($contacto->pareja->cargo_desc) +
  • + + + + + + + + {{$contacto->pareja->cargo_desc}} +
  • + @endif + @if($contacto->pareja->mes_cump) +
  • + + + + + + + + {{ $contacto->pareja->dia_cump . ' de ' . Str::title(\Carbon\Carbon::create()->month($contacto->pareja->mes_cump)->monthName) }} +
  • + @endif +
  • + + + + + + @if($contacto->pareja->finado == true) + Finado: Si + @else + Finado: No + @endif +
  • +
+
+
+ @endif + +
+
+
Telefonos
+
+
+
+ + + + + + + + + + + + + + + @foreach($contacto->telefonos as $telefono) + + + + + + + + + + + @endforeach + +
PrefijoLadaNúmeroTipoEstatusExtID RadioObservaciones
{{$telefono->prefijo}}{{$telefono->lada}}{{$telefono->numero}}{{$telefono->tipo}}{{$telefono->estatus}}{{$telefono->ext}}{{$telefono->id_radio}}{{$telefono->observaciones}}
+
+
+
+
+
+
Correos electronicos
+
+
+
+ + + + + + + + + @foreach($contacto->correos as $correo) + + + + + @endforeach + +
Correo ElectronicoTipo
{{$correo->correo_electronico}}{{$correo->tipo_correo_electronico}}
+
+
+
+
+
+
+
diff --git a/resources/views/components/common/sidebaradmin.blade.php b/resources/views/components/common/sidebaradmin.blade.php index 37d09fdd365811d078b403e12dbc13d81a3f7b57..900f19152a5b50d78cfc8071c9d79b2b8a367a5b 100644 --- a/resources/views/components/common/sidebaradmin.blade.php +++ b/resources/views/components/common/sidebaradmin.blade.php @@ -171,7 +171,7 @@ class="ltr:pl-3 rtl:pr-3 text-black dark:text-[#506690] dark:group-hover:text-wh
  • - Analytics + Inicio
  • diff --git a/routes/web.php b/routes/web.php index 4edbc0bbd0fcc4c4af46a36fbd0b31409f3f0d4d..13c2c9a491cb0fcc38ec000101ece75d4592c8e1 100644 --- a/routes/web.php +++ b/routes/web.php @@ -13,6 +13,10 @@ use App\Http\Controllers\GruposController; use App\Http\Controllers\SubgrupoController; use App\Http\Controllers\UserController; +//Instituciones +use App\Http\Controllers\InstitucionesController; +use App\Http\Controllers\RedesSocialesInstController; +use App\Http\Controllers\TelefonoInstController; Route::get('/', function () { return view('welcome'); @@ -77,6 +81,32 @@ Route::delete('/administracion/usuarios/{id}', [UserController::class, 'destroy'])->name('destroy'); }); +Route::middleware('auth:sanctum', config('jetstream.auth_session'), 'verified', CheckBanned::class) + ->name('instituciones.') + ->group(function() { + Route::get('/instituciones', [InstitucionesController::class, 'index']) + ->name('get') + ->middleware(CheckRoles::class . ':admingen,admin,capturista'); + Route::get('/instituciones/crear', [InstitucionesController::class, 'create']) + ->name('create') + ->middleware(CheckRoles::class . ':admingen,admin,capturista'); + Route::post('/instituciones/crear', [InstitucionesController::class, 'store']) + ->name('store') + ->middleware(CheckRoles::class . ':admingen,admin,capturista'); + Route::get('/instituciones/{id}/editar', [InstitucionesController::class, 'edit']) + ->name('edit') + ->middleware(CheckRoles::class . ':admingen,admin,capturista'); + Route::put('/instituciones/{id}/editar', [InstitucionesController::class, 'update']) + ->name('update') + ->middleware(CheckRoles::class . ':admingen,admin,capturista'); + Route::delete('/instituciones/{id}', [InstitucionesController::class, 'destroy']) + ->name('destroy') + ->middleware(CheckRoles::class . ':admingen,admin'); + Route::get('/instituciones/{id}', [InstitucionesController::class, 'show']) + ->name('show') + ->middleware(CheckRoles::class . ':admingen,admin,capturista'); + }); + Route::middleware('auth:sanctum', config('jetstream.auth_session'), 'verified',