/// <summary> /// Elimina un asunto de la base de datos /// Fecha de creación : 06/06/2018 /// Autor : Maximiliano Leiva /// </summary> /// <param name="pEntAsunto"></param> public void Remove(Entidades.Asunto pEntAsunto) { try { // Generamos un nuevo objeto de conexión using (SQLiteConnection c = new SQLiteConnection(Conexion.Cadena)) { // Realizamos la apertura de conexión c.Open(); // Disponemos la transacción para ser utilizada en el transcurso de la operación using (SQLiteTransaction t = c.BeginTransaction()) { // Eliminamos los estados guardados en base de datos EstadoAsunto.EliminarEstadosPorAsunto(pEntAsunto, c, t); // Preparamos la eliminación del asunto String strEliminarAsunto = "DELETE FROM ASUNTOS where numero=@Numero and operador=@Operador"; // Generamos el comando de eliminación using (SQLiteCommand cmdEliminarAsunto = new SQLiteCommand(strEliminarAsunto, c, t)) { // Agregamos los parametros al comando cmdEliminarAsunto.Parameters.Agregar("@Numero", pEntAsunto.Numero); cmdEliminarAsunto.Parameters.Agregar("@Operador", pEntAsunto.Oper.UserName); // Ejecutamos la eliminación por comando cmdEliminarAsunto.ExecuteNonQuery(); } // Impactamos el Commit t.Commit(); } } } catch (Exception) { throw new Exception("Ha ocurrido un error al eliminar el asunto"); } }
/// <summary> /// Consulta a la base de datos por los asuntos que corresponden al dia de la fecha /// Fecha de creación : 07/06/2018 /// Autor : Maximiliano Leiva /// </summary> /// <returns></returns> public List <Entidades.Asunto> GetCurrentDayList(Entidades.Operador pOper) { // Generamos la lista a devolver List <Entidades.Asunto> lstAsuntoDiario = new List <Entidades.Asunto>(); // Generamos el objeto de conexión despachable using (SQLiteConnection c = new SQLiteConnection(Conexion.Cadena)) { // Abrimos la conexión c.Open(); // Creamos el comando despachable using (SQLiteCommand cmdConsultaAsuntosDia = new SQLiteCommand(_consultaAsuntosDiarios, c)) { // Cargamos el parametro de operador cmdConsultaAsuntosDia.Parameters.Agregar("@Operador", pOper.UserName); // Ejecutamos el lector de asuntos using (SQLiteDataReader rdrLectorAsunto = cmdConsultaAsuntosDia.ExecuteReader()) { // Leemos los resultados obtenidos del lector while (rdrLectorAsunto.Read()) { // Generamos una nueva entidad de asunto, donde almacenaremos los diferentes estados recolectados Entidades.Asunto entAsuntoDiario = new Entidades.Asunto(); // Almacenamos el número y el operador sobre el asunto entAsuntoDiario.Oper = pOper; entAsuntoDiario.Numero = rdrLectorAsunto["numero"].ToString(); // Traemos los estados del asunto recorrido entAsuntoDiario.Estados = EstadoAsunto.TraerListaEstadosPorAsunto(entAsuntoDiario); // Consultamos si el asunto es reportable using (SQLiteCommand cmdAsuntoReportable = new SQLiteCommand(_consultaReportable, c)) { cmdAsuntoReportable.Parameters.Agregar("@Numero", rdrLectorAsunto["numero"].ToString()); cmdAsuntoReportable.Parameters.Agregar("@Operador", pOper.UserName); // Ejecutamos el lector y averiguamos si es verdadera la consulta using (SQLiteDataReader rdrReportable = cmdAsuntoReportable.ExecuteReader()) { // Si devuelve respuesta se asigna verdadero a reportable if (rdrReportable.Read()) { entAsuntoDiario.Reportable = true; } } } lstAsuntoDiario.Add(entAsuntoDiario); } } } } // Devolvemos la lista procesada return(lstAsuntoDiario); }
/// <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(); } } }