Loading app/Http/Controllers/ContactoController.php +13 −3 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ use App\Models\cargos; use App\Models\Contacto; use App\Models\CorreoContactos; use App\Models\Grupos; use App\Models\Profesion; use App\Models\Subgrupo; use App\Models\Telefono; Loading Loading @@ -40,7 +41,8 @@ public function create() $cargos = cargos::get(); $caracteristicas = Caracteristicas::get(); $subgrupos = Subgrupo::get(); return view('adminGen.contactos.create', compact('conyuges', 'profesiones', 'cargos', 'caracteristicas', 'subgrupos')); $grupos = Grupos::get(); return view('adminGen.contactos.create', compact('conyuges', 'profesiones', 'cargos', 'caracteristicas', 'subgrupos', 'grupos')); } /** Loading @@ -51,6 +53,7 @@ public function store(Request $request) $request->validate([ 'foto_perfil' => 'image|mimes:jpeg,png,jpg,gif|max:2048', 'nombre' => 'required|max:255|string', 'ap_paterno' => 'required|max:255|string', ]); $telefonosData = $request->only(['prefijo', 'lada', 'numero', 'tipo', 'estatus', 'ext', 'id_radio', 'observaciones']); Loading Loading @@ -84,7 +87,6 @@ public function store(Request $request) 'profesion_id', 'cargo_id', 'caracteristica_id', 'subgrupo_id', 'mes_cump', 'dia_cump', //institucion_id Loading @@ -95,7 +97,6 @@ public function store(Request $request) unset($requestData[$field]); } } $request->replace($requestData); $data = $request->all(); Loading Loading @@ -132,6 +133,15 @@ public function store(Request $request) throw new \Exception('Error al guardar los correos electrónicos'); } // Sincronizar subgrupos y grupos if ($request->has('subgrupo_id')) { $contacto->subgrupos()->sync($request->input('subgrupo_id')); } if ($request->has('grupo_id')) { $contacto->grupos()->sync($request->input('grupo_id')); } DB::commit(); return redirect()->route('contacto.get')->with('success', 'Contacto guardado correctamente'); }catch (\Exception $e){ Loading app/Http/Controllers/ListaController.php 0 → 100644 +119 −0 Original line number Diff line number Diff line <?php namespace App\Http\Controllers; use App\Models\Contacto; use App\Models\Grupos; use App\Models\Lista; use App\Models\Subgrupo; use Illuminate\Http\Request; class ListaController extends Controller { /** * Display a listing of the resource. */ public function index() { $listas = Lista::get(); return view('adminGen.listas.index', compact('listas')); } /** * Show the form for creating a new resource. */ public function create() { $contactos = Contacto::get(); $grupos = Grupos::get(); $subgrupos = Subgrupo::get(); return view('adminGen.listas.create', compact('contactos', 'grupos', 'subgrupos')); } /** * Store a newly created resource in storage. */ public function store(Request $request) { $request->validate([ 'nombre' => 'required|string|max:255', ]); $lista = Lista::create($request->only('nombre')); $grupoIds = array_filter($request->input('grupo_id', []), fn($value) => $value !== 'null'); $subgrupoIds = array_filter($request->input('subgrupo_id', []), fn($value) => $value !== 'null'); $contactoIds = array_filter($request->input('contacto_id', []), fn($value) => $value !== 'null'); // Sincronizar relaciones $lista->grupos()->sync($grupoIds); $lista->subgrupos()->sync($subgrupoIds); $lista->contactos()->sync($contactoIds); return redirect()->route('listas.get')->with('success', 'Lista creada correctamente.'); } /** * Display the specified resource. */ public function show(string $id) { $lista = Lista::with('contactos', 'grupos', 'subgrupos')->findOrFail($id); return view('adminGen.listas.show', compact('lista')); } /** * Show the form for editing the specified resource. */ public function edit(string $id) { $contactos = Contacto::get(); $grupos = Grupos::get(); $subgrupos = Subgrupo::get(); $lista = Lista::with('contactos', 'grupos', 'subgrupos')->findOrFail($id); return view('adminGen.listas.edit', compact('lista', 'contactos', 'grupos', 'subgrupos')); } /** * Update the specified resource in storage. */ public function update(Request $request, string $id) { // Validar solo los campos necesarios $request->validate([ 'nombre' => 'required|string|max:255', ]); // Recuperar la lista existente $lista = Lista::findOrFail($id); // Actualizar el nombre $lista->update($request->only('nombre')); // Filtrar valores null y cadenas "null" antes de sincronizar $grupoIds = array_filter($request->input('grupo_id', []), fn($value) => $value !== 'null'); $subgrupoIds = array_filter($request->input('subgrupo_id', []), fn($value) => $value !== 'null'); $contactoIds = array_filter($request->input('contacto_id', []), fn($value) => $value !== 'null'); // Sincronizar relaciones $lista->grupos()->sync($grupoIds); $lista->subgrupos()->sync($subgrupoIds); $lista->contactos()->sync($contactoIds); return redirect()->route('listas.get')->with('success', 'Lista actualizada correctamente.'); } /** * Remove the specified resource from storage. */ public function destroy(string $id) { try{ $lista = Lista::findOrFail($id); $lista->delete(); return redirect()->route('listas.get')->with('success', 'Lista eliminada correctamente.'); }catch(\Exception $e){ return redirect()->route('contacto.get')->withErrors('Error al eliminar la lista.'); } } } app/Models/Contacto.php +20 −4 Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; class Contacto extends Model { Loading Loading @@ -38,7 +40,6 @@ class Contacto extends Model 'cargo_id', 'caracteristica_id', //'institucion_id', 'subgrupo_id', ]; public function profesion(): BelongsTo Loading @@ -56,18 +57,33 @@ public function cargo(): BelongsTo return $this->belongsTo(cargos::class); } public function telefonos() public function telefonos(): HasMany { return $this->hasMany(Telefono::class); } public function redes() public function redes(): HasMany { return $this->hasMany(RedesSociales::class); } public function correos() public function correos(): HasMany { return $this->hasMany(CorreoContactos::class); } public function listas(): BelongsToMany { return $this->belongsToMany(Lista::class, 'listas_contactos', 'contacto_id', 'lista_id'); } public function subgrupos(): BelongsToMany { return $this->belongsToMany(Subgrupo::class, 'contactos_subgrupos', 'contacto_id', 'subgrupo_id'); } public function grupos(): BelongsToMany { return $this->belongsToMany(Grupos::class, 'contactos_grupos', 'contacto_id', 'grupo_id'); } } app/Models/Grupos.php +12 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; class Grupos extends Model { Loading @@ -20,5 +22,15 @@ public function users(): HasMany { } public function listas(): BelongsToMany { return $this->belongsToMany(Lista::class, 'listas_grupos', 'grupo_id', 'lista_id'); } public function contactos(): BelongsToMany { return $this->belongsToMany(Contacto::class, 'contactos_grupos', 'contacto_id', 'grupo_id'); } public $timestamps = false; } app/Models/Lista.php 0 → 100644 +30 −0 Original line number Diff line number Diff line <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class Lista extends Model { use HasFactory; protected $fillable = [ 'nombre', ]; public function contactos(): BelongsToMany { return $this->belongsToMany(Contacto::class, 'listas_contactos', 'lista_id', 'contacto_id'); } public function grupos(): BelongsToMany { return $this->belongsToMany(Grupos::class, 'listas_grupos', 'lista_id', 'grupo_id'); } public function subgrupos(): BelongsToMany { return $this->belongsToMany(Subgrupo::class, 'listas_subgrupos', 'lista_id', 'subgrupo_id'); } } Loading
app/Http/Controllers/ContactoController.php +13 −3 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ use App\Models\cargos; use App\Models\Contacto; use App\Models\CorreoContactos; use App\Models\Grupos; use App\Models\Profesion; use App\Models\Subgrupo; use App\Models\Telefono; Loading Loading @@ -40,7 +41,8 @@ public function create() $cargos = cargos::get(); $caracteristicas = Caracteristicas::get(); $subgrupos = Subgrupo::get(); return view('adminGen.contactos.create', compact('conyuges', 'profesiones', 'cargos', 'caracteristicas', 'subgrupos')); $grupos = Grupos::get(); return view('adminGen.contactos.create', compact('conyuges', 'profesiones', 'cargos', 'caracteristicas', 'subgrupos', 'grupos')); } /** Loading @@ -51,6 +53,7 @@ public function store(Request $request) $request->validate([ 'foto_perfil' => 'image|mimes:jpeg,png,jpg,gif|max:2048', 'nombre' => 'required|max:255|string', 'ap_paterno' => 'required|max:255|string', ]); $telefonosData = $request->only(['prefijo', 'lada', 'numero', 'tipo', 'estatus', 'ext', 'id_radio', 'observaciones']); Loading Loading @@ -84,7 +87,6 @@ public function store(Request $request) 'profesion_id', 'cargo_id', 'caracteristica_id', 'subgrupo_id', 'mes_cump', 'dia_cump', //institucion_id Loading @@ -95,7 +97,6 @@ public function store(Request $request) unset($requestData[$field]); } } $request->replace($requestData); $data = $request->all(); Loading Loading @@ -132,6 +133,15 @@ public function store(Request $request) throw new \Exception('Error al guardar los correos electrónicos'); } // Sincronizar subgrupos y grupos if ($request->has('subgrupo_id')) { $contacto->subgrupos()->sync($request->input('subgrupo_id')); } if ($request->has('grupo_id')) { $contacto->grupos()->sync($request->input('grupo_id')); } DB::commit(); return redirect()->route('contacto.get')->with('success', 'Contacto guardado correctamente'); }catch (\Exception $e){ Loading
app/Http/Controllers/ListaController.php 0 → 100644 +119 −0 Original line number Diff line number Diff line <?php namespace App\Http\Controllers; use App\Models\Contacto; use App\Models\Grupos; use App\Models\Lista; use App\Models\Subgrupo; use Illuminate\Http\Request; class ListaController extends Controller { /** * Display a listing of the resource. */ public function index() { $listas = Lista::get(); return view('adminGen.listas.index', compact('listas')); } /** * Show the form for creating a new resource. */ public function create() { $contactos = Contacto::get(); $grupos = Grupos::get(); $subgrupos = Subgrupo::get(); return view('adminGen.listas.create', compact('contactos', 'grupos', 'subgrupos')); } /** * Store a newly created resource in storage. */ public function store(Request $request) { $request->validate([ 'nombre' => 'required|string|max:255', ]); $lista = Lista::create($request->only('nombre')); $grupoIds = array_filter($request->input('grupo_id', []), fn($value) => $value !== 'null'); $subgrupoIds = array_filter($request->input('subgrupo_id', []), fn($value) => $value !== 'null'); $contactoIds = array_filter($request->input('contacto_id', []), fn($value) => $value !== 'null'); // Sincronizar relaciones $lista->grupos()->sync($grupoIds); $lista->subgrupos()->sync($subgrupoIds); $lista->contactos()->sync($contactoIds); return redirect()->route('listas.get')->with('success', 'Lista creada correctamente.'); } /** * Display the specified resource. */ public function show(string $id) { $lista = Lista::with('contactos', 'grupos', 'subgrupos')->findOrFail($id); return view('adminGen.listas.show', compact('lista')); } /** * Show the form for editing the specified resource. */ public function edit(string $id) { $contactos = Contacto::get(); $grupos = Grupos::get(); $subgrupos = Subgrupo::get(); $lista = Lista::with('contactos', 'grupos', 'subgrupos')->findOrFail($id); return view('adminGen.listas.edit', compact('lista', 'contactos', 'grupos', 'subgrupos')); } /** * Update the specified resource in storage. */ public function update(Request $request, string $id) { // Validar solo los campos necesarios $request->validate([ 'nombre' => 'required|string|max:255', ]); // Recuperar la lista existente $lista = Lista::findOrFail($id); // Actualizar el nombre $lista->update($request->only('nombre')); // Filtrar valores null y cadenas "null" antes de sincronizar $grupoIds = array_filter($request->input('grupo_id', []), fn($value) => $value !== 'null'); $subgrupoIds = array_filter($request->input('subgrupo_id', []), fn($value) => $value !== 'null'); $contactoIds = array_filter($request->input('contacto_id', []), fn($value) => $value !== 'null'); // Sincronizar relaciones $lista->grupos()->sync($grupoIds); $lista->subgrupos()->sync($subgrupoIds); $lista->contactos()->sync($contactoIds); return redirect()->route('listas.get')->with('success', 'Lista actualizada correctamente.'); } /** * Remove the specified resource from storage. */ public function destroy(string $id) { try{ $lista = Lista::findOrFail($id); $lista->delete(); return redirect()->route('listas.get')->with('success', 'Lista eliminada correctamente.'); }catch(\Exception $e){ return redirect()->route('contacto.get')->withErrors('Error al eliminar la lista.'); } } }
app/Models/Contacto.php +20 −4 Original line number Diff line number Diff line Loading @@ -5,6 +5,8 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; class Contacto extends Model { Loading Loading @@ -38,7 +40,6 @@ class Contacto extends Model 'cargo_id', 'caracteristica_id', //'institucion_id', 'subgrupo_id', ]; public function profesion(): BelongsTo Loading @@ -56,18 +57,33 @@ public function cargo(): BelongsTo return $this->belongsTo(cargos::class); } public function telefonos() public function telefonos(): HasMany { return $this->hasMany(Telefono::class); } public function redes() public function redes(): HasMany { return $this->hasMany(RedesSociales::class); } public function correos() public function correos(): HasMany { return $this->hasMany(CorreoContactos::class); } public function listas(): BelongsToMany { return $this->belongsToMany(Lista::class, 'listas_contactos', 'contacto_id', 'lista_id'); } public function subgrupos(): BelongsToMany { return $this->belongsToMany(Subgrupo::class, 'contactos_subgrupos', 'contacto_id', 'subgrupo_id'); } public function grupos(): BelongsToMany { return $this->belongsToMany(Grupos::class, 'contactos_grupos', 'contacto_id', 'grupo_id'); } }
app/Models/Grupos.php +12 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; class Grupos extends Model { Loading @@ -20,5 +22,15 @@ public function users(): HasMany { } public function listas(): BelongsToMany { return $this->belongsToMany(Lista::class, 'listas_grupos', 'grupo_id', 'lista_id'); } public function contactos(): BelongsToMany { return $this->belongsToMany(Contacto::class, 'contactos_grupos', 'contacto_id', 'grupo_id'); } public $timestamps = false; }
app/Models/Lista.php 0 → 100644 +30 −0 Original line number Diff line number Diff line <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class Lista extends Model { use HasFactory; protected $fillable = [ 'nombre', ]; public function contactos(): BelongsToMany { return $this->belongsToMany(Contacto::class, 'listas_contactos', 'lista_id', 'contacto_id'); } public function grupos(): BelongsToMany { return $this->belongsToMany(Grupos::class, 'listas_grupos', 'lista_id', 'grupo_id'); } public function subgrupos(): BelongsToMany { return $this->belongsToMany(Subgrupo::class, 'listas_subgrupos', 'lista_id', 'subgrupo_id'); } }