Loading app/Http/Controllers/InstitucionesController.php +101 −12 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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', Loading @@ -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', ]; Loading @@ -56,19 +69,36 @@ 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 // Manejar los datos de teléfonos if (!empty($data['telefonos'])) { $this->storeTelefonos($institucion->id, $data['telefonos']); } $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(); Loading @@ -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')); } Loading Loading @@ -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) { Loading Loading @@ -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) { Loading public/assets/images/instituciones_icon.webp 0 → 100644 +3.56 KiB Loading image diff... resources/views/adminGen/instituciones/show.blade.php +18 −211 File changed.Preview size limit exceeded, changes collapsed. Show changes resources/views/auth/login.blade.php +3 −7 Original line number Diff line number Diff line <x-layout.auth> <div x-data="auth"> <div class="absolute inset-0"> <img src="/assets/images/auth/bg-gradient.png" alt="image" class="h-full w-full object-cover" /> </div> <div class="relative flex min-h-screen items-center justify-center bg-[url(/assets/images/auth/map.png)] bg-cover bg-center bg-no-repeat px-6 py-10 dark:bg-[#060818] sm:px-16"> <img src="/assets/images/auth/coming-soon-object1.png" alt="image" class="absolute left-0 top-1/2 h-full max-h-[893px] -translate-y-1/2" /> <img src="/assets/images/auth/coming-soon-object2.png" alt="image" class="absolute left-24 top-0 h-40 md:left-[30%]" /> <img src="/assets/images/auth/coming-soon-object3.png" alt="image" class="absolute right-0 top-0 h-[300px]" /> <img src="/assets/images/auth/polygon-object.svg" alt="image" class="absolute bottom-0 end-[28%]" /> <div class="relative w-full max-w-[870px] rounded-md bg-[linear-gradient(45deg,#fff9f9_0%,rgba(255,255,255,0)_25%,rgba(255,255,255,0)_75%,_#fff9f9_100%)] p-2 dark:bg-[linear-gradient(52.22deg,#0E1726_0%,rgba(14,23,38,0)_18.66%,rgba(14,23,38,0)_51.04%,rgba(14,23,38,0)_80.07%,#0E1726_100%)]"> <div class="relative flex flex-col justify-center rounded-md bg-white/60 backdrop-blur-lg dark:bg-black/50 px-6 lg:min-h-[758px] py-20"> <div class="mx-auto w-full max-w-[440px]"> <div class="mb-10"> <h1 class="text-3xl font-extrabold uppercase !leading-snug text-primary md:text-4xl">Bienvenidos</h1> <p class="text-base font-bold leading-normal text-white-dark">Ingresa tu usuario y contraseña para iniciar sesión.</p> <h1 class="text-3xl font-extrabold uppercase !leading-snug md:text-4xl" style="color: #781005;">Bienvenidos</h1> <p class="text-base font-bold leading-normal text-white-dark "style="color: black;">Ingresa tu usuario y contraseña para iniciar sesión.</p> </div> @if ($errors->any()) <div class="mb-4"> Loading Loading
app/Http/Controllers/InstitucionesController.php +101 −12 Original line number Diff line number Diff line Loading @@ -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 { Loading @@ -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', Loading @@ -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', ]; Loading @@ -56,19 +69,36 @@ 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 // Manejar los datos de teléfonos if (!empty($data['telefonos'])) { $this->storeTelefonos($institucion->id, $data['telefonos']); } $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(); Loading @@ -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')); } Loading Loading @@ -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) { Loading Loading @@ -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) { Loading
resources/views/adminGen/instituciones/show.blade.php +18 −211 File changed.Preview size limit exceeded, changes collapsed. Show changes
resources/views/auth/login.blade.php +3 −7 Original line number Diff line number Diff line <x-layout.auth> <div x-data="auth"> <div class="absolute inset-0"> <img src="/assets/images/auth/bg-gradient.png" alt="image" class="h-full w-full object-cover" /> </div> <div class="relative flex min-h-screen items-center justify-center bg-[url(/assets/images/auth/map.png)] bg-cover bg-center bg-no-repeat px-6 py-10 dark:bg-[#060818] sm:px-16"> <img src="/assets/images/auth/coming-soon-object1.png" alt="image" class="absolute left-0 top-1/2 h-full max-h-[893px] -translate-y-1/2" /> <img src="/assets/images/auth/coming-soon-object2.png" alt="image" class="absolute left-24 top-0 h-40 md:left-[30%]" /> <img src="/assets/images/auth/coming-soon-object3.png" alt="image" class="absolute right-0 top-0 h-[300px]" /> <img src="/assets/images/auth/polygon-object.svg" alt="image" class="absolute bottom-0 end-[28%]" /> <div class="relative w-full max-w-[870px] rounded-md bg-[linear-gradient(45deg,#fff9f9_0%,rgba(255,255,255,0)_25%,rgba(255,255,255,0)_75%,_#fff9f9_100%)] p-2 dark:bg-[linear-gradient(52.22deg,#0E1726_0%,rgba(14,23,38,0)_18.66%,rgba(14,23,38,0)_51.04%,rgba(14,23,38,0)_80.07%,#0E1726_100%)]"> <div class="relative flex flex-col justify-center rounded-md bg-white/60 backdrop-blur-lg dark:bg-black/50 px-6 lg:min-h-[758px] py-20"> <div class="mx-auto w-full max-w-[440px]"> <div class="mb-10"> <h1 class="text-3xl font-extrabold uppercase !leading-snug text-primary md:text-4xl">Bienvenidos</h1> <p class="text-base font-bold leading-normal text-white-dark">Ingresa tu usuario y contraseña para iniciar sesión.</p> <h1 class="text-3xl font-extrabold uppercase !leading-snug md:text-4xl" style="color: #781005;">Bienvenidos</h1> <p class="text-base font-bold leading-normal text-white-dark "style="color: black;">Ingresa tu usuario y contraseña para iniciar sesión.</p> </div> @if ($errors->any()) <div class="mb-4"> Loading