Commit 67bad761 authored by Alfonso Rafael Solis Rangel's avatar Alfonso Rafael Solis Rangel
Browse files

Pendiente de probar los datos almacenados

parent 44b2f1cf
Loading
Loading
Loading
Loading
+80 −4
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Storage;

class ContactoController extends Controller
{
@@ -149,17 +150,92 @@ public function show(Contacto $contacto)
    /**
     * Show the form for editing the specified resource.
     */
    public function edit(Contacto $contacto)
    public function edit(string $id)
    {
        //
        $conyuges = Contacto::where('id', '!=' ,$id)->get();
        $profesiones = Profesion::get();
        $cargos = cargos::get();
        $caracteristicas = Caracteristicas::get();
        $subgrupos = Subgrupo::get();
        $contacto = Contacto::with(['telefonos', 'redes', 'correos'])->findOrFail($id);
        //dd($contacto);
        return view('adminGen.contactos.edit', compact('contacto', 'conyuges', 'profesiones', 'cargos', 'caracteristicas', 'subgrupos'));
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, Contacto $contacto)
    public function update(Request $request, string $id)
    {
        //
        // Validar los datos
        $validatedData = $request->validate([
            'nombre' => 'required|string|max:255',
            'foto_perfil' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
        ]);
        $contacto = Contacto::findOrFail($id);

        $contacto->conyuge_id = $request->input('conyuge_id') !== 'null' ? $request->input('conyuge_id') : null;
        $contacto->profesion_id = $request->input('profesion_id') !== 'null' ? $request->input('profesion_id') : null;
        $contacto->cargo_id = $request->input('cargo_id') !== 'null' ? $request->input('cargo_id') : null;
        $contacto->cargo_desc = $request->input('cargo_desc');

        if ($request->hasFile('foto_perfil')) {
            // Eliminar la foto de perfil anterior si existe
            if ($contacto->foto_perfil) {
                Storage::delete('public/' . $contacto->foto_perfil);
            }
    
            // Guardar la nueva foto de perfil
            $path_file = $this->storeProfilePicture($request);
            $contacto->foto_perfil = $path_file;
        }

        

        // Actualizar los datos del usuario
        $contacto->update($validatedData);
        

        // Guardar teléfonos
        $telefonos = collect($request->input('prefijo'))->map(function($prefijo, $index) use ($request) {
            return [
                'prefijo' => $prefijo,
                'lada' => $request->input('lada')[$index],
                'numero' => $request->input('numero')[$index],
                'tipo' => $request->input('tipo')[$index],
                'estatus' => $request->input('estatus')[$index],
                'ext' => $request->input('ext')[$index],
                'id_radio' => $request->input('id_radio')[$index],
                'observaciones' => $request->input('observaciones')[$index],
            ];
        });

        $contacto->telefonos()->delete();
        $contacto->telefonos()->createMany($telefonos->toArray());

        // Guardar redes sociales
        $redes = collect($request->input('red_social'))->map(function($url, $index) use ($request) {
            return [
                'red_social' => $url,
                'tipo_red_social' => $request->input('tipo_red_social')[$index],
            ];
        });

        $contacto->redes()->delete();
        $contacto->redes()->createMany($redes->toArray());

        // Guardar correos electrónicos
        $correos = collect($request->input('correo_electronico'))->map(function($email, $index) use ($request) {
            return [
                'correo_electronico' => $email,
                'tipo_correo_electronico' => $request->input('tipo_correo_electronico')[$index],
            ];
        });

        $contacto->correos()->delete();
        $contacto->correos()->createMany($correos->toArray());

        return redirect()->route('contacto.index')->with('success', 'Contacto actualizado correctamente');
    }

    /**