Exemplo n.º 1
0
        //=========================================================================================================
        //=========================================================================================================
        //SELECCION DE USUARIO (CONSUMO DE SERVICIOS WEB)
        public async Task <InformacionGeneral> OnUserSelected(ResponseQueryAdmin userselected)
        {
            //SE CREA E INICIALIZA LA VARIABLE QUE CONTENDRA EL URL
            string url = App.BaseUrl + "/queryadmin/onuserselected";

            //SE CREA E INICIALIZA LA VARIABLE QUE RECIBIRA LA RESPUESTA DE LA SOLICITUD HTTP
            HttpResponseMessage response = new HttpResponseMessage();

            //SE CREA E INICIALIZA LA VARIABLE QUE VERIFICARA EL ESTADO DE CONEXION A INTERNET
            var current = Connectivity.NetworkAccess;

            //SE CREA LA CLASE MODELO QUE SERA CONVERTIDA A OBJETO JSON Y ENVIADA DENTRO DE LA SOLICITUD HTTP
            var model = new UserSelectedRequest()
            {
                UserIdRequested = Usuario.Cedula, UserIdSelected = userselected.Cedula
            };

            //SE CREA E INICIALIZA LA VARIABLE QUE RECIBIRA EL OBJETO JSON RETORNADO POR LA SOLICITUD HTTP
            InformacionGeneral informacion = null;

            //SE VERIFICA SI EL DISPOSITIVO SE ENCUENTRA CONECTADO A INTERNET
            if (current == NetworkAccess.Internet)
            {
                //EL EQUIPO SE ENCUENTRA CONECTADO A INTERNET
                //SE INICIA EL CICLO TRY...CATCH
                try
                {
                    //INICIAMOS EL SEGMENTO DEL CODIGO EN EL CUAL REALIZAREMOS EL CONSUMO DE SERVICIOS WEB MEDIANTE
                    //LA INICIALIZACION Y CREACION DE UNA VARIABLE QUE FUNCIONARA COMO CLIENTE EN LAS SOLICITUDES
                    //Y RESPUESTAS ENVIADAS Y RECIBIDAS POR EL SERVIDOR (WEB API)
                    //----------------------------------------------------------------------------------------------
                    //NOTA: CUANDO SE REALIZA LA CREACION E INICIALIZACION DE LA VARIABLE DEL TIPO HttpClient SE
                    //HACE UN LLAMADO A UN METODO ALOJADO EN LA CLASE "App" Y QUE ES ENVIADO COMO PARAMETRO DEL
                    //TIPO HttpClientHandler =>
                    //----------------------------------------------------------------------------------------------
                    using (HttpClient client = new HttpClient(App.GetInsecureHandler()))
                    {
                        //SE DA SET AL TIEMPO MAXIMO DE ESPERA PARA RECIBIR UNA RESPUESTA DEL SERVIDOR
                        client.Timeout = TimeSpan.FromSeconds(App.TimeInSeconds);
                        //SE REALIZA LA CONVERSION A OBJETO JSON
                        var json = JsonConvert.SerializeObject(model);
                        //SE AÑADE EL OBJETO JSON RECIEN CREADO COMO CONTENIDO BODY DEL NUEVO REQUEST
                        HttpContent httpContent = new StringContent(json, Encoding.UTF8, "application/json");
                        //SE HACE LA CONFIGURACION DE LOS HEADERS DEL REQUEST
                        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                        //SE REALIZA LA SOLICITUD HTTP POST
                        response = await client.PostAsync(url, httpContent);

                        if (response.IsSuccessStatusCode)
                        {
                            //SE DESERIABLIZA EL OBJETO JSON CONTENIDO EN EL OBJETO "response" (<InformacionGeneral>)
                            informacion = JsonConvert.DeserializeObject <InformacionGeneral>(await response.Content.ReadAsStringAsync());

                            //SE DESENCRIPTA LA CONTRASEÑA
                            informacion.Usuario.Password = Metodos.DecryptString(informacion.Usuario.Password);

                            //====================================================================================
                            //====================================================================================
                            Console.WriteLine("\n\n====================================");
                            Console.WriteLine("====================================");
                            Console.WriteLine("La contraseña desencriptada es: " + informacion.Usuario.Password);
                            Console.WriteLine("====================================");
                            Console.WriteLine("====================================\n\n");
                            //====================================================================================
                            //====================================================================================
                        }
                        else
                        {
                            //SE DESEREALIZA EL OBJETO JSON CONTENIDO EN EL OBJETO "response" (<string>)
                            errormessage = JsonConvert.DeserializeObject <string>(await response.Content.ReadAsStringAsync());
                        }
                    }
                }
                catch (Exception ex) when(ex is HttpRequestException ||
                                          ex is Javax.Net.Ssl.SSLException ||
                                          ex is Javax.Net.Ssl.SSLHandshakeException ||
                                          ex is System.Threading.Tasks.TaskCanceledException)
                {
                    return(await Task.FromResult(informacion));
                }
            }

            return(await Task.FromResult(informacion));
        }
Exemplo n.º 2
0
        //--------------------------------------------------------------------------------------------------
        //FUNCION QUE RETORNARA LA INFORMACION GENERAL DEL USUARIO SELECCIONADO EN LA LISTA DE USUARIOS
        //QUE COINCIDEN CON EL PARAMETRO DE BUSQUEDA Y LA OPCION SE CONSULTA SELECCIONADA
        //--------------------------------------------------------------------------------------------------
        public async Task <ActionResult <InformacionGeneral> > GetUserSelectedInfo([FromBody] UserSelectedRequest userselected)
        {
            //SE CREA E INICIALIZA LA VARIABLE QUE
            var fullinfo = new InformacionGeneral();

            //SE VERIFICA QUE EL OBJETO DEL TIPO "UserSelectedRequest" ENVIADO NO SEA NULO O VACIO
            if (userselected == null)   //=> true => EL OBJETO ES NULO
            {
                //SE RETORNA LA RESPUESTA "BadRequest" JUNTO CON UN MENSAJE INFORMATIVO
                return(BadRequest("Error, vuelva a intentarlo nuevamente"));
            }
            else if (userselected != null)   //=> true => EL OBJETO NO ES NULO
            {
                //INICIAMOS EL CICLO TRY... CATCH
                try
                {
                    //SE INICIA LA TRANSACCION DE DATA CON LA BASE DE DATOS
                    using (var transaction = this._context.Database.BeginTransaction())
                    {
                        //--------------------------------------------------------------------------------------------------------
                        //SE BUSCA EL REGISTRO DENTRO DE LA TABLA DE USUARIOS QUE COINDICA CON EL ID DEL OBJETO ENVIADO
                        fullinfo.Persona = await this._context.Personas.FindAsync(userselected.UserIdSelected);

                        //SE VERIFICA SI EL OBJETO QUE RECIBIO LA INFORMACION SE ENCUENTRA NULO O NO
                        if (fullinfo.Persona != null)
                        {
                            //SI NO SE ENCUENTRA NULO SE DESECHA AL OBJETO RETENIDO POR LA CLASE CONTEXTO
                            this._context.Entry(fullinfo.Persona).State = EntityState.Detached;
                        }

                        //--------------------------------------------------------------------------------------------------------
                        //SE REPITE EL MISMO PROCESO EN LA BUSQUEDA DEL REGISTRO DENTRO DE LA TABLA USUARIOS
                        fullinfo.Usuario = await this._context.Usuarios.FindAsync(userselected.UserIdSelected);

                        //SE VERIFICA SI EL OBJETO QUE RECIBIO LA INFORMACION SE ENCUENTRA NULO O NO
                        if (fullinfo.Usuario != null)
                        {
                            //SI NO SE ENCUENTRA NULO SE DESECHA AL OBJETO RETENIDO POR LA CLASE CONTEXTO
                            this._context.Entry(fullinfo.Usuario).State = EntityState.Detached;
                        }

                        //--------------------------------------------------------------------------------------------------------
                        //SE VUELVE A VERISICAR EL ESTADO DE LOS OBJTOS QUE CONTIENEN LA INFORMACION SOLICITADA DE LA BASE DE DATOS
                        if (fullinfo.Persona == null && fullinfo.Usuario == null)
                        {
                            //SE RETORNA LA RESPUESTA DE ESTATUS BAD REQUEST 400
                            return(BadRequest("Error, vuelva a intentarlo nuevamente"));
                        }

                        //--------------------------------------------------------------------------------------------------------
                        //SE CREA E INICIALIZA UN OBJETO DEL TIPO "HistorialSolicitudesWeb" CON LA INFORMACION DEL NUEVO REGISTRO
                        //DE LA TABLA "HistorialSolicitudesWeb".
                        Historialsolicitudesweb solicitudesweb =
                            Historialsolicitudesweb.NewHistorialSolocitudesWeb(userselected.UserIdRequested, 11);

                        //--------------------------------------------------------------------------------------------------------
                        //SE ALMACENA EL REGISTRO DENTRO DE LA BASE DE DATOS
                        this._context.Historialsolicitudesweb.Add(solicitudesweb);      //=> SE CREA LA INFORMACION DE UN NUEVO REGISTRO EN LA TABLA HistorialSolicitudesWeb.
                        this._context.Entry(solicitudesweb).State = EntityState.Added;  //=> SE CAMBIA EL ESTADO DEL OBJETO CREADO COMO REFERENCIA.

                        //--------------------------------------------------------------------------------------------------------
                        //SE GUARDAN LOS CAMBIOS REALIZADOS SOBRE LA BASE DE DATOS
                        await this._context.SaveChangesAsync();

                        //SE CULMINA LA TRANSACCION CON LA BASE DE DATOS
                        await transaction.CommitAsync();
                    }
                }
                //SI OCURRE ALGUNA EXCEPCION EN EL PROCESO DE LECTURA Y ESCRITURA DE LA BASE DE DATOS EL CODIGO
                //SE REDIRIGE A LA SECCION CATCH DEL CICLO TRY...CATCH
                catch (Exception ex) when(ex is DbUpdateException ||
                                          ex is DbUpdateConcurrencyException)
                {
                    Console.WriteLine("\n=================================================");
                    Console.WriteLine("=================================================");
                    Console.WriteLine("\nHa ocurrico un error:\n" + ex.Message.ToString());
                    Console.WriteLine("=================================================");
                    Console.WriteLine("=================================================\n");
                    //SE RETONA LA RESPUESTA "BadRequest" JUNTO CON UN MENSAJE INFORMANDO SOBRE EL ERROR
                    return(BadRequest("\nHa ocurrico un error, intentelo nuevamente"));
                }
            }

            return(Ok(fullinfo));
        }