Loading app/Http/Controllers/ContactoController.php +32 −6 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ public function store(Request $request) $correosData = $request->only(['correo_electronico', 'tipo_correo_electronico']); $correosData = array_map(function ($item) { return array_map(function ($value) { return ($value === '0' || $value === "null") ? null : $value; return ($value === "null") ? null : $value; }, $item); }, $correosData); Loading Loading @@ -170,30 +170,56 @@ 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', 'foto_perfil' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048', ]); $contacto = Contacto::findOrFail($id); $fieldsToCheck = [ 'conyuge_id', 'profesion_id', 'cargo_id', 'caracteristica_id', 'subgrupo_id', 'mes_cump', 'dia_cump', //institucion_id ]; $requestData = $request->all(); foreach ($fieldsToCheck as $field) { if (isset($requestData[$field]) && $requestData[$field] === "null") { unset($requestData[$field]); } } $request->replace($requestData); $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'); $data = $request->all(); if ($request->hasFile('foto_perfil')) { // Eliminar la foto de perfil anterior si existe if ($contacto->foto_perfil) { Storage::delete('public/' . $contacto->foto_perfil); Storage::delete(STR::substr($contacto->foto_perfil, 8)); } // Guardar la nueva foto de perfil $path_file = $this->storeProfilePicture($request); $contacto->foto_perfil = $path_file; if ($path_file) { $data['foto_perfil'] = 'storage/' . $path_file; }else{ $data['foto_perfil'] = 'assets/images/profile-icon.webp'; } } // Actualizar los datos del usuario $contacto->update($validatedData); $contacto->update($data); // Guardar teléfonos Loading Loading @@ -235,7 +261,7 @@ public function update(Request $request, string $id) $contacto->correos()->delete(); $contacto->correos()->createMany($correos->toArray()); return redirect()->route('contacto.index')->with('success', 'Contacto actualizado correctamente'); return redirect()->route('contacto.get')->with('success', 'Contacto actualizado correctamente'); } /** Loading Loading
app/Http/Controllers/ContactoController.php +32 −6 Original line number Diff line number Diff line Loading @@ -70,7 +70,7 @@ public function store(Request $request) $correosData = $request->only(['correo_electronico', 'tipo_correo_electronico']); $correosData = array_map(function ($item) { return array_map(function ($value) { return ($value === '0' || $value === "null") ? null : $value; return ($value === "null") ? null : $value; }, $item); }, $correosData); Loading Loading @@ -170,30 +170,56 @@ 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', 'foto_perfil' => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048', ]); $contacto = Contacto::findOrFail($id); $fieldsToCheck = [ 'conyuge_id', 'profesion_id', 'cargo_id', 'caracteristica_id', 'subgrupo_id', 'mes_cump', 'dia_cump', //institucion_id ]; $requestData = $request->all(); foreach ($fieldsToCheck as $field) { if (isset($requestData[$field]) && $requestData[$field] === "null") { unset($requestData[$field]); } } $request->replace($requestData); $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'); $data = $request->all(); if ($request->hasFile('foto_perfil')) { // Eliminar la foto de perfil anterior si existe if ($contacto->foto_perfil) { Storage::delete('public/' . $contacto->foto_perfil); Storage::delete(STR::substr($contacto->foto_perfil, 8)); } // Guardar la nueva foto de perfil $path_file = $this->storeProfilePicture($request); $contacto->foto_perfil = $path_file; if ($path_file) { $data['foto_perfil'] = 'storage/' . $path_file; }else{ $data['foto_perfil'] = 'assets/images/profile-icon.webp'; } } // Actualizar los datos del usuario $contacto->update($validatedData); $contacto->update($data); // Guardar teléfonos Loading Loading @@ -235,7 +261,7 @@ public function update(Request $request, string $id) $contacto->correos()->delete(); $contacto->correos()->createMany($correos->toArray()); return redirect()->route('contacto.index')->with('success', 'Contacto actualizado correctamente'); return redirect()->route('contacto.get')->with('success', 'Contacto actualizado correctamente'); } /** Loading