Ejemplo n.º 1
0
        //Alumnos
        /// <summary>
        /// este metodo cubre la falta del modulo de notas, no esta registrado porque, si
        /// estuviese todo el sistema junto, este metodo no existiria.
        /// </summary>
        /// <param name="alumno"></param>
        public void generarPlanillasDeEvaluacion(Alumno alumno)
        {
            Nivel nivel = alumno.curso.nivel;

            List <Materia> materias = this.traerMateriasPorNivel(nivel);

            if (materias.Count > 0)
            {
                StringBuilder sb = new StringBuilder();

                SqlConnection connection = ConexionSingleton.obtenerConexion();
                connection.Open();
                SqlTransaction tx = connection.BeginTransaction();

                SqlCommand cmd  = new SqlCommand("", connection, tx);
                Random     rand = new Random();
                int        iter = 0;
                cmd.Parameters.Add(new SqlParameter("@nivel", SqlDbType.BigInt)).Value  = nivel.id;
                cmd.Parameters.Add(new SqlParameter("@alumno", SqlDbType.BigInt)).Value = alumno.legajo;
                foreach (Materia materia in materias)
                {
                    iter++;
                    sb.Append(" insert into planilla_de_evaluacion " +
                              "(pde_alumno_id,pde_nivel_id,pde_trimestre_1,pde_trimestre_2,pde_trimestre_3,pde_nota_final,pde_condicion,pde_dvh,pde_materia_id) ");
                    sb.Append(" values(@alumno,@nivel, ");
                    int    tri1      = rand.Next(1, 10);
                    int    tri2      = rand.Next(1, 10);
                    int    tri3      = rand.Next(1, 10);
                    Double promedio  = (tri1 + tri2 + tri3) / 3;
                    int    condicion = promedio >= 7 ? 1 : 0;
                    sb.Append("@tri1" + iter + ", " + "@tri2" + iter + ", " + "@tri3" + iter + ", " + "@promedio" + iter + ", " + "@condicion" + iter + ", ");
                    sb.Append(" @dvh" + iter + " , @materia" + iter + ")");
                    String trim1 = SeguridadUtiles.encriptarAES(tri1.ToString());
                    String trim2 = SeguridadUtiles.encriptarAES(tri2.ToString());
                    String trim3 = SeguridadUtiles.encriptarAES(tri3.ToString());
                    cmd.Parameters.Add(new SqlParameter("@tri1" + iter, SqlDbType.NVarChar)).Value     = trim1;
                    cmd.Parameters.Add(new SqlParameter("@tri2" + iter, SqlDbType.NVarChar)).Value     = trim2;
                    cmd.Parameters.Add(new SqlParameter("@tri3" + iter, SqlDbType.NVarChar)).Value     = trim3;
                    cmd.Parameters.Add(new SqlParameter("@promedio" + iter, SqlDbType.NVarChar)).Value = SeguridadUtiles.encriptarAES(promedio.ToString());
                    cmd.Parameters.Add(new SqlParameter("@condicion" + iter, SqlDbType.BigInt)).Value  = condicion;
                    cmd.Parameters.Add(new SqlParameter("@dvh" + iter, SqlDbType.NVarChar)).Value      = new DAOSeguridad().recalcularDigitoHorizontal(new String[] { trim1, trim2, trim3, alumno.legajo.ToString() });
                    cmd.Parameters.Add(new SqlParameter("@materia" + iter, SqlDbType.BigInt)).Value    = materia.id;
                }
                cmd.CommandText = sb.ToString();

                try
                {
                    cmd.ExecuteNonQuery();
                    tx.Commit();
                    connection.Close();
                    new DAOSeguridad().recalcularDigitoVertical("PLANILLA_DE_EVALUACION");
                }
                catch (Exception ex)
                {
                    tx.Rollback();
                    connection.Close();
                    throw;
                }
            }
        }
Ejemplo n.º 2
0
        public void actualizarMateria(Materia materia)
        {
            SqlConnection connection = ConexionSingleton.obtenerConexion();
            String        query      = "UPDATE MATERIA SET MAT_NOMBRE = @NOMBRE , MAT_DESCRIPCION = @DESC, MAT_TIPO = @TIPO  WHERE MAT_ID = @ID";

            connection.Open();
            SqlTransaction tx = connection.BeginTransaction();

            SqlCommand cmd = new SqlCommand(query, connection, tx);

            cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt)).Value      = materia.id;
            cmd.Parameters.Add(new SqlParameter("@NOMBRE", SqlDbType.VarChar)).Value = materia.nombre;
            cmd.Parameters.Add(new SqlParameter("@DESC", SqlDbType.VarChar)).Value   = materia.descripcion;
            cmd.Parameters.Add(new SqlParameter("@TIPO", SqlDbType.Bit)).Value       = long.Parse(materia.tipo);;
            try
            {
                cmd.ExecuteNonQuery();
                tx.Commit();
                connection.Close();
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se modificó una materia", CriticidadEnum.MEDIA);
            }
            catch (Exception ex)
            {
                tx.Rollback();
                connection.Close();
                throw ex;
            }
        }
Ejemplo n.º 3
0
        public void guardarCurso(Curso curso)
        {
            String query = " INSERT INTO CURSO(CUR_NIVEL_ID,CUR_CAPACIDAD, CUR_CODIGO, CUR_TURNO, CUR_LETRA) " +
                           " VALUES (@NIVEL,@CAPACIDAD,@CODIGO,@TURNO,@LETRA) ";
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx  = connection.BeginTransaction();
            SqlCommand     cmd = new SqlCommand(query, connection, tx);

            cmd.Parameters.Add(new SqlParameter("@NIVEL", SqlDbType.BigInt)).Value     = curso.nivel.id;
            cmd.Parameters.Add(new SqlParameter("@CAPACIDAD", SqlDbType.BigInt)).Value = curso.capacidad;
            cmd.Parameters.Add(new SqlParameter("@CODIGO", SqlDbType.VarChar)).Value   = curso.codigo;
            cmd.Parameters.Add(new SqlParameter("@TURNO", SqlDbType.Char)).Value       = curso.turno;
            cmd.Parameters.Add(new SqlParameter("@LETRA", SqlDbType.Char)).Value       = curso.letra;


            try
            {
                cmd.ExecuteNonQuery();
                tx.Commit();
                connection.Close();
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se guardó un curso", CriticidadEnum.MEDIA);
            }
            catch (Exception ex)
            {
                tx.Rollback();
                connection.Close();
                throw ex;
            }
        }
Ejemplo n.º 4
0
        public void borrarCurso(Curso curso)
        {
            String query = " UPDATE CURSO SET " +
                           " CUR_BORRADO = 1 " +
                           " WHERE CUR_ID = @ID";
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx  = connection.BeginTransaction();
            SqlCommand     cmd = new SqlCommand(query, connection, tx);

            cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt)).Value = curso.id;

            try
            {
                cmd.ExecuteNonQuery();
                tx.Commit();
                connection.Close();
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se borró un curso", CriticidadEnum.ALTA);
            }
            catch (Exception ex)
            {
                tx.Rollback();
                connection.Close();
                throw ex;
            }
        }
Ejemplo n.º 5
0
        public void borrarHorario(Horario horario)
        {
            StringBuilder query = new StringBuilder(" delete horario  ");

            query.Append(" where hor_id = @id ");

            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx  = connection.BeginTransaction();
            SqlCommand     cmd = new SqlCommand(query.ToString(), connection, tx);

            cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.BigInt)).Value = horario.id;

            try
            {
                cmd.ExecuteNonQuery();
                tx.Commit();
                connection.Close();
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se borró un horario", CriticidadEnum.MEDIA);
            }
            catch (Exception ex)
            {
                tx.Rollback();
                connection.Close();
                throw ex;
            }
        }
Ejemplo n.º 6
0
        public void promocionarAlumno(Alumno alumno, Curso curso)
        {
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx = connection.BeginTransaction();

            SqlCommand cmd = new SqlCommand(" UPDATE ALUMNO SET ALU_CURSO = @CURSO, ALU_ORIENTACION = @ORIENTACION WHERE ALU_LEGAJO = @LEGAJO ", connection, tx);

            cmd.Parameters.Add(new SqlParameter("@CURSO", SqlDbType.BigInt)).Value       = curso.id;
            cmd.Parameters.Add(new SqlParameter("@LEGAJO", SqlDbType.BigInt)).Value      = alumno.legajo;
            cmd.Parameters.Add(new SqlParameter("@ORIENTACION", SqlDbType.BigInt)).Value = curso.nivel.orientacion != null ? Convert.DBNull : long.Parse(curso.nivel.orientacion.codigo);

            try
            {
                cmd.ExecuteNonQuery();
                tx.Commit();
                connection.Close();

                alumno.curso = curso;
                this.generarPlanillasDeEvaluacion(alumno);
            }
            catch (Exception)
            {
                tx.Rollback();
                connection.Close();
                throw;
            }
            Usuario usu = new Usuario();

            usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
            new DAOSeguridad().grabarBitacora(usu, "Se promocionó un alumno", CriticidadEnum.MEDIA);
        }
Ejemplo n.º 7
0
        public void guardarMateria(Materia materia)
        {
            SqlCommand    cmd        = new SqlCommand();
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();

            SqlTransaction tx = connection.BeginTransaction();

            cmd.Connection  = connection;
            cmd.Transaction = tx;
            cmd.CommandText = " INSERT INTO MATERIA (MAT_NOMBRE,MAT_DESCRIPCION,MAT_TIPO) VALUES (@NOMBRE,@DESC,@TIPO) ";

            cmd.Parameters.Add(new SqlParameter("@NOMBRE", SqlDbType.VarChar)).Value = materia.nombre;
            cmd.Parameters.Add(new SqlParameter("@DESC", SqlDbType.VarChar)).Value   = materia.descripcion;
            cmd.Parameters.Add(new SqlParameter("@TIPO", SqlDbType.Bit)).Value       = long.Parse(materia.tipo);


            try
            {
                cmd.ExecuteNonQuery();
                tx.Commit();
                connection.Close();
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se guardó una materia", CriticidadEnum.MEDIA);
            }
            catch (Exception)
            {
                tx.Rollback();
                connection.Close();
                throw;
            }
        }
Ejemplo n.º 8
0
        public void borrarMateria(Materia materia)
        {
            SqlConnection connection = ConexionSingleton.obtenerConexion();
            String        query      = "UPDATE MATERIA SET MAT_BORRADA = 1 WHERE MAT_ID = @ID";

            connection.Open();
            SqlTransaction tx = connection.BeginTransaction();

            SqlCommand cmd = new SqlCommand(query, connection, tx);

            cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt)).Value = materia.id;
            try
            {
                cmd.ExecuteNonQuery();
                tx.Commit();
                connection.Close();
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se borró una materia", CriticidadEnum.MEDIA);
            }
            catch (Exception ex)
            {
                tx.Rollback();
                connection.Close();
                throw ex;
            }
        }
Ejemplo n.º 9
0
        //NIVELES
        public List <Nivel> listarNiveles(String filtro, String valor, String orden)
        {
            List <Nivel>  niveles    = new List <Nivel>();
            SqlDataReader reader     = null;
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx  = connection.BeginTransaction();
            SqlCommand     cmd = new SqlCommand(
                " select *,( " +
                " select count(*) from MATERIA_NIVEL where MN_NIVEL_ID = NIVEL.NIV_ID " +
                " ) as materias " +
                " from nivel left join orientacion ori on ori.ORI_CODIGO = NIV_ORIENTACION"
                , connection, tx);

            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    Nivel nivel = new Nivel();
                    nivel.id          = (long)reader.GetValue(0);
                    nivel.codigo      = reader.GetValue(1).ToString();
                    nivel.descripcion = reader.GetValue(2).ToString();
                    if (!reader.IsDBNull(3))
                    {
                        Orientacion ori = new Orientacion();
                        ori.codigo        = reader.GetValue(3).ToString();
                        nivel.orientacion = ori;
                        ori.nombre        = reader.GetValue(5).ToString();
                    }
                    else
                    {
                        Orientacion ori = new Orientacion();
                        ori.codigo        = "null";
                        ori.nombre        = "";
                        nivel.orientacion = ori;
                    }
                    if (0 != (int)reader["materias"])
                    {
                        nivel.materia = new List <Materia>();
                    }
                    niveles.Add(nivel);
                }
                reader.Close();
                tx.Commit();
                connection.Close();
            }
            catch (Exception ex)
            {
                reader.Close();
                tx.Rollback();
                connection.Close();
                throw ex;
            }

            return(niveles);
        }
Ejemplo n.º 10
0
        //amonestaciones
        public void guardarAmonestacion(Amonestacion amonestacion)
        {
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx = connection.BeginTransaction();

            StringBuilder sb = new StringBuilder();

            sb.Append(" insert into amonestacion ");
            sb.Append(" (amon_alumno_id,amon_fecha,amon_motivo,amon_dvh) ");
            sb.Append(" values(@alu,@fecha,@motivo,@dvh) ");

            String dvh = new DAOSeguridad().recalcularDigitoHorizontal(new String[] { amonestacion.alumno.legajo.ToString(),
                                                                                      amonestacion.fecha.ToString("yyyy-MM-dd") });

            SqlCommand cmd = new SqlCommand(sb.ToString(), connection, tx);

            cmd.Parameters.Add(new SqlParameter("@alu", SqlDbType.BigInt)).Value  = amonestacion.alumno.legajo;
            cmd.Parameters.Add(new SqlParameter("@fecha", SqlDbType.Date)).Value  = amonestacion.fecha;
            cmd.Parameters.Add(new SqlParameter("@motivo", SqlDbType.Text)).Value = SeguridadUtiles.encriptarAES(amonestacion.motivo);
            cmd.Parameters.Add(new SqlParameter("@dvh", SqlDbType.VarChar)).Value = dvh;


            try
            {
                String check = " Select count(*) from amonestacion where amon_alumno_id = @alu and amon_fecha = @fecha";
                cmd.CommandText = check;
                SqlDataReader reader = cmd.ExecuteReader();

                while (reader.Read())
                {
                    int count = (int)reader.GetValue(0);
                    if (count > 0)
                    {
                        reader.Close();
                        throw new Exception("FECHA");
                    }
                }
                reader.Close();
                cmd.CommandText = sb.ToString();
                cmd.ExecuteNonQuery();
                tx.Commit();
                connection.Close();
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se registro una amonestación", CriticidadEnum.MEDIA);
            }
            catch (Exception)
            {
                tx.Rollback();
                connection.Close();
                throw;
            }
        }
Ejemplo n.º 11
0
        //Tutores
        public void guardarTutor(Tutor tutor)
        {
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx = connection.BeginTransaction();

            SqlCommand cmd = new SqlCommand("", connection, tx);

            StringBuilder query = new StringBuilder(" INSERT INTO TUTOR (TUT_NOMBRE,TUT_APELLIDO,TUT_TELEFONO_PRIMARIO,TUT_DNI,TUT_EMAIL");

            if (!String.IsNullOrEmpty(tutor.telefono2))
            {
                query.Append(",TUT_TELEFONO_SECUNDARIO) ");
            }
            else
            {
                query.Append(") ");
            }

            query.Append(" VALUES(@NOMBRE,@APELLIDO,@TEL1,@DNI,@MAIL");
            if (!String.IsNullOrEmpty(tutor.telefono2))
            {
                query.Append(",@TEL2) ");
                cmd.Parameters.Add(new SqlParameter("@TEL2", SqlDbType.NVarChar)).Value = SeguridadUtiles.encriptarAES(tutor.telefono2);
            }
            else
            {
                query.Append(") ");
            }

            cmd.Parameters.Add(new SqlParameter("@NOMBRE", SqlDbType.VarChar)).Value   = tutor.nombre;
            cmd.Parameters.Add(new SqlParameter("@APELLIDO", SqlDbType.VarChar)).Value = tutor.apellido;
            cmd.Parameters.Add(new SqlParameter("@TEL1", SqlDbType.NVarChar)).Value    = SeguridadUtiles.encriptarAES(tutor.telefono1);
            cmd.Parameters.Add(new SqlParameter("@DNI", SqlDbType.VarChar)).Value      = tutor.dni;
            cmd.Parameters.Add(new SqlParameter("@MAIL", SqlDbType.VarChar)).Value     = tutor.email;

            cmd.CommandText = query.ToString();

            try
            {
                cmd.ExecuteNonQuery();
                tx.Commit();
                connection.Close();
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se creó un tutor", CriticidadEnum.MEDIA);
            }
            catch (Exception ex)
            {
                tx.Rollback();
                connection.Close();
                throw ex;
            }
        }
Ejemplo n.º 12
0
        public Boolean chequearCodigoUnico(String codigoCurso, long cursoId)
        {
            Boolean codigoUnico = false;

            SqlDataReader reader = null;
            String        query  = " SELECT COUNT(*) FROM CURSO WHERE CUR_CODIGO = @CODIGO and CUR_BORRADO IS NULL  ";

            if (cursoId != 0)
            {
                query += " AND CUR_ID <> @ID ";
            }

            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx  = connection.BeginTransaction();
            SqlCommand     cmd = new SqlCommand(query, connection, tx);

            cmd.Parameters.Add(new SqlParameter("@CODIGO", SqlDbType.VarChar)).Value = codigoCurso;
            if (cursoId != 0)
            {
                cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt)).Value = cursoId;
            }


            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    int repetidos = (int)reader.GetValue(0);
                    if (repetidos == 0)
                    {
                        codigoUnico = true;
                    }
                }
                reader.Close();
                tx.Commit();
                connection.Close();
            }
            catch (Exception ex)
            {
                reader.Close();
                tx.Rollback();
                connection.Close();
                throw ex;
            }
            return(codigoUnico);
        }
Ejemplo n.º 13
0
        //Inasistencias

        public void guardarInasistencia(InasistenciaAlumno inasistencia)
        {
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx = connection.BeginTransaction();
            StringBuilder  sb = new StringBuilder();

            sb.Append(" insert into inasistencia_de_alumno ");
            sb.Append(" (ina_alumno_id,ina_fecha,ina_valor,ina_dvh,ina_justificada) ");
            sb.Append(" values(@alu,@fecha,@valor,@dvh,@justificada) ");

            String dvh = new DAOSeguridad().recalcularDigitoHorizontal(new String[] { inasistencia.Alumno.legajo.ToString(),
                                                                                      inasistencia.fecha.ToString("yyyy-MM-dd") });

            SqlCommand cmd = new SqlCommand(sb.ToString(), connection, tx);

            cmd.Parameters.Add(new SqlParameter("@alu", SqlDbType.BigInt)).Value     = inasistencia.Alumno.legajo;
            cmd.Parameters.Add(new SqlParameter("@fecha", SqlDbType.DateTime)).Value = inasistencia.fecha.ToString("yyyy-MM-dd");
            cmd.Parameters.Add(new SqlParameter("@valor", SqlDbType.Decimal)
            {
                Precision = 2
            }).Value = inasistencia.valor;
            cmd.Parameters.Add(new SqlParameter("@dvh", SqlDbType.VarChar)).Value     = dvh;
            cmd.Parameters.Add(new SqlParameter("@justificada", SqlDbType.Bit)).Value = inasistencia.Justificada;

            try
            {
                cmd.CommandText = sb.ToString();


                cmd.ExecuteNonQuery();
                tx.Commit();
                connection.Close();
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se guardó una inasistencia", CriticidadEnum.BAJA);
                new DAOSeguridad().recalcularDigitoVertical("INASISTENCIA_DE_ALUMNO");
            }
            catch (Exception)
            {
                tx.Rollback();
                connection.Close();
                throw;
            }
        }
Ejemplo n.º 14
0
        public void guardarHorario(Horario horario)
        {
            StringBuilder query = new StringBuilder(" insert into horario ");

            query.Append(" (")
            .Append(" hor_dia, ")
            .Append(" hor_curso, ")
            .Append(" hor_materia_id, ")
            .Append(" hor_docente_id ,")
            .Append(" hor_modulo_id ) ");

            query.Append(" values  (")
            .Append(" @dia,     ")
            .Append(" @curso,   ")
            .Append(" @materia, ")
            .Append(" @docente, ")
            .Append(" @modulo)  ");

            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx  = connection.BeginTransaction();
            SqlCommand     cmd = new SqlCommand(query.ToString(), connection, tx);

            cmd.Parameters.Add(new SqlParameter("@dia", SqlDbType.BigInt)).Value     = horario.dia;
            cmd.Parameters.Add(new SqlParameter("@curso", SqlDbType.BigInt)).Value   = horario.curso.id;
            cmd.Parameters.Add(new SqlParameter("@materia", SqlDbType.BigInt)).Value = horario.materia.id;
            cmd.Parameters.Add(new SqlParameter("@docente", SqlDbType.BigInt)).Value = horario.docente.legajo;
            cmd.Parameters.Add(new SqlParameter("@modulo", SqlDbType.BigInt)).Value  = horario.modulo.id;
            try
            {
                cmd.ExecuteNonQuery();
                tx.Commit();
                connection.Close();
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se creó un horario", CriticidadEnum.BAJA);
            }
            catch (Exception ex)
            {
                tx.Rollback();
                connection.Close();
                throw ex;
            }
        }
Ejemplo n.º 15
0
        public List <Materia> listarMaterias(String filtro, String valor, String orden)
        {
            List <Materia> materias = new List <Materia>();

            SqlCommand    cmd        = new SqlCommand();
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();

            SqlTransaction tx = connection.BeginTransaction();

            cmd.Connection  = connection;
            cmd.Transaction = tx;
            cmd.CommandText = " SELECT * FROM MATERIA WHERE MAT_BORRADA is null ";
            SqlDataReader reader = null;

            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    String  nombre = reader.GetValue(1).ToString();
                    String  desc   = reader.GetValue(2).ToString();
                    bool    tipo   = (bool)reader.GetValue(3);
                    Materia mat    = new Materia();
                    mat.id          = (long)reader.GetValue(0);
                    mat.nombre      = nombre;
                    mat.descripcion = desc;
                    mat.tipo        = (tipo) ? "TRONCAL" : "EXTRA";
                    materias.Add(mat);
                }
                reader.Close();
                tx.Commit();
                connection.Close();
            }
            catch (Exception ex)
            {
                reader.Close();
                tx.Rollback();
                connection.Close();
                throw ex;
            }

            return(materias);
        }
Ejemplo n.º 16
0
        public List <Materia> traerMateriasPorNivel(Nivel nivel)
        {
            List <Materia> materias = new List <Materia>();

            SqlConnection connection = ConexionSingleton.obtenerConexion();
            String        query      = " SELECT MAT_ID, MAT_NOMBRE, MAT_DESCRIPCION, MAT_TIPO FROM MATERIA_NIVEL INNER JOIN MATERIA ON MAT_ID = MN_MATERIA_ID " +
                                       "WHERE MN_NIVEL_ID = @IDNIVEL ";

            connection.Open();
            SqlTransaction tx      = connection.BeginTransaction();
            SqlCommand     command = new SqlCommand(query, connection, tx);

            command.Parameters.Add(new SqlParameter("@IDNIVEL", SqlDbType.BigInt)).Value = nivel.id;
            SqlDataReader reader = null;

            try
            {
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    String  nombre = reader.GetValue(1).ToString();
                    String  desc   = reader.GetValue(2).ToString();
                    bool    tipo   = (bool)reader.GetValue(3);
                    Materia mat    = new Materia();
                    mat.id          = (long)reader.GetValue(0);
                    mat.nombre      = nombre;
                    mat.descripcion = desc;
                    mat.tipo        = (tipo) ? "TRONCAL" : "EXTRA";
                    materias.Add(mat);
                }
                reader.Close();
                tx.Commit();
                connection.Close();
            }
            catch (Exception ex)
            {
                reader.Close();
                tx.Rollback();
                connection.Close();
                throw ex;
            }

            return(materias);
        }
Ejemplo n.º 17
0
        //chequear repetidos
        public Boolean verificarMateria(Materia materia)
        {
            Boolean       esEdit = materia.id != 0 ? true : false;
            Boolean       existe = false;
            SqlDataReader reader;
            SqlConnection connection = ConexionSingleton.obtenerConexion();
            String        query      = "SELECT COUNT(*) FROM MATERIA WHERE MAT_NOMBRE = @NOMBRE AND MAT_BORRADA is null ";

            if (esEdit)
            {
                query += " AND MAT_ID <> @ID ";
            }
            connection.Open();
            SqlTransaction tx = connection.BeginTransaction();

            SqlCommand cmd = new SqlCommand(query, connection, tx);

            cmd.Parameters.Add(new SqlParameter("@NOMBRE", SqlDbType.VarChar)).Value = materia.nombre;
            if (esEdit)
            {
                cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.VarChar)).Value = materia.id;
            }
            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    int resultadoCount = (int)reader.GetValue(0);
                    existe = (resultadoCount > 0);
                }
                reader.Close();
                tx.Commit();
                connection.Close();
            }
            catch (Exception ex)
            {
                tx.Rollback();
                connection.Close();
                throw ex;
            }

            return(existe);
        }
Ejemplo n.º 18
0
        public void repetirAlumno(Alumno alumno)
        {
            SqlConnection connection     = ConexionSingleton.obtenerConexion();
            DateTime      principioDeAño = new DateTime(DateTime.Now.Year, 1, 1);
            DateTime      finDeAño       = new DateTime(DateTime.Now.Year, 12, 31);

            connection.Open();
            SqlTransaction tx = connection.BeginTransaction();

            SqlCommand cmd = new SqlCommand(" update planilla_de_evaluacion set " +
                                            " pde_trimestre_1 = @valor, pde_trimestre_2 = @valor, pde_trimestre_3 = @valor, " +
                                            " pde_condicion = @valor, pde_nota_final = @valor, pde_dvh =@dvh " +
                                            " where pde_alumno_id = @alumno and pde_nivel_id = @nivel ", connection, tx);

            cmd.Parameters.Add(new SqlParameter("@valor", SqlDbType.NVarChar)).Value = Convert.DBNull;
            cmd.Parameters.Add(new SqlParameter("@dvh", SqlDbType.NVarChar)).Value   = SeguridadUtiles.encriptarMD5(alumno.legajo.ToString());
            cmd.Parameters.Add(new SqlParameter("@alumno", SqlDbType.BigInt)).Value  = alumno.legajo;
            cmd.Parameters.Add(new SqlParameter("@nivel", SqlDbType.BigInt)).Value   = alumno.curso.nivel.id;
            cmd.Parameters.Add(new SqlParameter("@principio", SqlDbType.Date)).Value = principioDeAño;
            cmd.Parameters.Add(new SqlParameter("@fin", SqlDbType.Date)).Value       = finDeAño;

            String updateInasistencias = " delete inasistencia_de_alumno where ina_alumno_id = @alumno and ina_fecha between @principio and @fin ";

            cmd.CommandText += updateInasistencias;
            try
            {
                cmd.ExecuteNonQuery();
                tx.Commit();
                connection.Close();
                DAOSeguridad dao = new DAOSeguridad();
                dao.recalcularDigitoVertical("PLANILLA_DE_EVALUACION");
                dao.recalcularDigitoVertical("INASISTENCIA_DE_ALUMNO");
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se marcó un alumno como repetidor", CriticidadEnum.ALTA);
            }
            catch (Exception ex)
            {
                tx.Rollback();
                connection.Close();
                throw;
            }
        }
Ejemplo n.º 19
0
        public List <Curso> listarCursosExcedidos()
        {
            SqlDataReader reader = null;
            List <Curso>  cursos = new List <Curso>();
            String        query  = " SELECT * FROM CURSO WHERE CUR_BORRADO IS NULL AND " +
                                   "(SELECT COUNT(*) FROM ALUMNO WHERE ALU_BORRADO IS NULL AND ALU_CURSO = CUR_ID) > CUR_CAPACIDAD";
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx  = connection.BeginTransaction();
            SqlCommand     cmd = new SqlCommand(query, connection, tx);

            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    Curso cur = new Curso();
                    Nivel niv = new Nivel();
                    niv.id        = (long)reader.GetValue(0);
                    niv.codigo    = reader.GetValue(1).ToString();
                    cur.id        = (long)reader.GetValue(2);
                    cur.capacidad = ((int)reader.GetValue(4));
                    cur.codigo    = reader.GetValue(5).ToString();
                    cur.turno     = reader.GetValue(6).ToString();
                    cur.letra     = reader.GetValue(7).ToString();
                    cur.nivel     = niv;
                    cursos.Add(cur);
                }
                reader.Close();
                tx.Commit();
                connection.Close();
            }
            catch (Exception ex)
            {
                reader.Close();
                tx.Rollback();
                connection.Close();
                throw ex;
            }
            return(cursos);
        }
Ejemplo n.º 20
0
        /// <summary>
        /// VERIFICA QUE EL TUTOR NO ESTE ASIGNADO A NINGUN ALUMNO.
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Boolean verificarTutor(long id)
        {
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx = connection.BeginTransaction();

            string        query  = " SELECT COUNT(*) FROM ALUMNO_TUTOR WHERE AT_TUTOR_ID = @ID";
            SqlCommand    cmd    = new SqlCommand(query, connection, tx);
            SqlDataReader reader = null;

            cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt)).Value = id;

            Boolean desasignado = false;

            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    int cantidad = (int)reader.GetValue(0);
                    if (cantidad == 0)
                    {
                        desasignado = true;
                    }
                }
                reader.Close();
                tx.Commit();
                connection.Close();
            }
            catch (Exception ex)
            {
                reader.Close();
                tx.Rollback();
                connection.Close();
                throw ex;
            }

            return(desasignado);
        }
Ejemplo n.º 21
0
        public List <InasistenciaAlumno> listarInasistencias(String filtro, String valor, String orden)
        {
            SqlDataReader             reader              = null;
            SqlConnection             connection          = ConexionSingleton.obtenerConexion();
            List <InasistenciaAlumno> inasistenciaAlumnos = new List <InasistenciaAlumno>();

            connection.Open();
            SqlTransaction tx  = connection.BeginTransaction();
            SqlCommand     cmd = new SqlCommand("SELECT * FROM INASISTENCIA_DE_ALUMNO WHERE INA_ALUMNO_ID = @ID ", connection, tx);

            cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt)).Value = long.Parse(valor);

            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    InasistenciaAlumno inas = new InasistenciaAlumno();
                    inas.fecha       = DateTime.Parse(reader.GetValue(1).ToString());
                    inas.valor       = (double)reader.GetDecimal(2);
                    inas.Justificada = reader.GetBoolean(4);
                    inasistenciaAlumnos.Add(inas);
                }
                reader.Close();
                tx.Commit();
                connection.Close();
            }
            catch (Exception)
            {
                if (reader != null)
                {
                    reader.Close();
                }
                tx.Rollback();
                connection.Close();
                throw;
            }

            return(inasistenciaAlumnos);
        }
Ejemplo n.º 22
0
        public List <Amonestacion> listarAmonestaciones(String filtro, String valor, String orden)
        {
            SqlDataReader       reader         = null;
            SqlConnection       connection     = ConexionSingleton.obtenerConexion();
            List <Amonestacion> amonestaciones = new List <Amonestacion>();

            connection.Open();
            SqlTransaction tx  = connection.BeginTransaction();
            SqlCommand     cmd = new SqlCommand("SELECT * FROM AMONESTACION WHERE AMON_ALUMNO_ID = @ID ", connection, tx);

            cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt)).Value = long.Parse(valor);

            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    Amonestacion amonestacion = new Amonestacion();
                    amonestacion.fecha  = DateTime.Parse(reader.GetValue(1).ToString());
                    amonestacion.motivo = SeguridadUtiles.desencriptarAES(reader.GetValue(2).ToString());
                    amonestaciones.Add(amonestacion);
                }
                reader.Close();
                tx.Commit();
                connection.Close();
                new DAOSeguridad().recalcularDigitoVertical("AMONESTACION");
            }
            catch (Exception)
            {
                if (reader != null)
                {
                    reader.Close();
                }
                tx.Rollback();
                connection.Close();
                throw;
            }

            return(amonestaciones);
        }
Ejemplo n.º 23
0
        public Boolean chequearCursoVacio(Curso curso)
        {
            Boolean vacio = false;

            SqlDataReader reader     = null;
            String        query      = " SELECT COUNT(*) FROM ALUMNO WHERE ALU_CURSO = @ID AND ALU_BORRADO IS NULL";
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx  = connection.BeginTransaction();
            SqlCommand     cmd = new SqlCommand(query, connection, tx);

            cmd.Parameters.Add(new SqlParameter("@ID", SqlDbType.BigInt)).Value = curso.id;


            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    int cantidad = (int)reader.GetValue(0);
                    if (cantidad == 0)
                    {
                        vacio = true;
                    }
                }
                reader.Close();
                tx.Commit();
                connection.Close();
            }
            catch (Exception ex)
            {
                reader.Close();
                tx.Rollback();
                connection.Close();
                throw ex;
            }
            return(vacio);
        }
Ejemplo n.º 24
0
        //MATERIAS

        public void actualizarMateriasAsignadas(Nivel nivel, List <Materia> materias)
        {
            SqlConnection connection = ConexionSingleton.obtenerConexion();
            StringBuilder sb         = new StringBuilder();

            connection.Open();
            SqlTransaction tx      = connection.BeginTransaction();
            SqlCommand     command = new SqlCommand("", connection, tx);

            command.Parameters.Add(new SqlParameter("@IDNIVEL", SqlDbType.BigInt)).Value = nivel.id;


            sb.Append(" DELETE  MATERIA_NIVEL WHERE MN_NIVEL_ID = @IDNIVEL ");
            int x = 1;

            foreach (Materia materia  in materias)
            {
                sb.Append(" INSERT INTO MATERIA_NIVEL (MN_MATERIA_ID,MN_NIVEL_ID) VALUES (@MATERIA" + x + ",@IDNIVEL) ");
                command.Parameters.Add(new SqlParameter("@MATERIA" + x, SqlDbType.BigInt)).Value = materia.id;
                x++;
            }

            command.CommandText = sb.ToString();
            try
            {
                command.ExecuteNonQuery();
                tx.Commit();
                connection.Close();
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se actualizaron las materias de un nivel", CriticidadEnum.MEDIA);
            }
            catch (Exception ex)
            {
                tx.Rollback();
                connection.Close();
                throw ex;
            }
        }
Ejemplo n.º 25
0
        // listar orientaciones
        public List <Orientacion> listarOrientacion()
        {
            SqlConnection      connection    = ConexionSingleton.obtenerConexion();
            List <Orientacion> orientaciones = new List <Orientacion>();

            connection.Open();
            SqlTransaction tx  = connection.BeginTransaction();
            SqlCommand     cmd = new SqlCommand(" Select * from Orientacion", connection, tx);

            SqlDataReader reader = null;

            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    Orientacion orientacion = new Orientacion();
                    orientacion.codigo = reader["ORI_CODIGO"].ToString();
                    orientacion.nombre = reader["ORI_NOMBRE"].ToString();
                    orientaciones.Add(orientacion);
                }

                reader.Close();
                tx.Commit();
                connection.Close();
            }
            catch (Exception ex)
            {
                if (reader != null)
                {
                    reader.Close();
                }
                tx.Rollback();
                connection.Close();
                throw ex;
            }
            return(orientaciones);
        }
Ejemplo n.º 26
0
        public void modificarInasistencia(InasistenciaAlumno inasistencia)
        {
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx = connection.BeginTransaction();

            StringBuilder sb = new StringBuilder();

            sb.Append(" update inasistencia_de_alumno set ");
            sb.Append(" ina_justificada        = @justificada ");
            sb.Append(" where ina_alumno_id = @alu  and ina_fecha = @fecha");

            SqlCommand cmd = new SqlCommand(sb.ToString(), connection, tx);

            cmd.Parameters.Add(new SqlParameter("@alu", SqlDbType.BigInt)).Value      = inasistencia.Alumno.legajo;
            cmd.Parameters.Add(new SqlParameter("@fecha", SqlDbType.DateTime)).Value  = inasistencia.fecha.ToString("yyyy-MM-dd");
            cmd.Parameters.Add(new SqlParameter("@justificada", SqlDbType.Bit)).Value = inasistencia.Justificada;

            try
            {
                cmd.CommandText = sb.ToString();
                cmd.ExecuteNonQuery();
                tx.Commit();
                connection.Close();
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se modificó una inasistencia", CriticidadEnum.BAJA);
                new DAOSeguridad().recalcularDigitoVertical("INASISTENCIA_DE_ALUMNO");
            }
            catch (Exception)
            {
                tx.Rollback();
                connection.Close();
                throw;
            }
        }
Ejemplo n.º 27
0
        public List <Docente> listarDocentes(String filtro, String valor, String orden)
        {
            SqlDataReader reader = null;

            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx = connection.BeginTransaction();

            SqlCommand     cmd      = new SqlCommand(" SELECT * FROM DOCENTE ", connection, tx);
            List <Docente> docentes = new List <Docente>();

            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    Docente docente = new Docente();
                    docente.legajo   = (long)reader.GetValue(0);
                    docente.apellido = reader.GetValue(1).ToString();
                    docente.nombre   = reader.GetValue(2).ToString();
                    docentes.Add(docente);
                }
                reader.Close();
                tx.Commit();
                connection.Close();
            }
            catch (Exception ex)
            {
                reader.Close();
                tx.Rollback();
                connection.Close();
                throw ex;
            }
            return(docentes);
        }
Ejemplo n.º 28
0
        public List <Tutor> listarTutor(String filtro, String valor, String orden)
        {
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            connection.Open();
            SqlTransaction tx = connection.BeginTransaction();

            List <Tutor>  tutores = new List <Tutor>();
            StringBuilder query   = new StringBuilder(" select * from TUTOR ");

            if (!String.IsNullOrEmpty(filtro) && !String.IsNullOrEmpty(valor))
            {
                // nombre apellido dni
                switch (filtro)
                {
                case "nombre":
                    query.Append("WHERE TUT_NOMBRE = @VALOR ");
                    break;

                case "apellido":
                    query.Append(" WHERE TUT_APELLIDO = @VALOR ");
                    break;

                case "dni":
                    query.Append(" WHERE TUT_DNI = @VALOR ");
                    break;
                }
            }



            SqlCommand    cmd    = new SqlCommand(query.ToString(), connection, tx);
            SqlDataReader reader = null;

            if (!String.IsNullOrEmpty(valor))
            {
                cmd.Parameters.Add(new SqlParameter("@VALOR", SqlDbType.VarChar)).Value = valor;
            }
            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    Tutor tut = new Tutor();
                    tut.id        = (long)reader.GetValue(0);
                    tut.nombre    = reader.GetValue(1).ToString();
                    tut.apellido  = reader.GetValue(2).ToString();
                    tut.telefono1 = SeguridadUtiles.desencriptarAES(reader.GetValue(3).ToString());
                    if (reader.IsDBNull(4))
                    {
                        tut.telefono2 = "";
                    }
                    else
                    {
                        tut.telefono2 = SeguridadUtiles.desencriptarAES(reader.GetValue(4).ToString());
                    }

                    tut.dni   = reader.GetValue(5).ToString();
                    tut.email = reader.GetValue(6).ToString();
                    tutores.Add(tut);
                }
                reader.Close();
                tx.Commit();
                connection.Close();
            }
            catch (Exception ex)
            {
                reader.Close();
                tx.Rollback();
                connection.Close();
                throw ex;
            }

            return(tutores);
        }
Ejemplo n.º 29
0
        public void actualizarAlumno(Alumno alumno)
        {
            SqlConnection connection = ConexionSingleton.obtenerConexion();

            String deleteQuery = " delete from alumno_tutor where at_alumno_id = @id ";

            StringBuilder sb = new StringBuilder();

            sb.Append(" update alumno set " +
                      "alu_apellido           = @apellido," +
                      "alu_nombre             = @nombre," +
                      "alu_fecha_nacimiento   = @fecha," +
                      "alu_dni                = @dni," +
                      "alu_curso              = @curso," +
                      "alu_domicilio          = @domicilio," +
                      "alu_orientacion        = @orientacion ");

            sb.Append(" where alu_legajo = @id ");
            connection.Open();
            SqlTransaction tx  = connection.BeginTransaction();
            SqlCommand     cmd = new SqlCommand("", connection, tx);

            cmd.Parameters.Add(new SqlParameter("@apellido", SqlDbType.VarChar)).Value    = alumno.apellido;
            cmd.Parameters.Add(new SqlParameter("@nombre", SqlDbType.VarChar)).Value      = alumno.nombre;
            cmd.Parameters.Add(new SqlParameter("@fecha", SqlDbType.DateTime)).Value      = alumno.fechaNacimiento;
            cmd.Parameters.Add(new SqlParameter("@dni", SqlDbType.VarChar)).Value         = alumno.dni;
            cmd.Parameters.Add(new SqlParameter("@curso", SqlDbType.BigInt)).Value        = alumno.curso.id;
            cmd.Parameters.Add(new SqlParameter("@domicilio", SqlDbType.VarChar)).Value   = SeguridadUtiles.encriptarAES(alumno.domicilio);
            cmd.Parameters.Add(new SqlParameter("@orientacion", SqlDbType.VarChar)).Value = alumno.orientacion != null ? alumno.orientacion.codigo : Convert.DBNull;
            cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.VarChar)).Value          = alumno.legajo;
            cmd.CommandText = sb.ToString();

            try
            {
                cmd.ExecuteNonQuery();
                cmd.CommandText = deleteQuery;
                cmd.ExecuteNonQuery();

                sb.Clear();
                int cantidad = 0;
                foreach (Tutor tutor in alumno.tutores)
                {
                    cantidad++;
                    cmd.Parameters.Add(new SqlParameter("@tut" + cantidad, SqlDbType.BigInt)).Value = tutor.id;
                    sb.Append(" insert into alumno_tutor (at_alumno_id,at_tutor_id) values (@id,@tut" + cantidad + ") ");
                }
                cmd.CommandText = sb.ToString();
                if (sb.ToString().Length > 0)
                {
                    cmd.ExecuteNonQuery();
                }
                tx.Commit();
                connection.Close();
                Usuario usu = new Usuario();
                usu.id = TrabajoDeCampo.Properties.Settings.Default.SessionUser;
                new DAOSeguridad().grabarBitacora(usu, "Se modificó un alumno", CriticidadEnum.MEDIA);
            }
            catch (Exception ex)
            {
                tx.Rollback();
                connection.Close();
                throw;
            }
        }
Ejemplo n.º 30
0
        public List <Alumno> listarAlumno(String filtro, String valor, String orden)
        {
            List <Alumno> alumnos        = new List <Alumno>();
            SqlConnection connection     = ConexionSingleton.obtenerConexion();
            DateTime      principioDeAño = new DateTime(DateTime.Now.Year, 1, 1);
            DateTime      finDeAño       = new DateTime(DateTime.Now.Year, 12, 31);


            String queryInasistencias = " (select SUM(INA_VALOR) as inasistencias from inasistencia_de_alumno where ina_alumno_id = alu.alu_legajo and " +
                                        "ina_justificada <> 1 and ina_fecha between @princio and @fin " +
                                        "group by ina_alumno_id) , ";
            StringBuilder sb = new StringBuilder();

            sb.Append(" select alu.alu_legajo, alu.alu_apellido, alu.alu_nombre, alu.alu_fecha_nacimiento, alu.alu_dni, alu.alu_curso, " +
                      " alu.alu_domicilio, alu.alu_orientacion, " +
                      " ori.ori_codigo, cur.cur_codigo , cur.cur_id, cur.cur_nivel_id, nivel.niv_codigo,ORI.ORI_NOMBRE, " +
                      queryInasistencias +
                      " (select count(*) from planilla_de_evaluacion where pde_alumno_id = alu.alu_legajo and pde_condicion = 0) as desaprobadas ");
            sb.Append(" from alumno alu ");
            sb.Append(" left join orientacion ori on ori.ori_codigo = alu.alu_orientacion ");
            sb.Append(" inner join curso cur on cur.cur_id = alu.alu_curso ");
            sb.Append(" inner join nivel nivel on cur.cur_nivel_id = nivel.niv_id");
            sb.Append(" where alu.alu_borrado is null ");
            if (!String.IsNullOrEmpty(filtro) && !String.IsNullOrEmpty(valor))
            {
                switch (filtro)
                {
                case "nombre":
                    sb.Append(" and alu.alu_nombre = @valor ");
                    break;

                case "apellido":
                    sb.Append(" and alu.alu_apellido = @valor ");
                    break;

                case "dni":
                    sb.Append(" and alu.alu_dni = @valor ");
                    break;

                case "curso":
                    sb.Append(" and cur.cur_codigo = @valor ");
                    break;
                }
            }
            connection.Open();
            SqlTransaction tx  = connection.BeginTransaction();
            SqlCommand     cmd = new SqlCommand(sb.ToString(), connection, tx);

            cmd.Parameters.Add(new SqlParameter("@princio", SqlDbType.Date)).Value = principioDeAño;
            cmd.Parameters.Add(new SqlParameter("@fin", SqlDbType.Date)).Value     = finDeAño;
            if (!String.IsNullOrEmpty(filtro) && !String.IsNullOrEmpty(valor))
            {
                cmd.Parameters.Add(new SqlParameter("@valor", SqlDbType.VarChar)).Value = valor;
            }

            SqlDataReader reader = null;

            try
            {
                reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    Alumno      alu = new Alumno();
                    Orientacion ori = new Orientacion();
                    Curso       cur = new Curso();
                    alu.legajo          = (long)reader["ALU_LEGAJO"];
                    alu.apellido        = reader["ALU_APELLIDO"].ToString();
                    alu.nombre          = reader["ALU_NOMBRE"].ToString();
                    alu.fechaNacimiento = DateTime.Parse(reader["ALU_FECHA_NACIMIENTO"].ToString());
                    alu.dni             = reader["ALU_DNI"].ToString();
                    cur.id           = (long)reader["CUR_ID"];
                    cur.codigo       = reader["CUR_CODIGO"].ToString();
                    cur.nivel        = new Nivel();
                    cur.nivel.id     = (long)reader["CUR_NIVEL_ID"];
                    cur.nivel.codigo = reader["NIV_CODIGO"].ToString();
                    alu.curso        = cur;
                    alu.domicilio    = SeguridadUtiles.desencriptarAES(reader["ALU_DOMICILIO"].ToString());
                    decimal faltas = reader.IsDBNull(14) ? 0 : (decimal)reader[14];
                    alu.puedeRepetir = (1 < faltas) || 2 < (int)reader["desaprobadas"];
                    if (reader.IsDBNull(8))
                    {
                        ori.codigo = "null";
                    }
                    else
                    {
                        ori.codigo = reader["ORI_CODIGO"].ToString();
                        ori.nombre = reader["ORI_NOMBRE"].ToString();
                    }

                    alu.orientacion = ori;
                    alumnos.Add(alu);
                }

                reader.Close();

                String tutoresQuery = " select tut_id from alumno_tutor inner join tutor on at_tutor_id = tut_id where at_alumno_id = @id ";
                cmd.CommandText = tutoresQuery;

                foreach (Alumno alu in alumnos)
                {
                    cmd.Parameters.Clear();
                    cmd.Parameters.Add(new SqlParameter("@id", SqlDbType.BigInt)).Value = alu.legajo;
                    reader      = cmd.ExecuteReader();
                    alu.tutores = new List <Tutor>();
                    while (reader.Read())
                    {
                        Tutor tut = new Tutor();
                        tut.id = (long)reader["TUT_ID"];
                        alu.tutores.Add(tut);
                    }
                    reader.Close();
                }
                reader.Close();

                tx.Commit();
                connection.Close();
            }
            catch (Exception ex)
            {
                if (reader != null)
                {
                    reader.Close();
                }
                tx.Rollback();
                connection.Close();
                throw ex;
            }
            return(alumnos);
        }