//========================================================================================================= //========================================================================================================= //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)); }
//-------------------------------------------------------------------------------------------------- //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)); }