has('dni')) { return ApiPersonaController::rutaGetDatosPorDni($request->get('dni')); } if ($request->has('telefono')) { return ApiPersonaController::rutaGetDatosPorTelefono($request->get('telefono')); } return response()->json(['error' => trans('persona.DEBE_INGRESAR_DNI_O_TELEFONO')], HttpStatus::BAD_REQUEST); } public static function rutaGetDatosPorDni($dni){ try{ $persona = UaderMapuchePersona::buscarPersonaPorDni($dni); if ($persona) { return ApiPersonaController::extraerDatos($persona); } return response()->json(['error' => trans('persona.NO_ENCONTRADA_POR_DNI')], HttpStatus::NOT_FOUND); } catch (\Exception $e) { Log::error(trans('persona.LOG_POR_DNI') . $e->getMessage()); return response()->json(['error' => trans('persona.ERROR_POR_DNI')], HttpStatus::INTERNAL_SERVER_ERROR); } } public static function rutaGetDatosPorTelefono($telefono){ try{ $persona = UaderMapuchePersona::BuscarPersonaPorTelefono($telefono); if ($persona) { return ApiPersonaController::extraerDatos($persona); } return response()->json(['error' => trans('persona.NO_ENCONTRADA_POR_TELEFONO')], HttpStatus::NOT_FOUND); } catch (\Exception $e) { Log::error(trans('persona.LOG_POR_TELEFONO') . $e->getMessage()); return response()->json(['error' => trans('persona.ERROR_POR_TELEFONO')], HttpStatus::INTERNAL_SERVER_ERROR); } } public static function extraerDatos($persona){ $declaracion_jurada = $persona->declaracion_jurada; if(!$declaracion_jurada){ return response()->json(['error' => trans('persona.DECLARACION_JURADA_NO_ENCONTRADA')], HttpStatus::NOT_FOUND); } $datos = array( 'id' => $declaracion_jurada->id_persona ?? null, # id persona de la tabla 'uader_persona' 'dni' => $persona->nro_docum ?? null, 'apellido' => ucwords(strtolower(trim($persona->desc_appat))) ?? null, 'nombres' => ucwords(strtolower(trim($persona->desc_nombr))) ?? null, 'telefono' => '549' . preg_replace('([^0-9])', '', trim($persona->telefono_celular)) ?? null, 'email' => strtolower(trim($persona->correo_electronico)) ?? null, ); return response()->json($datos, HttpStatus::OK); } public function store(Request $request) { $input = $request->input(); $persona = UaderMapuchePersona::BuscarPersonaPorTelefono($input['cel']); $dia = $input['dia']; # lanzar error si es invalido o no vino $tipo_horario = $input['tipo_horario']; # lanzar error si es invalido o no vino if (!empty($persona)) { $funciones = array(); $declaracion_jurada = UaderDjPersona::find($persona->id_dj_persona); $designaciones = $declaracion_jurada->CargosGrupo()->where('estado', 'A')->get(); foreach ($designaciones as $designacion) { $horarios = array(); #dd( $designaciones); foreach ($designacion->GrupoHorario as $grupo_horario) { foreach ($grupo_horario->Horarios as $horario) { if ($horario->dia_semanal == $dia && $horario->tipo_horario == $tipo_horario){ # dia del horario es el mismo que el dia actual y que no sea horario de disposicion $horarios[] = [ 'tipo' => $horario->tipo_horario, 'hora_entra' => $horario->hora_entra, 'hora_sale' => $horario->hora_sale ]; } } } # si bien las designaciones son distintas los datos requeridos en esta ruta son pocos y solo necesitamos las designaciones (funciones) con datos diferentes $nueva_funcion = ['funcion' => $designacion->id_funcion, 'ua' => intval($designacion->Sede->ua_guarani), 'horarios' => $horarios]; if (!in_array($nueva_funcion, $funciones)) { $funciones[] = $nueva_funcion; } } $datos = array( 'id' => $declaracion_jurada->id_persona, 'dni' => $persona->nro_docum, 'apellido' => ucwords(strtolower(trim($persona->desc_appat))), 'nombres' => ucwords(strtolower(trim($persona->desc_nombr))), 'telefono' => '549' . preg_replace('([^0-9])', '', trim($persona->telefono_celular)), 'email' => strtolower(trim($persona->correo_electronico)), 'funciones' => $funciones, ); return response()->json($datos); } else { return response()->json(array(), 404); } } public function buscar($dni) { $persona = UaderMapuchePersona::buscarPersonaPorDni($dni); if (!empty($persona)) { $dj = UaderDjPersona::find($persona->id_dj_persona); $datos = array( 'id' => $dj->id_persona, 'dni' => $persona->nro_docum, 'apellido' => ucwords(strtolower(trim($persona->desc_appat))), 'nombres' => ucwords(strtolower(trim($persona->desc_nombr))), 'telefono' => '549' . preg_replace('([^0-9])', '', trim($persona->telefono_celular)), 'email' => strtolower(trim($persona->correo_electronico)), 'domicilio' => array( 'calle' => strtolower(trim($persona->calle)), 'numero' => strtolower(trim($persona->numero)), 'piso' => strtolower(trim($persona->piso)), 'dpto_oficina' => strtolower(trim($persona->dpto_oficina)), 'calles_entre' => strtolower(trim($persona->calles_entre)), 'domicilio_referencia' => strtolower(trim($persona->domicilio_referencia)), 'zona_paraje' => strtolower(trim($persona->zona_paraje)), 'casa_nro' => strtolower(trim($persona->casa_nro)), 'casa_manzana' => strtolower(trim($persona->casa_manzana)), 'localidad' => ucfirst(strtolower(trim($persona->Localidad->desc_localidad))), 'provincia' => trim($persona->Provincia->descripcion_pcia), ) ); return response()->json($datos); } else { return response()->json(array(), 404); } } }