public static RegistroTablero NewRegistroTablero(Tableros tableroinfo, List <ItemTablero> itemstablero) { return(new RegistroTablero() { tableroInfo = tableroinfo, itemsTablero = itemstablero, }); }
//-------------------------------------------------------------------------------------------------- //FUNCION QUE ACTUALIZARA LA INFORMACION DE UN USUARIO CUANDO SE REALICE EL LLAMADO DESDE //LA PAGINA "PaginaConsultaTableros" DE LA APLICACION "Mtto App". EN ESTA FUNCION SE RECIBEN //LOS PARAMETROS: // -info => OBJETO DEL TIPO "RequestConsultaTablero" ENVIADO EN EL BODY DE LA SOLICITUD HTTP // JUNTO CON LA INFORMACION NECESARIA PARA PROCESAR LA CONSULTA DE TABLEROS. //-------------------------------------------------------------------------------------------------- public async Task <ActionResult <RegistroTablero> > ConsultaTableroId([FromBody] RequestConsultaTablero info) { //SE CREA E INICIALIZA EL OBJETO DEL TIPO "RegistroTablero" QUE CONTENDRA Y RETORNARA //TODA LA INFORMACION DEL TABLERO CONSULTADO. RegistroTablero tablero = null; //SE EVALUA SI EXISTE ALGUN TABLERO DENTRO DE LA BASE DE DATOS QUE POSEEA EL ID ENVIADO COMO PARAMETRO if (this._context.Tableros.Any (x => x.TableroId.ToLower() == info.TableroId.ToLower())) //=> true => EXISTE UN REGISTRO DENTRO DE LA CLASE TABLERO CON DICHO DATO { //SE INICIA LA TRANSACCIONES CON LA BASE DE DATOS using (var transaction = this._context.Database.BeginTransaction()) { //SE INICIA EL CICLO TRY... CATCH try { //-------------------------------------------------------------------------------------------------------- //CON LA INFORMACION ENVIADA SE PROCEDE A BUSCAR LA INFORMACION DE USUARIO DENTRO DE LA BASE DE DATOS //SE CREA EL OBJETO "tableroinfo", Y SE INICIALIZA CON EL METODO DE BUSQUEDA PROPIO DEL OBJETO "Context" //DECRITO AL INICIO DE LA CLASE. Tableros tableroinfo = await this._context.Tableros.FirstAsync (x => x.TableroId.ToLower() == info.TableroId.ToLower()); //=> METODO QUE INSPECCIONA TODOS LOS REGISTROS DE //LA TABLA "Tableros" Y COMPARA EL ID DE CADA REGISTRO //CON EL ID DEL OBJETO ENVIADO COMO PARAMETRO DE FUNCION //-------------------------------------------------------------------------------------------------------- //SE EVALUA QUE EL OBJETO NO SEA NULO if (tableroinfo != null) { //SI ES DIFERENTE DE NULO DESECHAMOS LA ENTIDAD RETENIDA POR EF (ENTITYFRAMEWORK) this._context.Entry(tableroinfo).State = EntityState.Detached; } //-------------------------------------------------------------------------------------------------------- //CREAMOS E INICIALIZAMOS UNA LISTA DE OBJETOS "Items" CON LOS ITEMS QUE POSEE DICHO TABLERO List <Items> itemstablero = await this._context.Items.Where(x => x.TableroId.ToLower() == info.TableroId.ToLower()).ToListAsync(); //-------------------------------------------------------------------------------------------------------- //SE CREA E INICIALIZA UN OBJETO DEL TIPO "HistorialConsultaTableros" QUE SERVIRA PARA CONTENER //LA INFORMACION DEL NUEVO REGISTRO DENTRO DE LA TABLA "Modificacionesusuario" Historialconsultatableros newregistro = Historialconsultatableros.NewHistorialConsultaTableros(tableroinfo.TableroId, "CONSULTA_POR_TABLERO_ID", info.UserId); //-------------------------------------------------------------------------------------------------------- //SE AÑADE A LA TABLAS "HistorialConsultaTableros" EL NUEVO REGISTRO this._context.Historialconsultatableros.Add(newregistro); //=> SE CREA LA INFORMACION DE UN NUEVO REGISTRO EN LA TABLA HistorialConsultaTableros. this._context.Entry(newregistro).State = EntityState.Added; //=> SE CAMBIA EL ESTADO DEL OBJETO CREADO COMO REFERENCIA. //-------------------------------------------------------------------------------------------------------- //SE CREA E INICIALIZA UN OBJETO DEL TIPO "HistorialSolicitudesWeb" CON LA INFORMACION DEL NUEVO REGISTRO //DE LA TABLA "HistorialSolicitudesWeb". Historialsolicitudesweb solicitudweb = Historialsolicitudesweb.NewHistorialSolocitudesWeb(info.UserId, 2); //-------------------------------------------------------------------------------------------------------- //SE AÑADE A LA TABLA "HistorialSolicitudesWeb" EL NUEVO REGISTRO this._context.Historialsolicitudesweb.Add(solicitudweb); //=> SE CREA LA INFORMACION DE UN NUEVO REGISTRO EN LA TABLA HistorialSolicitudesWeb. this._context.Entry(solicitudweb).State = EntityState.Added; //=> SE CAMBIA EL ESTADO DEL OBJETO CREADO COMO REFERENCIA. //-------------------------------------------------------------------------------------------------------- //INICIALIZAMOS EL OBJETO "RegistroTablero" (CREADO AL INICIO DE LA FUNCION) CON TODA LA //INFORMACION DEL TABLERO SOLICITADO tablero = RegistroTablero.NewRegistroTablero(tableroinfo, itemstablero); //-------------------------------------------------------------------------------------------------------- //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("\nHa ocurrico un error:\n" + ex.Message.ToString()); //SE RETONA LA RESPUESTA "BadRequest" JUNTO CON UN MENSAJE INFORMANDO SOBRE EL ERROR return(BadRequest("\nHa ocurrico un error, intentelo nuevamente")); } } } //NO SE CONSIGUIO NINGUN REGISTRO QUE POSEEA EL ID ENVIADO COMO PARAMETRO else { //SE RETORNA EL CODIGO 404 NOT FOUND (NO ENCONTRADO) return(NotFound("No se encontro registro de tableros con el siguiente Id: " + info.TableroId)); } //SE RETORNA EL CODIGO 200 OK JUNTO CON TODA LA INFORMACION DEL TABELRO SOLICITADO return(Ok(tablero)); }
public async Task <IActionResult> EliminarTablero([FromBody] RequestConsultaTablero info) { //SE VERIFICA QUE EL OBJETO QUE CONTIENE LA INFOMACION RECIBIDA NO SEA NULO if (info != null) //=> OBJETO "info" NO NULO { //SE BUSCAN REGISTROS EXISTENTES QUE COINCIDAN CON LA INFORMACION RECIBIDA if (this._context.Tableros.Any (x => x.SapId.ToLower() == info.SapId.ToLower()) && //=> SE VERIFICA LA EXISTENCIA DE UN REGISTRO CON LA INFORMACION CONTENIDA EN "info.SapId" this._context.Tableros.Any (x => x.TableroId.ToLower() == info.TableroId.ToLower())) //=> SE VERIFICA LA EXISTENCIA DE UN REGISTRO CON LA INFORMACION CONTENIDA EN "info.TableroID" { //SE INICIA LA TRANSACCIONES CON LA BASE DE DATOS using (var transaction = this._context.Database.BeginTransaction()) { try { //COMPARAMOS LA INFOMACION DE TABLERO DEVUELTA CUANDO SE REALIZAN LAS CONSULTAS POR: // - CONSULTA DE TABLERO FILTRANDO EL CAMPO "TableroID" // - CONSULTA DE TABLERO FILTRANDO EL CAMPO "SapID" //NOTA: CONDICIONAL USADO PARA CERTIFICAR LA INFORMACION CONTENIDA EN EL OBJETO "info" if ((this._context.Tableros.First(x => x.TableroId.ToLower() == info.TableroId.ToLower())) == (this._context.Tableros.First(x => x.SapId.ToLower() == info.SapId.ToLower()))) { //CREAMOS EL OBJETO QUE RECIBIRA TODA LA INFORMACION RELACIONADA CON EL TABLERO Tableros tableroinfo = await this._context.Tableros.FirstAsync(x => x.TableroId.ToLower() == info.TableroId.ToLower()); //SE ACTUALIZA EL REGISRO DENTRO DE LA BASE DE DATOS this._context.Tableros.Remove(tableroinfo); //SE ENCONTRO EL TABLERO EN LA BASE DE DATOS SE DESECHA this._context.Entry(tableroinfo).State = EntityState.Deleted; //RECORREMOS TODOS LOS REGISTROS DE ITEMS foreach (Items x in this._context.Items.ToList()) { //VERIFICAMOS QUE EL CAMPO "TableroID" DEL REGISTRO EVALUADO COINCIDA CON EL //DATO CONTENIDO EN EL OBJETO REIBIDO. if (x.TableroId.ToLower() == info.TableroId.ToLower()) { //SE ELIMINA EL REGISTO DEL ITEM this._context.Remove(x); //SE ENCONTRO EL ITEM EN LA BASE DE DATOS SE DESECHA this._context.Entry(x).State = EntityState.Deleted; } else { //SE ENCONTRO EL ITEM EN LA BASE DE DATOS SE DESECHA this._context.Entry(x).State = EntityState.Detached; } } //SE GUARDAN LOS CAMBIOS. await this._context.SaveChangesAsync(); } else //LA INFORMACION DE TABLERO DEVUELTA CUANDO SE REALIZAN LAS CONSULTAS POR LOS CAMPOS //"TableroId" Y "SapID" NO COINCIDE. { //SE RETONA LA RESPUESTA "BadRequest" JUNTO CON UN MENSAJE INFORMANDO SOBRE EL ERROR BadRequest("Informacion de tablero inconsistente"); } } //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")); } //SE TERMINA LA TRANSACCION await transaction.CommitAsync(); } } } else //=> OBJETO "info" NULO { //SE RETONA LA RESPUESTA "BadRequest" JUNTO CON UN MENSAJE INFORMANDO SOBRE EL ERROR return(BadRequest("Objeto vacio O nulo")); } return(Ok()); }