EVOLUTION-MANAGER
Edit File: padron.php
<?php namespace App\Http\Controllers; use App\Barrios; use App\Empadronados; use App\NuevosRegistros; use App\Parroquias; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\DB; use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Support\Facades\Log; use Illuminate\Support\Collection; use Carbon\Carbon; class padron extends Controller { public function mostrar_padron(Request $request) { // Inicializar la colección vacía $paginatedItems = collect(); // Obtener la parroquia y el barrio de la solicitud $parroquia = $request->query('parroquia'); $barrio = $request->query('barrio'); // Consulta base para ambas tablas $informacion = Empadronados::select('id', 'numero', 'nombres_apellidos', 'cedula', 'canton', 'parroquia', 'barrio') ->whereNotNull('parroquia') ->where('parroquia', '!=', '') ->when($parroquia, function ($query, $parroquia) { return $query->where('parroquia', 'LIKE', '%' . $parroquia . '%'); }) ->when($barrio, function ($query, $barrio) { return $query->where('barrio', 'LIKE', '%' . $barrio . '%'); }); $registro = NuevosRegistros::select('id', 'numero', 'nombres_apellidos', 'cedula', 'canton', 'parroquia', 'barrio') ->whereNotNull('parroquia') ->where('parroquia', '!=', '') ->when($parroquia, function ($query, $parroquia) { return $query->where('parroquia', 'LIKE', '%' . $parroquia . '%'); }) ->when($barrio, function ($query, $barrio) { return $query->where('barrio', 'LIKE', '%' . $barrio . '%'); }); // Ejecutar las consultas y combinar los resultados $combined = $informacion->get()->merge($registro->get()); // Paginación manual $paginatedItems = $this->paginate($combined, $request); // Obtener las parroquias para el select $parroquias = Barrios::select(DB::raw('UPPER(parroquia) as parroquia')) ->whereNotNull('parroquia') ->where('parroquia', '!=', '') ->distinct() ->get(); // Devolver la vista con los datos return view('padron.padron-elecciones', [ 'informacion' => $paginatedItems, 'parroquias' => $parroquias, 'selectedParroquia' => $parroquia, 'selectedBarrio' => $barrio, ]); } // Función para manejar la paginación protected function paginate($items, $request, $perPage = 100) { $currentPage = LengthAwarePaginator::resolveCurrentPage(); $currentItems = $items->slice(($currentPage - 1) * $perPage, $perPage)->all(); return new LengthAwarePaginator($currentItems, $items->count(), $perPage, $currentPage, [ 'path' => LengthAwarePaginator::resolveCurrentPath(), 'query' => $request->query(), ]); } public function consulta_padron() { return view('padron.padron-consultas'); } public function mostrar_formulario(Request $request) { // $informacion = Empadronados::select('cedula') // ->get(); // $nuevosregistros = NuevosRegistros::select('cedula') // ->get(); // $barrios = Barrios::select('nombre') // ->get(); $campo = $request->input('campo'); $parroquias = Parroquias::select('nombre') ->get(); return view('padron.padron-nuevosregistros', compact('campo', 'parroquias')); } public function getOptions($id) { $options = Barrios::where('parroquia', $id) ->pluck('nombre', 'id'); return response()->json($options); } public function obtener_barrios($id) { $barrios = Barrios::where('parroquia', $id) ->whereNotNull('nombre') ->where('nombre', '!=', '') ->pluck('nombre', 'id'); // $barriosempadronados = Empadronados::where('parroquia', $id) // ->whereNotNull('barrio') // ->where('barrio', '!=', '') // ->pluck('barrio', 'id'); // $result = $barrios->merge($barriosempadronados)->unique(); $result = $barrios; return response()->json($result->values()->all()); } public function postconsulta(Request $request) { $validator = Validator::make($request->all(), [ 'cedula' => 'required|digits:10' // Asegúrate de ajustar las reglas de validación según tus necesidades ]); if ($validator->fails()) { return response()->json(['errors' => $validator->errors()], 422); } try { $cedula = $request->input('cedula'); $options1 = Empadronados::where('cedula', $cedula)->get(['nombres_apellidos', 'cedula', 'canton', 'parroquia', 'barrio', 'estado']); $registrar = 'SI'; if ($options1->isNotEmpty()) { $estado = $options1[0]->estado; // Accede al estado del primer registro if ($estado == 'MD' || $estado == 'NR') $registrar = 'NO'; } return response()->json([ "datos" => $options1, "registrar" => $registrar ]); } catch (\Exception $e) { return response()->json(['error' => 'Ocurrió un error al hacer la consulta.'], 200); } } public function crear_registro(Request $request) { DB::beginTransaction(); try { $validacion = Validator::make($request->all(), [ 'nombres_completos' => ['required', 'max:100'], 'apellidos_completos' => ['required', 'max:100'], 'cedula' => ['required', 'size:10'], //'cedula' => ['required', 'size:10', 'unique:empadronados,cedula'], 'fecha_nacimiento' => ['required', 'date', 'before:today'], 'fecha_expiracion' => ['required', 'date'], 'canton' => ['required', 'max:10'], 'parroquia' => ['required', 'max:150'], 'barrio' => ['required', 'max:250'], ]); if ($validacion->fails()) return back()->withErrors($validacion)->withInput(); else { $persona = dinardap_padron($request['cedula']); if($persona['error'] == true){ Log::error('RegistrarUsuarioController,validate_registro, FALLA EN DINARDAP'); return back()->withErrors(['error' => 'Ha ocurrido un error: Servicio no disponible actualmente', 'message' => 'Servicio no disponible actualmente, intentelo mas tarde']); }else{ $persona=$persona['detalle']; } //dd($persona); //formatear fecha y calcula la edad $fechaNacimiento = Carbon::parse($request->input('fecha_nacimiento')); $edad = $fechaNacimiento->diffInYears(Carbon::now()); $fechaFormateada = $fechaNacimiento->format('d/m/Y'); $fechaNacimientoWS =$persona['fechaNacimiento']; //formatear fecha de expiracion C. I. $fechaExpiracion = Carbon::parse($request->input('fecha_expiracion')); $expiracionFormateado = $fechaExpiracion->format('d/m/Y'); $expiracionFechaWS =$persona['fechaExpiracion']; // Verifica que el anio de nacimiento y la fecha de expiracion de la cedula sean las correcta si no es así manda error if($fechaFormateada <> $fechaNacimientoWS || $expiracionFormateado <> $expiracionFechaWS) return back()->withErrors(['error' => 'Ha ocurrido un error: Verifique que los datos sean correctos, cédula y/o fecha de nacimiento inconsistentes', 'message' => 'Verifique que los datos sean correctos, cedula y/o fecha de nacimiento inconsistentes']); // Verifica si la edad es menor a 16 años if ($edad < 16) return back()->withErrors(['error' => 'Ha ocurrido un error: Debe tener 16 o más años para registrarse.', 'message' => 'Debe tener 16 o más años para registrarse.']); $registro = Empadronados::where('cedula', $request->cedula)->first(); if ($registro) { if ($registro->estado == 'IG'){ $registro->nombres_apellidos = $request->apellidos_completos . " " . $request->nombres_completos; $registro->canton = $request->canton; $registro->parroquia = $request->parroquia; $registro->barrio = $request->barrio; $registro->estado = 'MD'; $registro->fecha_modificacion = Carbon::now(); $registro->save(); }else return back()->withErrors(['error' => 'Ha ocurrido un error: No se puede modificar más de una vez un registro.', 'message' => 'No se puede modificar más de una vez un registro.']); } else { $registro = new Empadronados(); $registro->nombres_apellidos = $request->apellidos_completos . " " . $request->nombres_completos; $registro->cedula = $request->cedula; $registro->canton = $request->canton; $registro->parroquia = $request->parroquia; $registro->barrio = $request->barrio; $registro->estado = 'NR'; $registro->fecha_creacion = Carbon::now(); $registro->fecha_modificacion = Carbon::now(); $registro->fecha_nacimiento = $fechaNacimiento; $registro->save(); } DB::commit(); return redirect()->route('consulta-padron')->with('status', 'Creación exitosa!'); } } catch (\Exception $e) { DB::rollback(); Log::error('Ocurrió un error: ' . $e->getMessage()); return back()->withErrors(['error' => 'Ha ocurrido un error: ' . $e->getMessage(), 'message' => 'Hubo un error inesperado con el servidor, intentelo nuevamente más tarde']); } catch (QueryException $e) { DB::rollback(); Log::error('Ocurrió un error: ' . $e->getMessage()); return back()->withErrors(['error' => 'Error en la base de datos: ' . $e->getMessage(), 'message' => 'Hubo un error en la base de datos, intentelo nuevamente más tarde']); } } public function whatsapp(Request $request) { // Captura de las variables desde la solicitud POST $app_name = $request->input('app'); $sender = $request->input('sender'); $message = $request->input('message'); $phone = $request->input('phone'); $group_name = $request->input('group_name'); // Construcción de la respuesta $response = [ 'reply' => "Hello $sender, we received your message: $message." ]; // Retorno de la respuesta en formato JSON return response()->json($response); } }