/// <summary> /// Actualiza un asunto en base de datos /// Fecha de creación : 06/06/2018 /// Autor : Maximiliano Leiva /// </summary> /// <param name="pEntAsunto"></param> public void Modify(Entidades.Asunto pEntAsunto) { try { // Generamos el objeto de conexión using (SQLiteConnection c = new SQLiteConnection(Conexion.Cadena)) { // Abrimos la conexión c.Open(); // Iniciamos el sistema transaccional using (SQLiteTransaction t = c.BeginTransaction()) { // Generamos la cadena de caracteres que se utilizará para la actualización String strActualizarAsunto = "UPDATE asuntos SET descripcion_breve=@DescripcionBreve, grupo_derivado=@GrupoDerivado WHERE operador=@Operador and numero=@Numero"; // Generamos el comando de actualización using (SQLiteCommand cmdActualizarAsunto = new SQLiteCommand(strActualizarAsunto, c, t)) { // Parametrizamo la consulta cmdActualizarAsunto.Parameters.Agregar("@DescripcionBreve", pEntAsunto.DescripcionBreve); cmdActualizarAsunto.Parameters.Agregar("@GrupoDerivado", pEntAsunto.GrupoDerivado); cmdActualizarAsunto.Parameters.Agregar("@Operador", pEntAsunto.Oper.UserName); cmdActualizarAsunto.Parameters.Agregar("@Reportable", pEntAsunto.Reportable ? 1: 0); cmdActualizarAsunto.Parameters.Agregar("@Numero", pEntAsunto.Numero); // Ejecutamos la actualización cmdActualizarAsunto.ExecuteNonQuery(); } // Ejecutamos de la interfaz expuesta por EstadoAsunto para actulizar los estados EstadoAsunto.ActualizarEstadosPorAsunto(pEntAsunto, c, t); // Ejecutamos la interfaz expuesta por actuación para actualizarlas o eliminarlas if (pEntAsunto.Actuacion != null) { Actuacion.Modificar(pEntAsunto, c, t); } else // En el caso de que actuación venga como nulo, se eliminan todas las actuaciones relacionadas con el asunto (para evitar que queden actuaciones huerfanas) { Actuacion.Eliminar(pEntAsunto, c, t); } // Ejecutamos commit de la transacción t.Commit(); } } } catch (Exception) { throw new Exception("Ha ocurrido un error al ejecutar la actualización del asunto"); } }
/// <summary> /// Add a batch of asuntos /// </summary> /// <param name="lstA"></param> public void Add(List <Entidades.Asunto> lstA) { try { // Validates if the list is sented with data. If the list have one value, the petition is rejected because this method is for a batch of asuntos if (lstA == null || lstA.Count <= 1) { throw new Exception("La lista de asuntos recibida esta vacía, es nula o es menor al minimo"); } using (SQLiteConnection c = new SQLiteConnection(Conexion.Cadena)) { c.Open(); using (SQLiteTransaction t = c.BeginTransaction()) { string strInsertAsuntoOnDatabase = "INSERT INTO asuntos VALUES (@Number, @Operator, @ShortDescription, @DerivedGroup, @ForReport)"; using (SQLiteCommand cmdInsertAsuntoOnDatabase = new SQLiteCommand(strInsertAsuntoOnDatabase, c, t)) { foreach (var asuntoToSave in lstA) { cmdInsertAsuntoOnDatabase.Parameters.Agregar("@Number", asuntoToSave.Numero); cmdInsertAsuntoOnDatabase.Parameters.Agregar("@Operator", asuntoToSave.Oper.UserName); cmdInsertAsuntoOnDatabase.Parameters.Agregar("@ShortDescription", asuntoToSave.DescripcionBreve); cmdInsertAsuntoOnDatabase.Parameters.Agregar("@DerivedGroup", asuntoToSave.GrupoDerivado != null ? asuntoToSave.GrupoDerivado.Id : 0); cmdInsertAsuntoOnDatabase.Parameters.Agregar("@ForReport", asuntoToSave.Reportable); if (asuntoToSave.Estados != null) { EstadoAsunto.AddAllFromAsunto(asuntoToSave, c, t); } if (asuntoToSave.Actuacion != null) { Actuacion.Agregar(asuntoToSave, c, t); } cmdInsertAsuntoOnDatabase.ExecuteNonQuery(); } } // When process is completed correctly, commit changes on database t.Commit(); } } } catch (Exception ex) { throw ex; } }
/// <summary> /// Consulta a la base de datos si hay un asunto con los parametros que solicita /// Fecha de creación : 06/06/2018 /// Autor : Maximiliano Leiva /// </summary> /// <param name="pEntAsunto"></param> public Entidades.Asunto Get(Entidades.Asunto pEntAsunto) { // Generamos una entidad nueva que sera procesada Entidades.Asunto entAsunto = new Entidades.Asunto(); try { // Generamos un nuevo objeto de conexión using (SQLiteConnection c = new SQLiteConnection(Conexion.Cadena)) { // Abrimos la conexión c.Open(); String strConsultaAsunto = "SELECT descripcion_breve, grupo_derivado, reportable FROM asuntos where operador = @IdOperador and numero=@Numero"; using (SQLiteCommand cmdConsultaAsunto = new SQLiteCommand(strConsultaAsunto, c)) { cmdConsultaAsunto.Parameters.Agregar("@IdOperador", pEntAsunto.Oper.UserName); cmdConsultaAsunto.Parameters.Agregar("@Numero", pEntAsunto.Numero); using (SQLiteDataReader rdrConsultaAsunto = cmdConsultaAsunto.ExecuteReader()) { // Llemos los resultados obtenidos if (rdrConsultaAsunto.Read()) { if (!rdrConsultaAsunto.IsDBNull(1)) { entAsunto.GrupoDerivado.Id = rdrConsultaAsunto.GetInt32(1); } entAsunto.Numero = pEntAsunto.Numero; entAsunto.Oper = pEntAsunto.Oper; entAsunto.DescripcionBreve = rdrConsultaAsunto["descripcion_breve"].ToString(); entAsunto.Reportable = Convert.ToBoolean(rdrConsultaAsunto["reportable"]); entAsunto.Estados = EstadoAsunto.TraerListaEstadosPorAsunto(pEntAsunto); entAsunto.Actuacion = Actuacion.TraerActuaciones(entAsunto, c); } } } } } catch (Exception) { throw new Exception("Error en la recuperacion de información del asunto"); } // Devolvemos la entidad procesada return(entAsunto); }
/// <summary> /// Agrega un asunto a la base de datos /// Fecha de creación : 06/06/2018 /// Autor : Maximiliano Leiva /// </summary> /// <param name="pEntAsunto">Entidad con los datos cargados que necesitan persistencia</param> public void Add(Entidades.Asunto pEntAsunto) { // Generamos el objeto de conexión using (SQLiteConnection c = new SQLiteConnection(Conexion.Cadena)) { // Abrimos la conexión c.Open(); using (SQLiteTransaction t = c.BeginTransaction()) { // Disponemos de la cadena que se utilizará en el ingreso a la base de datos String strIngresarAsunto = "INSERT INTO asuntos (numero, operador, descripcion_breve, grupo_derivado, reportable) values (@Numero, @Operador, @Descripcion_breve, @Grupo_Derivado, @Reportable)"; using (SQLiteCommand cmdIngresarAsunto = new SQLiteCommand(strIngresarAsunto, c, t)) { // Parametrizamos los valores agregados cmdIngresarAsunto.Parameters.Agregar("@Numero", pEntAsunto.Numero); cmdIngresarAsunto.Parameters.Agregar("@Operador", pEntAsunto.Oper.UserName); cmdIngresarAsunto.Parameters.Agregar("@Descripcion_breve", pEntAsunto.DescripcionBreve); cmdIngresarAsunto.Parameters.Agregar("@Grupo_Derivado", pEntAsunto.GrupoDerivado); cmdIngresarAsunto.Parameters.Agregar("@Reportable", pEntAsunto.Reportable ? 1 : 0); // Ejecutamos el Query cmdIngresarAsunto.ExecuteNonQuery(); } if (pEntAsunto.Estados != null) { // Agregamos los estados que traiga el asunto en cuestión EstadoAsunto.AddAllFromAsunto(pEntAsunto, c, t); } // Agregamos la o las actuaciones if (pEntAsunto.Actuacion != null) { Actuacion.Agregar(pEntAsunto, c, t); } t.Commit(); } } }