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 zcmWIYbaOM|V_*n(bqWXzu<+5~V_?w#f3RL4Jz+xblD8+$#Xs`+XDPBJ_pr*PiXQu; z>lfrotKEHQ`p@UsLrq==6W*k$PYgI2yiRUvKJ|0P?C>tzgMK^zJ=ahaU|p7bdzyPu zvDEdyGu~c3lfJDyH!V$nt>Na_Tpo2UW1GaZXG;v#nos>;7-ARnxvq-IcXW z>6bp|q$fLitqyHw{GoM7ykX|Sjs6UyU^E2i83GP21b|HKv+G92_`&?b2l06}aiRD@ z>5r|uep`KMl{GkT^QV=2zU7bnP28=E@5gMc+x~jx{kI$HrsoQoZQyS8brO7bP3B5{ z{m<*4uGiJXW|n^cDqJp?n)@=7-P^x<%PI`;?qB#Ld;S@6k!zpDea>H}d1dQ=spEw* zAau2Ag68qJxd*~FFA(QDY`}BafQR4L;$PN_1{*`h%INmT;>(tt&$pcS`Gn4kn{(5u z3RcC-Yl2riO;qb%$ap{=Pc!|zfSG1 z3`*Gl_}2eA_uVle(&d*U=dLo9oe-w`a$?55oiTdTPd_c%S(9@s=QQ65lQkcfTg&`6 zQvK_8y72YK#X9fGHt+j>CGY%3##b99%4^^5kNdgn`rdb?>#Og+j{AN|?ftiBucIcZ zz2CbLN*< ztIYDBKL-MAKD^j+)6XwzQfAWA?bb5&HmZL^+P`c})_=FO&x83+6e){3{ zx4Z8N9iP9l+Ai&%>Hqg-@BjPiF<+Up`*l*%y+6Oc@6C&;GnA`WY~TG+PiEShyY7|W|L|F_eXrX1{=xdrxu30N65h_a|B=JkTD-hSB`ki@ ztn8n^WwVvkXL0`Cs^{P4+Rk{k=<@p?ACfjk=!kV6eKaw1v#ynbzmNQa!yny) zFY#}ck*|33Anbj@ou_tT@7G+jdAeoGv*n-tGL6sfzxnu8^Fr>LuW_?hJ6-*}K6!Cf z{U5*jf6tN8e{me z|Aig1dB4wn;d0UT&XK#N4rU#@v%k&Fu#Efv;?ME9_qZ>!h0neH!>Hu$-bnL=yQy!_ z?|8j*?qa!r$;DAe&Mk_vH({;JeqPdHKD%^#URi|v?ZmfF_gwz9f7c*LyF&Rc>cDd6$y@ zm(PDyr}f(}tp5@p@7R4kN4(sexsZK19QgA6tuJx-x4-h1T-4{SuNv3Po0WTi=hu4q zb7oF6_S_Xy;5{~%SICUPlI`qTdF!7WC!f6i*S|P=Tl99nyxRUJ*XH{;)@3yrR_@k3 zk^lFGWSaBuA3A5O@66cZQh#@)b=ln=zcYm&#{pft@7Sex_#Gnu8eDUZ!tWP;d^)6rJ%G;efFK*Nm3WDKFs)kpV3O8dP@24JI~jg z-<|3BF8_1hBG#SzCCl$$pJelQ-S5~cafchvE1#cJaZ0~)SMB(^`Q;a^%fpJ_t&+7X zKlgP1{YtfSb4ykR*RFNj|2VUK)%}hA&(B$zT&>>n-tD=N+Sz^5`fnO)cHS&s%v`iN z@ckpT-8Jv-?EPY$%TT0OxBO>(`ID2pulr*AW`91nJNGPG<@V~m?|)qv_kFp4_U`p| z7Z&~TGTp7bMIk=_lb@LEjpNS~?ma!{yM5Wxd%L1}z0&XR6*U3vQBCHHTJ?{nO*-HrO}Gq-x%x>@sXWNnRF8@BrD&APeSj$zrJ z=h?P|XMXBiuf6`><68E#n!9VAgZJ9kEtijnR0T0+&)@y+~62qTI@QJH`es?r!BdAQ+tQ=o*uItB(#>>+hZE|nh7H6-W z@4XVK4s8Czn$dRX`SSbu;V0heEUSKCA9uS#e_nm@`FQ<(-}Ci4te*URU#S literal 0 HcmV?d00001 diff --git a/resources/views/adminGen/instituciones/show.blade.php b/resources/views/adminGen/instituciones/show.blade.php index 83b2f56..96674ec 100644 --- a/resources/views/adminGen/instituciones/show.blade.php +++ b/resources/views/adminGen/instituciones/show.blade.php @@ -75,13 +75,13 @@ class="w-24 h-24 rounded-full object-cover mb-5" /> - {{ $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 = ` -
+
-
-
+ +
-
+