Commit 468720e2 authored by Alfonso Rafael Solis Rangel's avatar Alfonso Rafael Solis Rangel
Browse files

Correcciones a los contactos

parent bf3a07cf
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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'));
    }

    /**
@@ -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']);
@@ -84,7 +87,6 @@ public function store(Request $request)
                'profesion_id',
                'cargo_id',
                'caracteristica_id',
                'subgrupo_id',
                'mes_cump',
                'dia_cump',
                //institucion_id
@@ -95,7 +97,6 @@ public function store(Request $request)
                    unset($requestData[$field]);
                }
            }

            $request->replace($requestData);

            $data = $request->all();
@@ -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){
+10 −1
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ class Contacto extends Model
        'cargo_id',
        'caracteristica_id',
        //'institucion_id',
        'subgrupo_id',
    ];

    public function profesion(): BelongsTo
@@ -77,4 +76,14 @@ public function listas(): BelongsToMany
    {
        return $this->belongsToMany(Lista::class);
    }

    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');
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -27,5 +27,10 @@ public function listas(): BelongsToMany
        return $this->belongsToMany(Lista::class);
    }

    public function contactos(): BelongsToMany
    {
        return $this->belongsToMany(Contacto::class, 'contactos_grupos', 'contacto_id', 'grupo_id');
    }
    
    public $timestamps = false;
}
+5 −0
Original line number Diff line number Diff line
@@ -31,4 +31,9 @@ public function listas(): BelongsToMany
    {
        return $this->belongsToMany(Lista::class);
    }

    public function contactos(): BelongsToMany
    {
        return $this->belongsToMany(Contacto::class, 'contactos_subgrupos', 'contacto_id', 'subgrupo_id');
    }
}
+42 −16
Original line number Diff line number Diff line
@@ -239,25 +239,15 @@
                                    <br>
                                </div>
                                <div x-show="activeTab === 2">
                                    <div id="dynamicFormContainerGrupos" class="grid grid-cols-2 md:grid-cols-2 gap-5 form-group relative">
                                        <div>
                                            <div class="mb-5">
                                                <label for="subgrupo_id">Subgrupos</label>
                                                <select id="subgrupo_id" name="subgrupo_id" class="block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
                                                    <option value="null" selected>Selecciona una opción</option>
                                                    @foreach($subgrupos as $subgrupo)
                                                        <option value="{{ $subgrupo->id }}">{{ $subgrupo->nombre }}</option>
                                                    @endforeach
                                                </select>

                                                <!-- TODO Intituciones pendientes -->
                                    <div class="grid grid-cols-2 md:grid-cols-2 gap-5 form-group relative">
                                        <div id="dynamicFormContainerSubgrupos">
                                        </div>

                                        <div id="dynamicFormContainerGrupos">
                                        </div>
                                        <button type="button" class="btn btn-primary" id="agregarBtnSubgrupo">Agregar Subgrupo</button>
                                        <button type="button" class="btn btn-primary" id="agregarBtnGrupo">Agregar Grupo</button>
                                    </div>
                                    <br>
                                    <button type="button" class="btn btn-primary" id="agregarBtnRed">Agregar</button>
                                    <br>
                                </div>

                                <div x-show="activeTab === 3">
@@ -517,9 +507,13 @@
        const agregarBtnTel = document.getElementById('agregarBtnTel');
        const agregarBtnRed = document.getElementById('agregarBtnRed');
        const agregarBtnCorreo = document.getElementById('agregarBtnCorreo');
        const agregarBtnSubgrupo = document.getElementById('agregarBtnSubgrupo');
        const agregarBtnGrupo = document.getElementById('agregarBtnGrupo');
        const dynamicFormContainerTel = document.getElementById('dynamicFormContainerTel');
        const dynamicFormContainerRed = document.getElementById('dynamicFormContainerRed');
        const dynamicFormContainerCorreo = document.getElementById('dynamicFormContainerCorreo');
        const dynamicFormContainerSubgrupos = document.getElementById('dynamicFormContainerSubgrupos');
        const dynamicFormContainerGrupos = document.getElementById('dynamicFormContainerGrupos');

        agregarBtnTel.addEventListener('click', function() {
            const newFormGroup = document.createElement('div');
@@ -656,6 +650,38 @@
            });
        });

        agregarBtnSubgrupo.addEventListener('click', function(){
            const newFormGroup = document.createElement('div');
            newFormGroup.innerHTML = `
                    <div class="mb-5">
                        <label for="subgrupo_id">Subgrupo</label>
                        <select id="subgrupo_id" name="subgrupo_id[]" class="block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
                            <option value="null" selected>Selecciona una opción</option>
                            @foreach($subgrupos as $subgrupo)
                                <option value="{{ $subgrupo->id }}">{{ $subgrupo->nombre }}</option>
                            @endforeach
                        </select>
                    </div>
            `;
            dynamicFormContainerSubgrupos.appendChild(newFormGroup);
        });

        agregarBtnGrupo.addEventListener('click', function(){
            const newFormGroup = document.createElement('div');
            newFormGroup.innerHTML = `
                <div class="mb-5">
                    <label for="grupo_id">Grupo</label>
                    <select id="grupo_id" name="grupo_id[]" class="block w-full py-2 px-3 border border-gray-300 bg-white rounded-md shadow-sm focus:outline-none focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm">
                        <option value="null" selected>Selecciona una opción</option>
                        @foreach($grupos as $grupo)
                            <option value="{{ $grupo->id }}">{{ $grupo->nombre }}</option>
                        @endforeach
                    </select>
                </div>
            `;
            dynamicFormContainerGrupos.appendChild(newFormGroup);
        });

        // Añadir evento de clic para eliminar a los grupos iniciales
        document.querySelectorAll('.removeBtn').forEach(function(btn) {
            btn.addEventListener('click', function() {