From 1744856ac9685d25b4f792b89d0ad9871c331309 Mon Sep 17 00:00:00 2001 From: alekeyrivas Date: Wed, 26 Jun 2024 13:48:29 -0600 Subject: [PATCH 1/4] Vista create lista falta guardar, editar y eliminar --- .../Controllers/InstitucionesController.php | 108 ++++++ .../RedesSocialesInstController.php | 75 +++++ .../Controllers/TelefonoInstController.php | 29 ++ app/Models/Instituciones.php | 38 +++ app/Models/RedesSocialesInst.php | 23 ++ app/Models/TelefonoInst.php | 28 ++ ...6_21_202405_create_instituciones_table.php | 42 +++ ...5038_create_redes_sociales_insts_table.php | 36 ++ ..._24_175056_create_telefono_insts_table.php | 41 +++ .../adminGen/instituciones/create.blade.php | 315 ++++++++++++++++++ .../adminGen/instituciones/edit.blade.php | 70 ++++ .../adminGen/instituciones/index.blade.php | 52 +++ .../redes_sociales/create.blade.php | 47 +++ .../redes_sociales/index.blade.php | 49 +++ .../instituciones/telefonos/create.blade.php | 82 +++++ .../components/common/sidebaradmin.blade.php | 2 +- routes/web.php | 8 + 17 files changed, 1044 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/InstitucionesController.php create mode 100644 app/Http/Controllers/RedesSocialesInstController.php create mode 100644 app/Http/Controllers/TelefonoInstController.php create mode 100644 app/Models/Instituciones.php create mode 100644 app/Models/RedesSocialesInst.php create mode 100644 app/Models/TelefonoInst.php create mode 100644 database/migrations/2024_06_21_202405_create_instituciones_table.php create mode 100644 database/migrations/2024_06_24_175038_create_redes_sociales_insts_table.php create mode 100644 database/migrations/2024_06_24_175056_create_telefono_insts_table.php create mode 100644 resources/views/adminGen/instituciones/create.blade.php create mode 100644 resources/views/adminGen/instituciones/edit.blade.php create mode 100644 resources/views/adminGen/instituciones/index.blade.php create mode 100644 resources/views/adminGen/instituciones/redes_sociales/create.blade.php create mode 100644 resources/views/adminGen/instituciones/redes_sociales/index.blade.php create mode 100644 resources/views/adminGen/instituciones/telefonos/create.blade.php diff --git a/app/Http/Controllers/InstitucionesController.php b/app/Http/Controllers/InstitucionesController.php new file mode 100644 index 0000000..b292897 --- /dev/null +++ b/app/Http/Controllers/InstitucionesController.php @@ -0,0 +1,108 @@ +validate([ + 'nombre' => 'required|string|max:255', + 'RFC' => 'nullable|string|max:13', + 'aniversario' => 'nullable|date', + 'observaciones' => 'nullable|string', + 'subgrupo_id' => 'nullable|integer', + 'imagen' => 'nullable|image|mimes:jpeg,png,jpg,gif|max:2048', + 'domicilio' => 'nullable|string|max:255', + 'codigo_postal' => 'nullable|string|max:10', + 'localidad' => 'nullable|string|max:255', + 'prefijo' => 'nullable|string|max:10', + 'lada' => 'nullable|string|max:5', + 'numero' => 'nullable|string|max:15', + 'tipo' => 'nullable|string', + 'estatus' => 'nullable|boolean', + 'ext' => 'nullable|string|max:10', + 'observaciones' => 'nullable|string', + 'ID_radio' => 'nullable|string|max:50', + 'nombre' => 'nullable|string|max:255', + 'link' => 'nullable|url', + 'tipo' => 'nullable|string', + ]); + + // Handle file upload if there is any + if ($request->hasFile('imagen')) { + $imagePath = $request->file('imagen')->store('imagenes', 'public'); + $validatedData['imagen'] = $imagePath; + } + + $institucion = Institucion::create($validatedData); + + // Guardar los teléfonos + foreach ($request->prefijo as $index => $prefijo) { + Telefono::create([ + 'institucion_id' => $institucion->id, + 'prefijo' => $prefijo, + 'lada' => $request->lada[$index], + 'numero' => $request->numero[$index], + 'tipo' => $request->tipo[$index], + 'estatus' => $request->estatus[$index], + 'ext' => $request->ext[$index], + 'observaciones' => $request->telefono_observaciones[$index], + 'ID_radio' => $request->ID_radio[$index], + ]); + } + + // Guardar las redes sociales + foreach ($request->red_nombre as $index => $red_nombre) { + RedSocial::create([ + 'institucion_id' => $institucion->id, + 'nombre' => $red_nombre, + 'link' => $request->link[$index], + 'tipo' => $request->red_tipo[$index], + ]); + } + + return redirect()->route('instituciones.index')->with('success', 'Institución creada exitosamente'); + } + + public function edit($id) + { + $institucion = Instituciones::findOrFail($id); + $subgrupos = Subgrupo::all(); + return view('adminGen.instituciones.edit', compact('institucion', 'subgrupos')); + } + + public function update(Request $request, $id) + { + $institucion = Instituciones::findOrFail($id); + $data = $request->all(); + if ($request->hasFile('imagen')) { + $data['imagen'] = $request->file('imagen')->store('imagenes', 'public'); + } + $institucion->update($data); + return redirect()->route('instituciones.index'); + } + + public function destroy($id) + { + $institucion = Instituciones::findOrFail($id); + $institucion->delete(); + return redirect()->route('instituciones.index'); + } +} diff --git a/app/Http/Controllers/RedesSocialesInstController.php b/app/Http/Controllers/RedesSocialesInstController.php new file mode 100644 index 0000000..1d02fee --- /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 0000000..4f77890 --- /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 0000000..b807593 --- /dev/null +++ b/app/Models/Instituciones.php @@ -0,0 +1,38 @@ +belongsTo(Subgrupo::class); + } + + public function redesSociales() + { + 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 0000000..94bfe1e --- /dev/null +++ b/app/Models/RedesSocialesInst.php @@ -0,0 +1,23 @@ +belongsTo(Institucion::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 0000000..7d9c8d9 --- /dev/null +++ b/app/Models/TelefonoInst.php @@ -0,0 +1,28 @@ +belongsTo(Institucion::class); + } +} 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 0000000..5892a17 --- /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')->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 0000000..1e142e3 --- /dev/null +++ b/database/migrations/2024_06_24_175038_create_redes_sociales_insts_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('nombre')->nullable(); + $table->string('link')->nullable(); + $table->string('tipo')->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 0000000..659cb0c --- /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->integer('numero')->nullable(); + $table->string('tipo')->nullable(); + $table->boolean('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 0000000..2c9e750 --- /dev/null +++ b/resources/views/adminGen/instituciones/create.blade.php @@ -0,0 +1,315 @@ + + + + + +
+ +
+ +

Agregar Institución

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

Agregar Datos

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

Agregar domicilio

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

Agregar teléfono

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

Agregar redes sociales

+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+
+ +
+
+
+
+
+
+ +
+
+ + +
+
+
+ +
+
+
+
+
+ +
+ + +
+ + + + + + + + + + + + + diff --git a/resources/views/adminGen/instituciones/edit.blade.php b/resources/views/adminGen/instituciones/edit.blade.php new file mode 100644 index 0000000..a6c59a9 --- /dev/null +++ b/resources/views/adminGen/instituciones/edit.blade.php @@ -0,0 +1,70 @@ + + + + + +
+ + +
+

Editar Institución

+
+ @csrf + @method('PUT') +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + + @if($institucion->imagen) + Imagen de la institución + @endif +
+
+ +
+
+
+ \ No newline at end of file diff --git a/resources/views/adminGen/instituciones/index.blade.php b/resources/views/adminGen/instituciones/index.blade.php new file mode 100644 index 0000000..553b96c --- /dev/null +++ b/resources/views/adminGen/instituciones/index.blade.php @@ -0,0 +1,52 @@ + + + + + +
+ + +
+

Lista de Instituciones

+ Agregar Institución + + + + + + + + + + + + @foreach($instituciones as $institucion) + + + + + + + + @endforeach + +
NombreRFCDomicilioLocalidadAcciones
{{ $institucion->nombre }}{{ $institucion->RFC }}{{ $institucion->domicilio }}{{ $institucion->localidad }} +
+ Editar +
+ @csrf + @method('DELETE') + +
+
+ +
+
+ \ No newline at end of file diff --git a/resources/views/adminGen/instituciones/redes_sociales/create.blade.php b/resources/views/adminGen/instituciones/redes_sociales/create.blade.php new file mode 100644 index 0000000..fe83170 --- /dev/null +++ b/resources/views/adminGen/instituciones/redes_sociales/create.blade.php @@ -0,0 +1,47 @@ + + + + + +
+ + +
+

Red Social

+
+ @csrf + @method('PUT') +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
+ \ No newline at end of file diff --git a/resources/views/adminGen/instituciones/redes_sociales/index.blade.php b/resources/views/adminGen/instituciones/redes_sociales/index.blade.php new file mode 100644 index 0000000..882e189 --- /dev/null +++ b/resources/views/adminGen/instituciones/redes_sociales/index.blade.php @@ -0,0 +1,49 @@ + + + + + +
+ + +
+

Redes Sociales

+ Agregar Red Social + + + + + + + + + + + + @foreach($redesSociales as $redSocial) + + + + + + + + @endforeach + +
NombreLinkTipoInstituciónAcciones
{{ $redSocial->nombre }}{{ $redSocial->link }}{{ $redSocial->tipo }}{{ $redSocial->institucion->nombre ?? 'N/A' }} + Editar +
+ @csrf + @method('DELETE') + +
+
+
+ \ No newline at end of file diff --git a/resources/views/adminGen/instituciones/telefonos/create.blade.php b/resources/views/adminGen/instituciones/telefonos/create.blade.php new file mode 100644 index 0000000..30756cf --- /dev/null +++ b/resources/views/adminGen/instituciones/telefonos/create.blade.php @@ -0,0 +1,82 @@ + + + + + +
+ + +
+

Agregar Teléfono

+ + @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + +
+ @csrf +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+
+
+ diff --git a/resources/views/components/common/sidebaradmin.blade.php b/resources/views/components/common/sidebaradmin.blade.php index e67d0ef..9fe73ce 100644 --- a/resources/views/components/common/sidebaradmin.blade.php +++ b/resources/views/components/common/sidebaradmin.blade.php @@ -158,7 +158,7 @@ class="ltr:pl-3 rtl:pr-3 text-black dark:text-[#506690] dark:group-hover:text-wh -
-

Lista de Instituciones

-
Agregar Institución - +
+

Lista de Instituciones

+ Agregar Nueva Institución +
+ - - + @foreach($instituciones as $institucion) + - - + @endforeach diff --git a/routes/web.php b/routes/web.php index 470b296..9956e4f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -78,5 +78,6 @@ }); Route::resource('instituciones', InstitucionesController::class); +Route::get('/instituciones/create', [InstitucionController::class, 'create'])->name('instituciones.create'); Route::post('redes-sociales', [RedesSocialesInstController::class, 'store'])->name('redesSociales.store'); Route::post('telefonos', [TelefonoInstController::class, 'store'])->name('telefonos.store'); \ No newline at end of file -- GitLab From 02f8df62078f8f01ff212b1a51421e8f8c07701c Mon Sep 17 00:00:00 2001 From: alekeyrivas Date: Wed, 3 Jul 2024 14:05:26 -0600 Subject: [PATCH 3/4] Ya funciona el creat y el index, faltan detalles al editar --- .../Controllers/InstitucionesController.php | 252 +++++++-- app/Models/Instituciones.php | 4 +- app/Models/RedesSocialesInst.php | 10 +- app/Models/TelefonoInst.php | 2 +- ...6_21_202405_create_instituciones_table.php | 2 +- ...5038_create_redes_sociales_insts_table.php | 6 +- ..._24_175056_create_telefono_insts_table.php | 2 +- .../adminGen/instituciones/create.blade.php | 448 ++++++++++------ .../adminGen/instituciones/edit.blade.php | 495 ++++++++++++++++-- .../adminGen/instituciones/index.blade.php | 83 ++- .../redes_sociales/create.blade.php | 47 -- .../redes_sociales/index.blade.php | 49 -- .../instituciones/telefonos/create.blade.php | 82 --- resources/views/dashboard.blade.php | 2 +- routes/web.php | 13 +- 15 files changed, 1022 insertions(+), 475 deletions(-) delete mode 100644 resources/views/adminGen/instituciones/redes_sociales/create.blade.php delete mode 100644 resources/views/adminGen/instituciones/redes_sociales/index.blade.php delete mode 100644 resources/views/adminGen/instituciones/telefonos/create.blade.php diff --git a/app/Http/Controllers/InstitucionesController.php b/app/Http/Controllers/InstitucionesController.php index 3e18a4a..f575011 100644 --- a/app/Http/Controllers/InstitucionesController.php +++ b/app/Http/Controllers/InstitucionesController.php @@ -6,7 +6,11 @@ use App\Models\TelefonoInst; use App\Models\RedesSocialesInst; use App\Models\Subgrupo; + +use Illuminate\Support\Facades\DB; use Illuminate\Http\Request; +use Illuminate\Support\Str; +use Illuminate\Support\Facades\Storage; class InstitucionesController extends Controller { @@ -18,86 +22,238 @@ public function index() public function create() { - $subgrupos = Subgrupo::all(); + $subgrupos = Subgrupo::get(); return view('adminGen.instituciones.create', compact('subgrupos')); } public function store(Request $request) { - $data = $request->validate([ - 'imagen' => 'nullable|string', - 'nombre' => 'required|string', - 'RFC' => 'nullable|string', + // Validación de los datos del formulario + $request->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', - 'aniversario' => 'nullable|date', - 'observaciones' => 'nullable|string', - 'subgrupo_id' => 'nullable|integer', - 'telefonos' => 'array', - 'redesSociales' => 'array' + '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(Instituciones $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')); + } - $institucion = Institucion::create($data); + 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', + ]); + + $instituciones = Instituciones::findOrFail($id); + $instituciones->update($validatedData); - foreach ($data['telefonos'] as $telefono) { - $institucion->telefonos()->create($telefono); + if ($request->hasFile('imagen')) { + // Eliminar la foto de perfil anterior si existe + if ($instituciones->imagen) { + Storage::delete('public/' . $instituciones->imagen); + } + + // Guardar la nueva foto de perfil + $path_file = $this->storeProfilePicture($request); + $instituciones->imagen = $path_file; } - foreach ($data['redesSociales'] as $redSocial) { - $institucion->redesSociales()->create($redSocial); + // Actualizar los datos del usuario + $instituciones->update($validatedData); + + // 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(); + + $instituciones->telefonos()->delete(); + $instituciones->telefonos()->createMany($telefonos); } - return redirect()->route('instituciones.index'); + // Guardar redes sociales + $redes = collect($request->input('link_inst'))->map(function($url, $index) use ($request) { + return [ + 'red_social_inst' => $request->input('red_social_inst')[$index], // Debe ser el username + 'link_inst' => $url, // Debe ser la URL de la red social + 'tipo_RS_inst' => $request->input('tipo_red_social')[$index], // Tipo de red social + ]; + }); + + $instituciones->redesSocialesInst()->delete(); + $instituciones->redesSocialesInst()->createMany($redes->toArray()); + + return redirect()->route('instituciones.get')->with('success', 'Institución actualizada correctamente'); } - public function show(Institucion $institucion) + public function destroy(string $id) { - return view('instituciones.show', compact('institucion')); + 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.'); + } } - public function edit(Institucion $institucion) + private function storeInstPicture(Request $request) { - return view('instituciones.edit', compact('institucion')); + 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; } - public function update(Request $request, Institucion $institucion) + private function storeTelefonos($institucionId, $telefonosData) { - $data = $request->validate([ - 'imagen' => 'nullable|string', - 'nombre' => 'required|string', - 'RFC' => 'nullable|string', - 'domicilio' => 'nullable|string', - 'codigo_postal' => 'nullable|integer', - 'localidad' => 'nullable|string', - 'aniversario' => 'nullable|date', - 'observaciones' => 'nullable|string', - 'subgrupo_id' => 'nullable|integer', - 'telefonos' => 'array', - 'redesSociales' => 'array' - ]); + $telefonos = []; - $institucion->update($data); + 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; + } + } - $institucion->telefonos()->delete(); - foreach ($data['telefonos'] as $telefono) { - $institucion->telefonos()->create($telefono); + 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], + ]; + } } - $institucion->redesSociales()->delete(); - foreach ($data['redesSociales'] as $redSocial) { - $institucion->redesSociales()->create($redSocial); + if (!empty($telefonos)) { + TelefonoInst::insert($telefonos); + return true; } - return redirect()->route('instituciones.index'); + return false; } - public function destroy(Institucion $institucion) + + private function storeProfilePicture(Request $request) { - $institucion->telefonos()->delete(); - $institucion->redesSociales()->delete(); - $institucion->delete(); + 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); + } - return redirect()->route('instituciones.index'); + // Retornar null si no hay archivo + return null; } -} +} \ No newline at end of file diff --git a/app/Models/Instituciones.php b/app/Models/Instituciones.php index b807593..6a48dcb 100644 --- a/app/Models/Instituciones.php +++ b/app/Models/Instituciones.php @@ -17,7 +17,7 @@ class Instituciones extends Model 'codigo_postal', 'localidad', 'aniversario', - 'observaciones', + 'observaciones_inst', 'subgrupo_id' ]; @@ -26,7 +26,7 @@ public function subgrupo() return $this->belongsTo(Subgrupo::class); } - public function redesSociales() + public function redesSocialesInst() { return $this->hasMany(RedesSocialesInst::class, 'instituciones_id'); } diff --git a/app/Models/RedesSocialesInst.php b/app/Models/RedesSocialesInst.php index 1291643..6cb8c0b 100644 --- a/app/Models/RedesSocialesInst.php +++ b/app/Models/RedesSocialesInst.php @@ -10,14 +10,14 @@ class RedesSocialesInst extends Model use HasFactory; protected $fillable = [ - 'nombre', - 'link', - 'tipo', - 'instituciones_id' + 'instituciones_id', + 'red_social_inst', + 'link_inst', + 'tipo_RS_inst' ]; public function institucion() { - return $this->belongsTo(Institucion::class, 'instituciones_id'); + return $this->belongsTo(Instituciones::class, 'instituciones_id'); } } \ No newline at end of file diff --git a/app/Models/TelefonoInst.php b/app/Models/TelefonoInst.php index 7d9c8d9..93f975d 100644 --- a/app/Models/TelefonoInst.php +++ b/app/Models/TelefonoInst.php @@ -23,6 +23,6 @@ class TelefonoInst extends Model public function institucion() { - return $this->belongsTo(Institucion::class); + return $this->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 index 5892a17..676289c 100644 --- a/database/migrations/2024_06_21_202405_create_instituciones_table.php +++ b/database/migrations/2024_06_21_202405_create_instituciones_table.php @@ -20,7 +20,7 @@ public function up(): void $table->integer('codigo_postal')->nullable(); $table->string('localidad')->nullable(); $table->date('aniversario')->nullable(); - $table->string('observaciones')->nullable(); + $table->string('observaciones_inst')->nullable(); $table->timestamps(); $table->unsignedBigInteger('subgrupo_id')->nullable(); 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 index 1e142e3..0d9ce99 100644 --- 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 @@ -13,9 +13,9 @@ public function up(): void { Schema::create('redes_sociales_insts', function (Blueprint $table) { $table->id(); - $table->string('nombre')->nullable(); - $table->string('link')->nullable(); - $table->string('tipo')->nullable(); + $table->string('red_social_inst')->nullable(); + $table->string('link_inst')->nullable(); + $table->string('tipo_RS_inst')->nullable(); $table->timestamps(); $table->unsignedBigInteger('instituciones_id')->nullable(); 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 index 659cb0c..7793a27 100644 --- a/database/migrations/2024_06_24_175056_create_telefono_insts_table.php +++ b/database/migrations/2024_06_24_175056_create_telefono_insts_table.php @@ -15,7 +15,7 @@ public function up(): void $table->id(); $table->integer('prefijo')->nullable(); $table->integer('lada')->nullable(); - $table->integer('numero')->nullable(); + $table->bigInteger('numero')->nullable(); $table->string('tipo')->nullable(); $table->boolean('estatus')->nullable(); $table->integer('ext')->nullable(); diff --git a/resources/views/adminGen/instituciones/create.blade.php b/resources/views/adminGen/instituciones/create.blade.php index 589c99f..6a6af73 100644 --- a/resources/views/adminGen/instituciones/create.blade.php +++ b/resources/views/adminGen/instituciones/create.blade.php @@ -91,7 +91,7 @@
-
+ @csrf
@@ -99,32 +99,33 @@

Agregar Datos

- +
- +
- +
- - + +
-
- - + @foreach($subgrupos as $subgrupo) - - @endforeach + + @endforeach
+
- - + +
@@ -135,132 +136,129 @@

Agregar domicilio

- +
- +
- +
-
-
-

Agregar teléfono

-
- +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
-
-
-

Agregar redes sociales

-
- +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ +
-
- - -
-
-
- +

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.


+
+
@@ -270,69 +268,177 @@

+ + + + + + + + diff --git a/resources/views/adminGen/instituciones/edit.blade.php b/resources/views/adminGen/instituciones/edit.blade.php index a6c59a9..100e9e6 100644 --- a/resources/views/adminGen/instituciones/edit.blade.php +++ b/resources/views/adminGen/instituciones/edit.blade.php @@ -12,59 +12,452 @@ Instituciones +
-
-

Editar Institución

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

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.

+
+
+ +
+
+
-
- - + +
+ +
-
- -
ID Nombre RFCDomicilioLocalidadAniversario Acciones
{{ $institucion->id }} {{ $institucion->nombre }} {{ $institucion->RFC }}{{ $institucion->domicilio }}{{ $institucion->localidad }}{{ $institucion->aniversario }} -
- Editar -
+
+ Editar + @csrf @method('DELETE') - +
-
- + @@ -31,15 +52,15 @@ - + @@ -48,4 +69,48 @@
ID NombreRFCDomicilio Aniversario Acciones
{{ $institucion->id }} {{ $institucion->nombre }}{{ $institucion->RFC }}{{ $institucion->domicilio }} {{ $institucion->aniversario }} -
- Editar -
+
+ Editar + @csrf @method('DELETE') - +
- \ No newline at end of file + + + + + + + + + \ No newline at end of file diff --git a/resources/views/adminGen/instituciones/redes_sociales/create.blade.php b/resources/views/adminGen/instituciones/redes_sociales/create.blade.php deleted file mode 100644 index fe83170..0000000 --- a/resources/views/adminGen/instituciones/redes_sociales/create.blade.php +++ /dev/null @@ -1,47 +0,0 @@ - - - - - -
- - -
-

Red Social

-
- @csrf - @method('PUT') -
- - -
-
- - -
-
- - -
-
- - -
-
- -
-
-
- \ No newline at end of file diff --git a/resources/views/adminGen/instituciones/redes_sociales/index.blade.php b/resources/views/adminGen/instituciones/redes_sociales/index.blade.php deleted file mode 100644 index 882e189..0000000 --- a/resources/views/adminGen/instituciones/redes_sociales/index.blade.php +++ /dev/null @@ -1,49 +0,0 @@ - - - - - -
- - -
-

Redes Sociales

- Agregar Red Social - - - - - - - - - - - - @foreach($redesSociales as $redSocial) - - - - - - - - @endforeach - -
NombreLinkTipoInstituciónAcciones
{{ $redSocial->nombre }}{{ $redSocial->link }}{{ $redSocial->tipo }}{{ $redSocial->institucion->nombre ?? 'N/A' }} - Editar -
- @csrf - @method('DELETE') - -
-
-
- \ No newline at end of file diff --git a/resources/views/adminGen/instituciones/telefonos/create.blade.php b/resources/views/adminGen/instituciones/telefonos/create.blade.php deleted file mode 100644 index 30756cf..0000000 --- a/resources/views/adminGen/instituciones/telefonos/create.blade.php +++ /dev/null @@ -1,82 +0,0 @@ - - - - - -
- - -
-

Agregar Teléfono

- - @if ($errors->any()) -
-
    - @foreach ($errors->all() as $error) -
  • {{ $error }}
  • - @endforeach -
-
- @endif - -
- @csrf -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
-
- -
-
-
- diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php index 9aa4567..3c91974 100644 --- a/resources/views/dashboard.blade.php +++ b/resources/views/dashboard.blade.php @@ -7,7 +7,7 @@ Dashboard
  • - Analytics + Inicio
  • diff --git a/routes/web.php b/routes/web.php index 9956e4f..db5c869 100644 --- a/routes/web.php +++ b/routes/web.php @@ -3,6 +3,7 @@ use Illuminate\Support\Facades\Route; //Middlewares use App\Http\Middleware\CheckBanned; +use App\Http\Middleware\CheckRoles; //Controllers use App\Http\Controllers\DependenciaController; use App\Http\Controllers\CargoController; @@ -77,7 +78,11 @@ Route::delete('/administracion/usuarios/{id}', [UserController::class, 'destroy'])->name('destroy'); }); -Route::resource('instituciones', InstitucionesController::class); -Route::get('/instituciones/create', [InstitucionController::class, 'create'])->name('instituciones.create'); -Route::post('redes-sociales', [RedesSocialesInstController::class, 'store'])->name('redesSociales.store'); -Route::post('telefonos', [TelefonoInstController::class, 'store'])->name('telefonos.store'); \ No newline at end of file +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'); +}); -- GitLab From e61929b97a56e80937ba9148859da722c22c8a5e Mon Sep 17 00:00:00 2001 From: alekeyrivas Date: Fri, 5 Jul 2024 09:24:58 -0600 Subject: [PATCH 4/4] Insittuciones falta la funcionalidad del show --- .../Controllers/InstitucionesController.php | 80 ++- ..._24_175056_create_telefono_insts_table.php | 2 +- .../adminGen/instituciones/index.blade.php | 98 +-- .../adminGen/instituciones/show.blade.php | 586 ++++++++++++++++++ routes/web.php | 34 +- 5 files changed, 718 insertions(+), 82 deletions(-) create mode 100644 resources/views/adminGen/instituciones/show.blade.php diff --git a/app/Http/Controllers/InstitucionesController.php b/app/Http/Controllers/InstitucionesController.php index f575011..73de09c 100644 --- a/app/Http/Controllers/InstitucionesController.php +++ b/app/Http/Controllers/InstitucionesController.php @@ -79,9 +79,9 @@ public function store(Request $request) } } - public function show(Instituciones $instituciones) + public function show(string $id) { - // + return view('adminGen.instituciones.show', compact('instituciones')); } public function edit(string $id) @@ -104,23 +104,36 @@ public function update(Request $request, string $id) 'imagen' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', ]); - $instituciones = Instituciones::findOrFail($id); - $instituciones->update($validatedData); + $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 foto de perfil anterior si existe - if ($instituciones->imagen) { - Storage::delete('public/' . $instituciones->imagen); + // Eliminar la imagen de perfil anterior si existe + if ($institucion->imagen) { + Storage::delete('public/' . $institucion->imagen); } - - // Guardar la nueva foto de perfil + + // Guardar la nueva imagen de perfil $path_file = $this->storeProfilePicture($request); - $instituciones->imagen = $path_file; + $institucion->imagen = $path_file; + $institucion->save(); // Guardar los cambios en la institución } - - // Actualizar los datos del usuario - $instituciones->update($validatedData); - + // Manejar los teléfonos if ($request->has('prefijo')) { $telefonos = collect($request->input('prefijo'))->map(function($prefijo, $index) use ($request) { @@ -135,26 +148,33 @@ public function update(Request $request, string $id) 'observaciones' => $request->input('observaciones')[$index] ?? null, ]; })->toArray(); - - $instituciones->telefonos()->delete(); - $instituciones->telefonos()->createMany($telefonos); + + // 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); } - - // Guardar redes sociales - $redes = collect($request->input('link_inst'))->map(function($url, $index) use ($request) { - return [ - 'red_social_inst' => $request->input('red_social_inst')[$index], // Debe ser el username - 'link_inst' => $url, // Debe ser la URL de la red social - 'tipo_RS_inst' => $request->input('tipo_red_social')[$index], // Tipo de red social - ]; - }); - - $instituciones->redesSocialesInst()->delete(); - $instituciones->redesSocialesInst()->createMany($redes->toArray()); return redirect()->route('instituciones.get')->with('success', 'Institución actualizada correctamente'); } - + public function destroy(string $id) { try { 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 index 7793a27..534e066 100644 --- a/database/migrations/2024_06_24_175056_create_telefono_insts_table.php +++ b/database/migrations/2024_06_24_175056_create_telefono_insts_table.php @@ -17,7 +17,7 @@ public function up(): void $table->integer('lada')->nullable(); $table->bigInteger('numero')->nullable(); $table->string('tipo')->nullable(); - $table->boolean('estatus')->nullable(); + $table->string('estatus')->nullable(); $table->integer('ext')->nullable(); $table->string('observaciones')->nullable(); $table->string('ID_radio')->nullable(); diff --git a/resources/views/adminGen/instituciones/index.blade.php b/resources/views/adminGen/instituciones/index.blade.php index 456cf9a..10bdd45 100644 --- a/resources/views/adminGen/instituciones/index.blade.php +++ b/resources/views/adminGen/instituciones/index.blade.php @@ -1,21 +1,20 @@ + -
    +
    -
    -
    -
    -

    Lista de Instituciones

    + +
    - + +
    - + - + @foreach($instituciones as $institucion) - - - - - - - + + + + + + + @endforeach
    IDId NombreDomicilio AniversarioDomicilio Acciones
    {{ $institucion->id }}{{ $institucion->nombre }}{{ $institucion->domicilio }}{{ $institucion->aniversario }} -
    - Editar -
    - @csrf - @method('DELETE') - -
    -
    -
    {{ $institucion->id }}{{ $institucion->nombre }}{{ $institucion->aniversario }}{{ $institucion->domicilio }} +
    + Ver institución + Editar +
    + @csrf + @method('DELETE') + +
    +
    +
    +
    +
    + + + - - - + + + - - + - \ No newline at end of file + diff --git a/resources/views/adminGen/instituciones/show.blade.php b/resources/views/adminGen/instituciones/show.blade.php new file mode 100644 index 0000000..83b2f56 --- /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/routes/web.php b/routes/web.php index db5c869..a3c6a51 100644 --- a/routes/web.php +++ b/routes/web.php @@ -78,11 +78,29 @@ 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::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'); + }); + -- GitLab