Loading app/Http/Controllers/ContactoController.php +48 −33 Original line number Diff line number Diff line Loading @@ -227,8 +227,8 @@ public function update(Request $request, string $id) } // Guardar auditoría de teléfonos $telefonosAnteriores = $contacto->telefonos->toArray(); $telefonos = collect($request->input('prefijo'))->map(function($prefijo, $index) use ($request) { $telefonosAnteriores = collect($contacto->telefonos); $telefonosNuevos = collect($request->input('prefijo'))->map(function($prefijo, $index) use ($request) { return [ 'prefijo' => $prefijo, 'lada' => $request->input('lada')[$index], Loading @@ -239,15 +239,22 @@ public function update(Request $request, string $id) 'id_radio' => $request->input('id_radio')[$index], 'observaciones' => $request->input('observaciones')[$index], ]; })->toArray(); }); foreach ($telefonosAnteriores as $index => $telefonoAnterior) { foreach ($telefonoAnterior as $key => $value) { if (isset($telefonos[$index][$key]) && $value != $telefonos[$index][$key]) { // Unificar comparación entre teléfonos anteriores y nuevos $telefonosNuevos->each(function ($telefonoNuevo, $index) use ($telefonosAnteriores, &$changes, $contacto, $user) { // Asegurarse de que $telefonosAnteriores sea accesible y no usar get(), ya que es un array simple $telefonoAnterior = $telefonosAnteriores[$index] ?? []; // Si no hay un teléfono anterior en ese índice, usa un array vacío foreach ($telefonoNuevo as $key => $nuevoValor) { $valorAnterior = $telefonoAnterior[$key] ?? null; // Usa null si no existe el valor anterior // Solo registrar cambios si hay una diferencia if (strval($valorAnterior) !== $nuevoValor) { $changes[] = [ 'campo_editado' => "telefono_{$index}_{$key}", 'valor_anterior' => $value, 'nuevo_valor' => $telefonos[$index][$key], 'valor_anterior' => $valorAnterior, 'nuevo_valor' => $nuevoValor, 'contacto_id' => $contacto->id, 'user_id' => $user->id, 'created_at' => now(), Loading @@ -255,24 +262,28 @@ public function update(Request $request, string $id) ]; } } } }); // Guardar auditoría de redes sociales $redesAnteriores = $contacto->redes->toArray(); $redes = collect($request->input('red_social'))->map(function($url, $index) use ($request) { $redesAnteriores = collect($contacto->redes); $redesNuevos = collect($request->input('red_social'))->map(function($url, $index) use ($request) { return [ 'red_social' => $url, 'tipo_red_social' => $request->input('tipo_red_social')[$index], ]; })->toArray(); }); $redesNuevos->each(function ($redNuevo, $index) use ($redesAnteriores, &$changes, $contacto, $user){ $redAnterior = $redesAnteriores->get($index, []); foreach ($redNuevo as $key => $nuevoValor){ $valorAnterior = $redAnterior[$key] ?? null; foreach ($redesAnteriores as $index => $redAnterior) { foreach ($redAnterior as $key => $value) { if (isset($redes[$index][$key]) && $value != $redes[$index][$key]) { if(strval($valorAnterior) !== $nuevoValor){ $changes[] = [ 'campo_editado' => "red_{$index}_{$key}", 'valor_anterior' => $value, 'nuevo_valor' => $redes[$index][$key], 'valor_anterior' => $valorAnterior, 'nuevo_valor' => $nuevoValor, 'contacto_id' => $contacto->id, 'user_id' => $user->id, 'created_at' => now(), Loading @@ -280,24 +291,28 @@ public function update(Request $request, string $id) ]; } } } }); // Guardar auditoría de correos $correosAnteriores = $contacto->correos->toArray(); $correos = collect($request->input('correo_electronico'))->map(function($email, $index) use ($request) { $correosAnteriores = collect($contacto->correos); $correosNuevos = collect($request->input('correo_electronico'))->map(function($email, $index) use ($request) { return [ 'correo_electronico' => $email, 'tipo_correo_electronico' => $request->input('tipo_correo_electronico')[$index], ]; })->toArray(); }); $correosNuevos->each(function ($correoNuevo, $index) use ($correosAnteriores, &$changes, $contacto, $user){ $redAnterior = $correosAnteriores->get($index, []); foreach ($correosAnteriores as $index => $correoAnterior) { foreach ($correoAnterior as $key => $value) { if (isset($correos[$index][$key]) && $value != $correos[$index][$key]) { foreach ($correoNuevo as $key => $nuevoValor){ $valorAnterior = $redAnterior[$key] ?? null; if(strval($valorAnterior) !== $nuevoValor){ $changes[] = [ 'campo_editado' => "correo_{$index}_{$key}", 'valor_anterior' => $value, 'nuevo_valor' => $correos[$index][$key], 'valor_anterior' => $valorAnterior, 'nuevo_valor' => $nuevoValor, 'contacto_id' => $contacto->id, 'user_id' => $user->id, 'created_at' => now(), Loading @@ -305,7 +320,7 @@ public function update(Request $request, string $id) ]; } } } }); if (!empty($changes)) { Auditoria::insert($changes); Loading Loading @@ -349,15 +364,15 @@ public function update(Request $request, string $id) // Guardar teléfonos $contacto->telefonos()->delete(); $contacto->telefonos()->createMany($telefonos); $contacto->telefonos()->createMany($telefonosNuevos->toArray()); // Guardar redes sociales $contacto->redes()->delete(); $contacto->redes()->createMany($redes); $contacto->redes()->createMany($redesNuevos->toArray()); // Guardar correos electrónicos $contacto->correos()->delete(); $contacto->correos()->createMany($correos); $contacto->correos()->createMany($correosNuevos->toArray()); return redirect()->route('contacto.get')->with('success', 'Contacto actualizado correctamente'); } Loading Loading
app/Http/Controllers/ContactoController.php +48 −33 Original line number Diff line number Diff line Loading @@ -227,8 +227,8 @@ public function update(Request $request, string $id) } // Guardar auditoría de teléfonos $telefonosAnteriores = $contacto->telefonos->toArray(); $telefonos = collect($request->input('prefijo'))->map(function($prefijo, $index) use ($request) { $telefonosAnteriores = collect($contacto->telefonos); $telefonosNuevos = collect($request->input('prefijo'))->map(function($prefijo, $index) use ($request) { return [ 'prefijo' => $prefijo, 'lada' => $request->input('lada')[$index], Loading @@ -239,15 +239,22 @@ public function update(Request $request, string $id) 'id_radio' => $request->input('id_radio')[$index], 'observaciones' => $request->input('observaciones')[$index], ]; })->toArray(); }); foreach ($telefonosAnteriores as $index => $telefonoAnterior) { foreach ($telefonoAnterior as $key => $value) { if (isset($telefonos[$index][$key]) && $value != $telefonos[$index][$key]) { // Unificar comparación entre teléfonos anteriores y nuevos $telefonosNuevos->each(function ($telefonoNuevo, $index) use ($telefonosAnteriores, &$changes, $contacto, $user) { // Asegurarse de que $telefonosAnteriores sea accesible y no usar get(), ya que es un array simple $telefonoAnterior = $telefonosAnteriores[$index] ?? []; // Si no hay un teléfono anterior en ese índice, usa un array vacío foreach ($telefonoNuevo as $key => $nuevoValor) { $valorAnterior = $telefonoAnterior[$key] ?? null; // Usa null si no existe el valor anterior // Solo registrar cambios si hay una diferencia if (strval($valorAnterior) !== $nuevoValor) { $changes[] = [ 'campo_editado' => "telefono_{$index}_{$key}", 'valor_anterior' => $value, 'nuevo_valor' => $telefonos[$index][$key], 'valor_anterior' => $valorAnterior, 'nuevo_valor' => $nuevoValor, 'contacto_id' => $contacto->id, 'user_id' => $user->id, 'created_at' => now(), Loading @@ -255,24 +262,28 @@ public function update(Request $request, string $id) ]; } } } }); // Guardar auditoría de redes sociales $redesAnteriores = $contacto->redes->toArray(); $redes = collect($request->input('red_social'))->map(function($url, $index) use ($request) { $redesAnteriores = collect($contacto->redes); $redesNuevos = collect($request->input('red_social'))->map(function($url, $index) use ($request) { return [ 'red_social' => $url, 'tipo_red_social' => $request->input('tipo_red_social')[$index], ]; })->toArray(); }); $redesNuevos->each(function ($redNuevo, $index) use ($redesAnteriores, &$changes, $contacto, $user){ $redAnterior = $redesAnteriores->get($index, []); foreach ($redNuevo as $key => $nuevoValor){ $valorAnterior = $redAnterior[$key] ?? null; foreach ($redesAnteriores as $index => $redAnterior) { foreach ($redAnterior as $key => $value) { if (isset($redes[$index][$key]) && $value != $redes[$index][$key]) { if(strval($valorAnterior) !== $nuevoValor){ $changes[] = [ 'campo_editado' => "red_{$index}_{$key}", 'valor_anterior' => $value, 'nuevo_valor' => $redes[$index][$key], 'valor_anterior' => $valorAnterior, 'nuevo_valor' => $nuevoValor, 'contacto_id' => $contacto->id, 'user_id' => $user->id, 'created_at' => now(), Loading @@ -280,24 +291,28 @@ public function update(Request $request, string $id) ]; } } } }); // Guardar auditoría de correos $correosAnteriores = $contacto->correos->toArray(); $correos = collect($request->input('correo_electronico'))->map(function($email, $index) use ($request) { $correosAnteriores = collect($contacto->correos); $correosNuevos = collect($request->input('correo_electronico'))->map(function($email, $index) use ($request) { return [ 'correo_electronico' => $email, 'tipo_correo_electronico' => $request->input('tipo_correo_electronico')[$index], ]; })->toArray(); }); $correosNuevos->each(function ($correoNuevo, $index) use ($correosAnteriores, &$changes, $contacto, $user){ $redAnterior = $correosAnteriores->get($index, []); foreach ($correosAnteriores as $index => $correoAnterior) { foreach ($correoAnterior as $key => $value) { if (isset($correos[$index][$key]) && $value != $correos[$index][$key]) { foreach ($correoNuevo as $key => $nuevoValor){ $valorAnterior = $redAnterior[$key] ?? null; if(strval($valorAnterior) !== $nuevoValor){ $changes[] = [ 'campo_editado' => "correo_{$index}_{$key}", 'valor_anterior' => $value, 'nuevo_valor' => $correos[$index][$key], 'valor_anterior' => $valorAnterior, 'nuevo_valor' => $nuevoValor, 'contacto_id' => $contacto->id, 'user_id' => $user->id, 'created_at' => now(), Loading @@ -305,7 +320,7 @@ public function update(Request $request, string $id) ]; } } } }); if (!empty($changes)) { Auditoria::insert($changes); Loading Loading @@ -349,15 +364,15 @@ public function update(Request $request, string $id) // Guardar teléfonos $contacto->telefonos()->delete(); $contacto->telefonos()->createMany($telefonos); $contacto->telefonos()->createMany($telefonosNuevos->toArray()); // Guardar redes sociales $contacto->redes()->delete(); $contacto->redes()->createMany($redes); $contacto->redes()->createMany($redesNuevos->toArray()); // Guardar correos electrónicos $contacto->correos()->delete(); $contacto->correos()->createMany($correos); $contacto->correos()->createMany($correosNuevos->toArray()); return redirect()->route('contacto.get')->with('success', 'Contacto actualizado correctamente'); } Loading