diff --git a/app/Http/Controllers/SubgrupoController.php b/app/Http/Controllers/SubgrupoController.php new file mode 100644 index 0000000000000000000000000000000000000000..a3adcd6d4cea812fcf951d079bc72ca37cff8741 --- /dev/null +++ b/app/Http/Controllers/SubgrupoController.php @@ -0,0 +1,98 @@ +with('subgrupo')->get(); + + return view('adminGen.catalogos.subgrupos.index', compact('subgrupos')); + } + + /** + * Show the form for creating a new resource. + */ + public function create() + { + $subgrupos = Subgrupo::get(); + $grupos = Grupos::get(); + return view('adminGen.catalogos.subgrupos.create', compact('subgrupos', 'grupos')); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + $subgrupo = new Subgrupo; + $subgrupo->nombre = $request->nombre; + if(isset($request->grupo_id) && isset($request->subgrupo_id)) return redirect()->route('catalogos.subgrupos.create')->withErrors('Error al crear el subgrupo, solo es posible seleccionar un grupo o un subgrupo.'); + if(isset($request->grupo_id)) $subgrupo->grupo_id = $request->grupo_id; + if(isset($request->subgrupo_id)) $subgrupo->subgrupo_id = $request->subgrupo_id; + $subgrupo->save(); + return redirect()->route('catalogos.subgrupos.get')->with('success', 'Subgrupo creado correctamente.'); + } + + /** + * Display the specified resource. + */ + public function show(Subgrupo $subgrupo) + { + // + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(string $id) + { + $subgrupos = Subgrupo::where('id', '!=', $id)->get(); + $subgrupo = Subgrupo::findOrFail($id); + $grupos = Grupos::get(); + + return view('adminGen.catalogos.subgrupos.edit', compact('subgrupos', 'grupos', 'subgrupo')); + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, string $id) + { + $subgrupo = Subgrupo::findOrFail($id); + $subgrupo->nombre = $request->nombre; + if(isset($request->grupo_id) && isset($request->subgrupo_id)) return redirect()->route('catalogos.subgrupos.create')->withErrors('Error al crear el subgrupo, solo es posible seleccionar un grupo o un subgrupo.'); + if(isset($request->grupo_id)){ + $subgrupo->grupo_id = $request->grupo_id; + $subgrupo->subgrupo_id = null; + } + if(isset($request->subgrupo_id)){ + $subgrupo->subgrupo_id = $request->subgrupo_id; + $subgrupo->grupo_id = null; + } + $subgrupo->save(); + return redirect()->route('catalogos.subgrupos.get')->with('success', 'Subgrupo actualizado correctamente.'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(string $id) + { + try{ + $subgrupo = Subgrupo::findOrFail($id); + $subgrupo->delete(); + return redirect()->route('catalogos.subgrupos.get')->with('success', 'Subgrupo eliminado correctamente.'); + }catch(\Exception $e){ + return redirect()->route('catalogos.subgrupos.get')->withErrors('Error al eliminar el subgrupo:' . $e->getMessage()); + } + } +} diff --git a/app/Http/Controllers/subgrupoController.php b/app/Http/Controllers/subgrupoController.php deleted file mode 100644 index 12badd4cc3b48523e8fe228f9a879184b6269413..0000000000000000000000000000000000000000 --- a/app/Http/Controllers/subgrupoController.php +++ /dev/null @@ -1,10 +0,0 @@ -belongsTo(Grupos::class); + } + + public function subgrupo(): BelongsTo + { + return $this->belongsTo(Subgrupo::class); + } +} diff --git a/app/Models/subgrupo.php b/app/Models/subgrupo.php deleted file mode 100644 index c834afbe0c2e28e01fa780f6e03e0e39caf42c38..0000000000000000000000000000000000000000 --- a/app/Models/subgrupo.php +++ /dev/null @@ -1,11 +0,0 @@ -id(); + $table->string('nombre'); $table->unsignedBigInteger('grupo_id')->nullable(); $table->unsignedBigInteger('subgrupo_id')->nullable(); - $table->timestamps(); $table->foreign('grupo_id')->references('id')->on('grupos')->nullable(); $table->foreign('subgrupo_id')->references('id')->on('subgrupos')->nullable(); + $table->timestamps(); }); } diff --git a/resources/views/adminGen/catalogos/subgrupos/create.blade.php b/resources/views/adminGen/catalogos/subgrupos/create.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..e1580047d016be85c1abd6651d1987dbc5501544 --- /dev/null +++ b/resources/views/adminGen/catalogos/subgrupos/create.blade.php @@ -0,0 +1,168 @@ + + + + + + + + Dashboard + + + Catálogos + + + Grupos + + + Subgrupos + + + Crear subgrupo + + + + + Crear nuevo subgrupo + + + + @csrf + + + Nombre + + + + Grupo + + Selecciona una opción + @foreach($grupos as $grupo) + {{ $grupo->nombre }} + @endforeach + + + + Subgrupo + + Selecciona una opción + @foreach($subgrupos as $subgrupo) + {{ $subgrupo->nombre }} + @endforeach + + + Nota: Solo es posible seleccionar un grupo o un subgrupo, más no ambos. + + Guardar + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/views/adminGen/catalogos/subgrupos/edit.blade.php b/resources/views/adminGen/catalogos/subgrupos/edit.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..b3d5b801776cb1a7ea5b7855c450a61de9cb6353 --- /dev/null +++ b/resources/views/adminGen/catalogos/subgrupos/edit.blade.php @@ -0,0 +1,168 @@ + + + + + + + Dashboard + + + Catálogos + + + Grupos + + + Subgrupos + + + Editar subgrupo + + + + + Editar subgrupo + + + + @csrf + @method('PUT') + + + Nombre + + + + Grupo + + grupo_id) selected='selected' @endif>Selecciona una opción + @foreach($grupos as $grupo) + grupo_id == $grupo->id) selected='selected' @endif>{{ $grupo->nombre }} + @endforeach + + + + Subgrupo + + subgrupo_id) selected='selected' @endif>Selecciona una opción + @foreach($subgrupos as $subgrupoOpt) + subgrupo_id == $subgrupoOpt->id) selected='selected' @endif>{{ $subgrupoOpt->nombre }} + @endforeach + + + Nota: Solo es posible seleccionar un grupo o un subgrupo, más no ambos. + + Guardar + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/views/adminGen/catalogos/subgrupos/index.blade.php b/resources/views/adminGen/catalogos/subgrupos/index.blade.php new file mode 100644 index 0000000000000000000000000000000000000000..40895bdd5b035073cb6ea07d250d2c008ed3e728 --- /dev/null +++ b/resources/views/adminGen/catalogos/subgrupos/index.blade.php @@ -0,0 +1,120 @@ + + + + + + + + + Dashboard + + + Catálogos + + + Grupos + + + Subgrupos + + + + + + + + + + + + + + Crear nuevo subgrupo + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 95e14f6f7117bdd670328b7806454736cd3a4640..edaef8356678ebfeb84d9859fdaa178a13886737 100644 --- a/routes/web.php +++ b/routes/web.php @@ -8,6 +8,7 @@ use App\Http\Controllers\CaracteristicasController; use App\Http\Controllers\DependenciaController; use App\Http\Controllers\GruposController; +use App\Http\Controllers\SubgrupoController; use App\Http\Controllers\UserController; Route::get('/', function () { @@ -47,6 +48,13 @@ Route::post('/catalogos/dependencias', [DependenciaController::class, 'store'])->name('dependencias.store'); Route::put('/catalogos/dependencias', [DependenciaController::class, 'update'])->name('dependencias.update'); Route::delete('/catalogos/dependencias/{id}', [DependenciaController::class, 'destroy'])->name('dependencias.destroy'); + + Route::get('/catalogos/grupos/subgrupos', [SubgrupoController::class, 'index'])->name('subgrupos.get'); + Route::get('/catalogos/grupos/subgrupos/crear', [SubgrupoController::class, 'create'])->name('subgrupos.create'); + Route::post('/catalogos/grupos/subgrupos/crear', [SubgrupoController::class, 'store'])->name('subgrupos.store'); + Route::get('/catalogos/grupos/subgrupos/{id}/editar', [SubgrupoController::class, 'edit'])->name('subgrupos.edit'); + Route::put('/catalogos/grupos/subgrupos/{id}/editar', [SubgrupoController::class, 'update'])->name('subgrupos.update'); + Route::delete('/catalogos/grupos/subgrupos/{id}', [SubgrupoController::class, 'destroy'])->name('subgrupos.destroy'); }); Route::name('usuarios.')->group(function () {