From 63c401305828fed5b2ee3516f358c37f77cf5f75 Mon Sep 17 00:00:00 2001 From: alekeyrivas Date: Mon, 8 Jul 2024 14:16:06 -0600 Subject: [PATCH 1/2] Arreglo de errores en crear y editar instituciones --- .../Controllers/InstitucionesController.php | 113 ++++++++- public/assets/images/instituciones_icon.webp | Bin 0 -> 3644 bytes .../adminGen/instituciones/show.blade.php | 229 ++---------------- resources/views/auth/login.blade.php | 10 +- 4 files changed, 122 insertions(+), 230 deletions(-) create mode 100644 public/assets/images/instituciones_icon.webp diff --git a/app/Http/Controllers/InstitucionesController.php b/app/Http/Controllers/InstitucionesController.php index 73de09c..9ba2162 100644 --- a/app/Http/Controllers/InstitucionesController.php +++ b/app/Http/Controllers/InstitucionesController.php @@ -11,6 +11,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Str; use Illuminate\Support\Facades\Storage; +use Illuminate\Support\Facades\Log; class InstitucionesController extends Controller { @@ -29,6 +30,7 @@ public function create() public function store(Request $request) { // Validación de los datos del formulario + $request->validate([ 'nombre' => 'required|string|max:255', 'RFC' => 'nullable|string|max:13', @@ -40,13 +42,24 @@ public function store(Request $request) 'imagen' => 'nullable|file|image|max:2048', ]); - // Depuración: inspeccionar los datos recibidos - //\Log::info('Datos recibidos:', $data); + $telefonosData = $request->only(['prefijo', 'lada', 'numero', 'tipo', 'estatus', 'ext', 'id_radio', 'observaciones']); + $telefonosData = array_map(function ($item) { + return array_map(function ($value) { + return ($value === "null") ? null : $value; + }, $item); + }, $telefonosData); + + $redesSocialesData = $request->only(['red_social_inst', 'link_inst', 'tipo_RS_inst']); + $redesSocialesData = array_map(function ($item) { + return array_map(function ($value) { + return ($value === "null") ? null : $value; + }, $item); + }, $redesSocialesData); // Procesamiento y almacenamiento de la institución DB::beginTransaction(); try { - //$path_file = $this->storeProfilePicture($request); + $path_file = $this->storeProfilePicture($request); $fieldsToCheck = [ 'subgrupo_id', ]; @@ -56,21 +69,38 @@ public function store(Request $request) unset($requestData[$field]); } } + $request->replace($requestData); + $data = $request->all(); + // Crear la institución con los datos recibidos + + if ($path_file) { + $data['imagen'] = 'storage/' . $path_file; + }else{ + $data['imagen'] = 'assets/images/instituciones_icon.webp'; + } + $institucion = Instituciones::create($data); - // Manejar los datos de teléfonos - if (!empty($data['telefonos'])) { - $this->storeTelefonos($institucion->id, $data['telefonos']); - } - + + // Manejar los datos de teléfonos + $telefonosGuardados = $this->storeTelefonos($institucion->id, $telefonosData); + // Manejar los datos de redes sociales - if (!empty($data['redes_sociales'])) { - $this->storeRedesSociales($institucion->id, $data['redes_sociales']); + $redesSocialesGuardadas = $this->storeRedesSociales($institucion->id, $redesSocialesData); + + // Si había datos de teléfonos y no se guardaron, lanzar excepción + if ($telefonosGuardados === false && $this->telefonoDataPresent($telefonosData)) { + throw new \Exception('Error al guardar los teléfonos'); } - + + // Si había datos de redes sociales y no se guardaron, lanzar excepción + if ($redesSocialesGuardadas === false && $this->redSocialDataPresent($redesSocialesData)) { + throw new \Exception('Error al guardar las redes sociales'); + } + DB::commit(); return redirect()->route('instituciones.get')->with('success', 'Institución guardada correctamente'); } catch (\Exception $e) { @@ -81,6 +111,7 @@ public function store(Request $request) public function show(string $id) { + $instituciones = Instituciones::findOrFail($id); return view('adminGen.instituciones.show', compact('instituciones')); } @@ -179,7 +210,7 @@ public function destroy(string $id) { try { $instituciones = Instituciones::findOrFail($id); - $instituciones->redesSocialesInst()->delete(); // Cambio aquí + $instituciones->redesSocialesInst()->delete(); $instituciones->delete(); return redirect()->route('instituciones.get')->with('success', 'Institución eliminada correctamente.'); } catch(\Exception $e) { @@ -250,6 +281,64 @@ private function storeTelefonos($institucionId, $telefonosData) return false; } + private function telefonoDataPresent($telefonosData) + { + foreach ($telefonosData['numero'] as $index => $numero) { + foreach ($telefonosData as $key => $values) { + if (!is_null($values[$index]) && $values[$index] !== "null") { + return true; + } + } + } + + return false; + } + + private function storeRedesSociales($institucionesId, $redesSocialesData) + { + $redesSociales = []; + + foreach ($redesSocialesData['red_social_inst'] as $index => $redSocial) { + // Verificar si todos los campos de la red social están vacíos (null o "null") + $isEmpty = true; + foreach ($redesSocialesData as $key => $values) { + if (!is_null($values[$index]) && $values[$index] !== "null") { + $isEmpty = false; + break; + } + } + + if (!$isEmpty) { + $redesSociales[] = [ + 'instituciones_id' => $institucionesId, + 'red_social_inst' =>$redesSocialesData['red_social_inst'][$index], + 'link_inst' => $redesSocialesData['link_inst'][$index], + 'tipo_RS_inst' => $redesSocialesData['tipo_RS_inst'][$index], + ]; + } + } + + if (!empty($redesSociales)) { + RedesSocialesInst::insert($redesSociales); + return true; + } + + return false; + } + + private function redSocialDataPresent($redesSocialesData) + { + foreach ($redesSocialesData['red_social'] as $index => $redSocial) { + foreach ($redesSocialesData as $key => $values) { + if (!is_null($values[$index]) && $values[$index] !== "null") { + return true; + } + } + } + + return false; + } + private function storeProfilePicture(Request $request) { diff --git a/public/assets/images/instituciones_icon.webp b/public/assets/images/instituciones_icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..6bf21cf90f6161028188c149f39659e478d1ad3f GIT binary patch literal 3644 zcmeH}dobGz7ROnGRTa07mD>{Rt!nLh^x;uL(e~2T>)xxS^?uw&iAa(7i6Giet8PnG z_o9f{QY!VRCImrR+D7YDj|d`(HX$BOQi6EovEAv+&YjsAyZ`L{XZxA&oH;Y+pEKV- zzUTaO#?8$dq@v>g{fQs^emLfN@N;jae1ZEWDl8XKA?)rC{cu`gznhHcG8sy~KG22smQaywd)%?;fNF5&9lV(Jsog4^&c=un_(U~x;2FOsn9sbkn>xEUTbXKbXdLt zIW*uXyP-|6Uqe3AzERE%YDlLnRC9$-(+dzgZJ%o2@H(+$X4GH=hg)YZG1F6nqtVip zU4Y>w#9XwdhYyxa{5M1j{}0Z(g@zYvXF?>%Ivc>KGn?UfSQQhP$pcqb3?S`GCEez;<9Jxg6=F!q(7AeHhAeeg%qn@+)v#0( z9T1<0K4v@U_<&P%N)SHNbfu(-(NeUpapNrw^HUg&H=#^-rv{zV2Zk@=i8hd2Ka070 zmpfX5EDL(36IxPZCt`a*-PSdqs-OnSBm3oUJ@E^R<>sO!QipUTZlFPRzTsOSO-Kt_ zZ)LWN(DhjMLWp$8RJ=N~5RhjoZcO@SKV9QVu5WiB^FT8YTx{?n^M z76r)_CDiPXwjaG8Qo@T9>)#Cj_P-KI9_g^zWso9wK?(?8tlpw>R$U0x_%enT;52Y^ zY#H41o++eqcG3ye*yAvTjZ&N>R(e^gjg(LqA|g1l4QYE^KuYpNY(3nSV}}Ri7c}|0 zRTaq8P>-eV%8BgP9W*<{(rsv2@vvqxiiZ(Yv73G8h18VDZ9|JxvT-{`pn;OKvDk(C zu#YL!MN5PH8n!z|Dg!}l#rv;{r|Prt5~x9#u!Ot#$D>d%kYM5$npXs0--N)wI}pOX zs4XQ_njq&hWS@5P%OSZ^FZnqxCODJdK!t&_N;&apc^WIg;!Q!NvDI8MT@+~3Kbp_) z<)$)w!+lGxJ6J_c)N$hvdR18{IuNyb73U9l(#lu&%)CHl6m?q8O%=I;&mNrg% z&s0ggqmTB{#(DGC|E`_75>oW!1Vd6ES)PKEdE*p<-%4qxzJ43jO=F^(Cr`o+X`0V^ zDB1Rf>69n9i3HA~T#Qq0a+L}xO)2kdi_GNh8phBEl3a=~bloHuLwr{A?Q8)X8G8@d zAa@l5t)%qK9&$5@<20ZIwk<6{a-EB>$zZy*du}bel#X4bNp4Jt$1o!nBjXTR=bwOt zM@L1mrXO-(k2m&SOQ+uv;B7G!_wW@p{A7VLfM6l%v02HH4qb{#2^#W24MiH#p0$d) z-)B?pm1x1;cg@8*QvB?xL8r-=Y_yB*Eh>B!f7w1nIV+>%IoiV-{&?2f5fr=qqFosK zl5n7T;Ss*vP!X9J@Us75fU~ta1};F|vMWYY;*u^HvBHJZZNnS1eAXQ*)P$4^Fdo2; z-EAiIDBE~d)$Qm+Y^OtY&~P0*La#13S67X5I^(EF_=8 zv8$m;?B>nrT~l$BgAi=n3?8B-@%FEjgZ#BNA%L9oqk9aEcOId^8gE&soX0cE?1A7+ zUO{CA@^jK9WPyQH>%z1<&=}$Xz(Lpb(WPAs_Vr~H---NMJfvzb zp&Gy!ylbk73^G~$bk88v5|jC}f(dDPOY~?%Q(7t8E|0P&RQLuU5$n_y^vwgslhla4 zgN*l=m0VQ^W9;96%}GJc05#fGgp|ZRRBxf}0l3UOM|s_5a0=LEOn?#eo1BQ6WSi3K z2*5ii;Fl;OLXHFd(=;x|v>%VE_D!pGqw%6MiQI;}f_?{U29_*#6YMnY>(ICQn338t z4wS1UkbV?@Fr}u7Cfk>x2$clO^s4nxfd58kAtyMeSkg~L^l4xy*mm&-6YModE2h>T zfA>&!)`q%|Y#fSQ^45cl(FI|g>3%Ot}%XclCpx8PFj6M=#~n z|FxdOOVfm - {{ $instituciones->aniversario . ' de ' . Str::title(\Carbon\Carbon::create()->month($instituciones->aniversario)->monthName) }} + {{ $instituciones->aniversario }} @endif - +
-
Domicilio oficial
+
Domicilio
    - @if($contacto->domicilio_oficial) -
  • - - - - - - {{'Domicilio: ' . $contacto->domicilio_oficial}} -
  • - @endif - @if($contacto->codigo_postal) -
  • - - - - - - {{'Código postal: ' . $contacto->codigo_postal}} -
  • - @endif - @if($contacto->localidad_oficial) -
  • - - - - - - {{'Localidad: ' . $contacto->localidad_oficial}} -
  • - @endif - @if($contacto->municipio_oficial) -
  • - - - - - - {{'Municipio: ' . $contacto->municipio_oficial}} -
  • - @endif - @if($contacto->estado) -
  • - - - - - - {{'Estado: ' . $contacto->estado}} -
  • - @endif - @if($contacto->pais) -
  • - - - - - - {{'Pais: ' . $contacto->pais}} -
  • - @endif -
-
-
-
-
-
Domicilio particular
-
-
-
    - @if($contacto->domicilio_par) -
  • - - - - - - {{'Domicilio: ' . $contacto->domicilio_par}} -
  • - @endif - @if($contacto->codigo_postal_par) -
  • - - - - - - {{'Código postal: ' . $contacto->codigo_postal_par}} -
  • - @endif - @if($contacto->localidad_par) -
  • - - - - - - {{'Localidad: ' . $contacto->localidad_par}} -
  • - @endif - @if($contacto->municipio_par) + @if($instituciones->domicilio)
  • - {{'Municipio: ' . $contacto->municipio_par}} + {{'Domicilio: ' . $instituciones->domicilio}}
  • @endif - @if($contacto->estado_par) + @if($instituciones->codigo_postal)
  • - {{'Estado: ' . $contacto->estado_par}} + {{'Código postal: ' . $instituciones->codigo_postal}}
  • @endif - @if($contacto->pais_par) + @if($instituciones->localidad)
  • - {{'Pais: ' . $contacto->pais_par}} + {{'Localidad: ' . $instituciones->localidad}}
  • - @endif + @endif>
- @if($contacto->pareja) -
-
-
Pareja
-
-
-
- image -

{{ $contacto->pareja->nombre . ' ' . $contacto->pareja->ap_paterno . ' ' . $contacto->pareja->ap_materno}}

-
-
    - @if($contacto->pareja->cargo_desc) -
  • - - - - - - - - {{$contacto->pareja->cargo_desc}} -
  • - @endif - @if($contacto->pareja->mes_cump) -
  • - - - - - - - - {{ $contacto->pareja->dia_cump . ' de ' . Str::title(\Carbon\Carbon::create()->month($contacto->pareja->mes_cump)->monthName) }} -
  • - @endif -
  • - - - - - - @if($contacto->pareja->finado == true) - Finado: Si - @else - Finado: No - @endif -
  • -
-
-
- @endif
-
- @csrf - @method('PUT') + + @csrf + @method('PUT')
@@ -389,14 +389,14 @@ const newFormGroup = document.createElement('div'); newFormGroup.classList.add('grid', 'grid-cols-1', 'md:grid-cols-3', 'gap-5', 'form-group', 'relative'); newFormGroup.innerHTML = ` -
+
-
-
+ +
-
+