Exemplo n.º 1
0
        /// <summary>
        /// Agrega una columna a la tabla en base al turno pasado como parámetro
        /// </summary>
        /// <param name="turno">Turno registrado</param>
        private void agregarColumna(HorarioHabitualDTO turno)
        {
            //Obtengo la data table
            DataTable dt = (DataTable)asignadoTable.DataSource;

            //Pongo autozise para las columnas
            asignadoTable.ColumnHeadersHeightSizeMode =
                System.Windows.Forms.
                DataGridViewColumnHeadersHeightSizeMode.AutoSize;

            //Creo las columnas si no hay tabla
            if (dt == null)
            {
                asignadoTable.DataSource = null;
                dt = new DataTable();
                //Area
                dt.Columns.Add("Área", typeof(string));
                dt.Columns[0].ReadOnly = true;
                //Dia
                dt.Columns.Add("Día", typeof(string));
                dt.Columns[1].ReadOnly = true;
                //Ingreso
                dt.Columns.Add("Ingreso", typeof(string));
                dt.Columns[2].ReadOnly = true;
                //Egreso
                dt.Columns.Add("Egreso", typeof(string));
                dt.Columns[3].ReadOnly = true;
                //Duraciòn
                dt.Columns.Add("Duración", typeof(string));
                dt.Columns[4].ReadOnly = true;
                //Confirmado
                dt.Columns.Add("Confirmado", typeof(string));
                dt.Columns[5].ReadOnly = true;
            }

            //Creo la fila
            DataRow fila = dt.NewRow();

            //Cargo los datos
            fila[0] = turno.Area;
            fila[1] = turno.Dia;
            fila[2] = turno.Ingreso;
            fila[3] = turno.Egreso;
            fila[4] = turno.Duracion;
            fila[5] = turno.Confirmado;

            //Otra forma de cargarlos seria hacer lo siguiente:
            //dt.Rows.Add("Sistemas", "Martes", "12:30","15:30", "03:00" ,"SI");

            dt.Rows.Add(fila);

            asignadoTable.DataSource = dt;
        }
Exemplo n.º 2
0
        //**********************************
        //***** Métodos de lectura *********
        //**********************************
        /// <summary>
        /// Obtiene los turnos registrados para un usuario... tanto si estan confirmados como si no lo están
        /// </summary>
        /// <param name="usuario"></param>
        /// <returns></returns>
        public List <HorarioHabitualDTO> horariosHabitualesRegistrados(string usuario)
        {
            //Abro conexión
            MySqlConnection conexionADO = new MySqlConnection();

            conexionADO.ConnectionString = conexionString;
            conexionADO.Open();

            //Creo lector =) y efectuo la consulta
            MySqlDataReader data;
            MySqlCommand    lectura = new MySqlCommand("SELECT * FROM horario_asignado_habitual_duracion as h, area as a WHERE " +
                                                       "h.usuario = '" + usuario + "' AND " +
                                                       "h.area = a.idArea;", conexionADO);

            data = lectura.ExecuteReader();

            //armo la lista
            List <HorarioHabitualDTO> turnos = new List <HorarioHabitualDTO>();

            while (data.Read())
            {
                HorarioHabitualDTO t = new HorarioHabitualDTO();
                t.Area     = data.GetString("nombreArea");
                t.Dia      = Fecha.getDiaSemana(data.GetInt32("dia"));
                t.Ingreso  = new Horario(data.GetString("ingreso"));
                t.Egreso   = new Horario(data.GetString("egreso"));
                t.Duracion = new Horario(data.GetString("duracion"));

                int confirmacion = data.GetInt32("confirmado");
                if (confirmacion == 0)
                {
                    t.Confirmado = "NO";
                }
                else
                {
                    t.Confirmado = "SI";
                }

                turnos.Add(t);
            }

            data.Close();

            return(turnos);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Para cuando se hace click en cambiar horario
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cambiarHorarioButton_Click(object sender, EventArgs e)
        {
            try
            {
                if (asignadoTable.SelectedRows.Count == 0)
                {
                    throw new NoSeleccionoFilaException();
                }

                //Obtengo las celdas de la fila seleccionada
                DataGridViewCellCollection celdas = asignadoTable.SelectedRows[0].Cells;

                //La quinta celda corresponde al valor de confirmacion
                if (celdas[5].Value.ToString().Equals("NO"))
                {
                    throw new CambioHorarioInvalidoException();
                }

                //Procedo a armar el turnoDTO
                HorarioHabitualDTO turno = new HorarioHabitualDTO();
                turno.Area       = celdas[0].Value.ToString();
                turno.Dia        = celdas[1].Value.ToString();
                turno.Ingreso    = new Horario(celdas[2].Value.ToString());
                turno.Egreso     = new Horario(celdas[3].Value.ToString());
                turno.Duracion   = new Horario(celdas[4].Value.ToString());
                turno.Confirmado = celdas[5].Value.ToString();

                //Registro la solicitud para el admin
                GestorHorarios horarioDAO = new GestorHorarios();
                horarioDAO.registrarSolicitudCambioHorario(this.usuario, turno);

                //Mensajito
                MessageBox.Show("Solicitud de cambio registrada con éxito.", "Éxito",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (CambioHorarioInvalidoException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (NoSeleccionoFilaException ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Elimina el horario seleccionado solo si no esta confirmado
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void eliminarButton_Click(object sender, EventArgs e)
        {
            try
            {
                if (asignadoTable.SelectedRows.Count == 0)
                {
                    throw new NoSeleccionoFilaException();
                }

                //Obtengo las celdas de la fila seleccionada
                DataGridViewCellCollection celdas = asignadoTable.SelectedRows[0].Cells;

                //La quinta celda corresponde al valor de confirmacion
                if (celdas[5].Value.ToString().Equals("SI"))
                {
                    throw new EliminacionInvalidaException();
                }

                //Si esta NO confiramda procedo a armar el turnoDTO
                HorarioHabitualDTO turno = new HorarioHabitualDTO();
                turno.Area       = celdas[0].Value.ToString();
                turno.Dia        = celdas[1].Value.ToString();
                turno.Ingreso    = new Horario(celdas[2].Value.ToString());
                turno.Egreso     = new Horario(celdas[3].Value.ToString());
                turno.Duracion   = new Horario(celdas[4].Value.ToString());
                turno.Confirmado = celdas[5].Value.ToString();

                //Elimino el horario de la BD
                GestorHorarios turnoDAO = new GestorHorarios();
                turnoDAO.eliminarHorariosHabitual(usuario, turno);

                //Carga los horarios restantes en la tabla
                turnos = turnoDAO.horariosHabitualesRegistrados(this.usuario);
                asignadoTable.DataSource = null;
                foreach (HorarioHabitualDTO t in turnos)
                {
                    this.agregarColumna(t);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemplo n.º 5
0
        //************************************
        //***** Métodos de escritura *********
        //************************************

        /// <summary>
        /// Asigna el horario habitual pasado por paràmetro como no confirmado
        /// </summary>
        /// <param name="usuario">dni del usuario en formato string</param>
        /// <param name="turno">parametros del turno</param>
        public void crearHorarioHabitual(string usuario, HorarioHabitualDTO horarioHabitual)
        {
            //Abro conexión
            MySqlConnection conexionADO = new MySqlConnection();

            conexionADO.ConnectionString = conexionString;
            conexionADO.Open();

            //Necesito el ID de area para determinar el perìodo actual que le corresponde
            //Creo consulta
            MySqlDataReader data;
            MySqlCommand    lectura = new MySqlCommand("SELECT idArea FROM area WHERE nombreArea = '" + horarioHabitual.Area + "';", conexionADO);

            data = lectura.ExecuteReader();
            int idArea = 0;

            if (data.Read())
            {
                idArea = data.GetInt32("idArea");
            }
            else
            {
                throw new SQLErrorException("Área");
            }

            data.Close();


            //Obtengo el perìodo actual
            MySqlDataReader data2;
            MySqlCommand    lectura2 = new MySqlCommand("SELECT idPeriodo, nombre, area, inicio, fin, observaciones " +
                                                        "FROM periodo " +
                                                        "WHERE inicio < curdate() AND curdate() < fin AND area = " + idArea, conexionADO);

            data2 = lectura2.ExecuteReader();
            int idPeriodo = 0;

            if (data2.Read())
            {
                idPeriodo = data2.GetInt32("idPeriodo");
            }
            else
            {
                throw new SQLErrorException("Periodo");
            }

            data2.Close();

            // Ahora guardo el horario asignado habitual :D
            string myquerystring1 = "INSERT INTO horario_asignado_habitual (usuario, dia, ingreso, egreso, area, periodo, confirmado) " +
                                    "VALUES ('" + usuario + "'," + Fecha.getNumeroDia(horarioHabitual.Dia) + "," + horarioHabitual.Ingreso.getSQLFormat() + "," + horarioHabitual.Egreso.getSQLFormat() + "," + idArea +
                                    "," + idPeriodo + "," + horarioHabitual.confirmadoForSQL() + ");";

            //Asigno y ejecuto
            MySqlCommand cmd = new MySqlCommand();

            cmd.Connection  = conexionADO;
            cmd.CommandText = myquerystring1;
            cmd.ExecuteNonQuery();

            //Registro la solicitud
            this.registrarSolicitudNuevoHorario();
        }
Exemplo n.º 6
0
        /// <summary>
        /// Crea una solicitud para los administradores para el cambio de horario
        /// </summary>
        /// <param name="usuario"></param>
        /// <param name="turno"></param>
        public void registrarSolicitudCambioHorario(string usuario, HorarioHabitualDTO turno)
        {
            /* Primero debo obtener el id del horario que se desea cambiar.
             * Para saber cual es el horario, ademas de el usuario y los datos
             * contenidos en el DTO, debo obtener el IDarea y el periodo actual
             */

            //Abro conexión
            MySqlConnection conexionADO = new MySqlConnection();

            conexionADO.ConnectionString = conexionString;
            conexionADO.Open();

            //Necesito el ID de area
            MySqlDataReader data;
            MySqlCommand    lectura = new MySqlCommand("SELECT idArea FROM area WHERE nombreArea = '" + turno.Area + "';", conexionADO);

            data = lectura.ExecuteReader();
            int idArea = 0;

            if (data.Read())
            {
                idArea = data.GetInt32("idArea");
            }
            else
            {
                throw new SQLErrorException("Área");
            }

            data.Close();

            //Obtengo el perìodo actual
            MySqlDataReader data2;
            MySqlCommand    lectura2 = new MySqlCommand("SELECT idPeriodo, nombre, area, inicio, fin, observaciones " +
                                                        "FROM periodo " +
                                                        "WHERE inicio < curdate() AND curdate() < fin AND area = " + idArea, conexionADO);

            data2 = lectura2.ExecuteReader();
            int idPeriodo = 0;

            if (data2.Read())
            {
                idPeriodo = data2.GetInt32("idPeriodo");
            }
            else
            {
                throw new SQLErrorException("Periodo");
            }

            data2.Close();

            //Ahora puedo obtener el id del horario con estos datos
            MySqlDataReader data3;
            string          comando3 = "SELECT * " +
                                       "FROM horario_asignado_habitual WHERE " +
                                       "area = " + idArea + " AND " +
                                       "usuario = '" + usuario + "' AND " +
                                       "dia = " + Fecha.getNumeroDia(turno.Dia) + " AND " +
                                       "periodo = " + idPeriodo + " AND " +
                                       "ingreso = " + turno.Ingreso.getSQLFormat() + " AND " +
                                       "egreso = " + turno.Egreso.getSQLFormat() + ";";
            MySqlCommand lectura3 = new MySqlCommand(comando3, conexionADO);

            data3 = lectura3.ExecuteReader();
            int idHorario = 0;

            if (data3.Read())
            {
                idHorario = data3.GetInt32("idHorarioHabitual");
            }
            else
            {
                throw new SQLErrorException("Horario Habitual");
            }

            data3.Close();

            //Compruebo que no se haya solicitado con anterioridad dicho cambio
            //Obtengo el perìodo actual
            MySqlDataReader data4;
            MySqlCommand    lectura4 = new MySqlCommand("SELECT * " +
                                                        "FROM cambio_horario_habitual " +
                                                        "WHERE horarioHabitual = " + idHorario + " AND activo = 1;", conexionADO);

            data4 = lectura4.ExecuteReader();

            if (data4.Read())
            {
                throw new CambioHorarioInvalidoException();
            }
            data4.Close();

            // Ahora guardo la solicitud
            string myquerystring1 = "INSERT INTO cambio_horario_habitual (horarioHabitual) " +
                                    "VALUES (" + idHorario.ToString() + ");";

            //Asigno y ejecuto
            MySqlCommand cmd = new MySqlCommand();

            cmd.Connection  = conexionADO;
            cmd.CommandText = myquerystring1;
            cmd.ExecuteNonQuery();
        }
Exemplo n.º 7
0
        /// <summary>
        /// Establece como inactivo el turno pasado como parámetro.
        /// </summary>
        /// <param name="usuario"></param>
        /// <param name="turno"></param>
        public void eliminarHorariosHabitual(string usuario, HorarioHabitualDTO turno)
        {
            //Abro conexión
            MySqlConnection conexionADO = new MySqlConnection();

            conexionADO.ConnectionString = conexionString;
            conexionADO.Open();

            //Necesito el ID de area para poder eliminar
            MySqlDataReader data;
            MySqlCommand    lectura = new MySqlCommand("SELECT idArea FROM area WHERE nombreArea = '" + turno.Area + "';", conexionADO);

            data = lectura.ExecuteReader();
            int idArea = 0;

            if (data.Read())
            {
                idArea = data.GetInt32("idArea");
            }
            else
            {
                throw new SQLErrorException("Área");
            }

            data.Close();

            //Obtengo el perìodo actual para eliminar el horario que
            //corresponde a este periodo
            MySqlDataReader data2;
            MySqlCommand    lectura2 = new MySqlCommand("SELECT idPeriodo, nombre, area, inicio, fin, observaciones " +
                                                        "FROM periodo " +
                                                        "WHERE inicio < curdate() AND curdate() < fin AND area = " + idArea, conexionADO);

            data2 = lectura2.ExecuteReader();
            int idPeriodo = 0;

            if (data2.Read())
            {
                idPeriodo = data2.GetInt32("idPeriodo");
            }
            else
            {
                throw new SQLErrorException("Periodo");
            }

            data2.Close();


            // Ahora pongo como no activo el horario
            string myquerystring3 = "UPDATE horario_asignado_habitual " +
                                    "SET activo = 0 WHERE " +
                                    "area = " + idArea + " AND " +
                                    "usuario = '" + usuario + "' AND " +
                                    "dia = " + Fecha.getNumeroDia(turno.Dia) + " AND " +
                                    "periodo = " + idPeriodo + " AND " +
                                    "ingreso = " + turno.Ingreso.getSQLFormat() + " AND " +
                                    "egreso = " + turno.Egreso.getSQLFormat() + ";";


            //Asigno y ejecuto 3
            MySqlCommand cmd = new MySqlCommand();

            cmd.Connection  = conexionADO;
            cmd.CommandText = myquerystring3;
            cmd.ExecuteNonQuery();

            //Obtengo el id del horario que di de baja.
            MySqlDataReader data4;
            MySqlCommand    lectura4 = new MySqlCommand("SELECT * " +
                                                        "FROM horario_asignado_habitual " +
                                                        "WHERE " +
                                                        "area = " + idArea + " AND " +
                                                        "usuario = '" + usuario + "' AND " +
                                                        "dia = " + Fecha.getNumeroDia(turno.Dia) + " AND " +
                                                        "periodo = " + idPeriodo + " AND " +
                                                        "ingreso = " + turno.Ingreso.getSQLFormat() + " AND " +
                                                        "egreso = " + turno.Egreso.getSQLFormat() + ";"
                                                        , conexionADO);

            data4 = lectura4.ExecuteReader();
            int idHorario = 0;

            if (data4.Read())
            {
                idHorario = data4.GetInt32("idHorarioHabitual");
            }
            else
            {
                throw new SQLErrorException("ID");
            }

            data4.Close();


            //Elimino la solicitud de asignaciòn para dicho horario.
            string myquerystring4 = "DELETE FROM nuevo_horario_habitual " +
                                    "WHERE " +
                                    "horarioHabitual = " + idHorario + ";";

            //Asigno y ejecuto 4
            MySqlCommand cmd1 = new MySqlCommand();

            cmd1.Connection  = conexionADO;
            cmd1.CommandText = myquerystring4;
            cmd1.ExecuteNonQuery();
        }
Exemplo n.º 8
0
        /// <summary>
        /// Valida el horario ingresado y lo guarda en la base de datos
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void guardarButton_Click(object sender, EventArgs e)
        {
            if (areaCombo.SelectedIndex == -1)
            {
                MessageBox.Show("No se seleccionó un área", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (diaCombo.SelectedIndex == -1)
            {
                MessageBox.Show("No se seleccionó un día", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            try
            {
                //este constructor verifica la integridad
                Horario ingreso = new Horario(ingresoText.Text);
                Horario egreso  = new Horario(egresoText.Text);

                //el constructor verifica la integridad
                RangoHorario rango = new RangoHorario(ingreso, egreso);

                //el tamaño minimo es 59 minutos
                if (rango.rangoMenor(0, 59))
                {
                    throw new RangoMinimoException();
                }

                //armo la entidad turno DTO
                HorarioHabitualDTO turno = new HorarioHabitualDTO();
                turno.Area       = areaCombo.Text;
                turno.Dia        = diaCombo.Text;
                turno.Ingreso    = ingreso;
                turno.Egreso     = egreso;
                turno.Duracion   = rango.getDuracion();
                turno.Confirmado = "NO";

                //hay que validar que no se superponga a otros horarios

                foreach (HorarioHabitualDTO t in turnos)
                {
                    if (Fecha.getNumeroDia(t.Dia) == Fecha.getNumeroDia(turno.Dia))
                    {
                        RangoHorario r1 = new RangoHorario(t.Ingreso, t.Egreso);

                        if (r1.rangoSuperpuesto(rango))
                        {
                            throw new TurnoSuperpuestoException();
                        }
                    }
                }

                //y finalmente guardo el horario
                GestorHorarios gestor = new GestorHorarios();
                gestor.crearHorarioHabitual(this.usuario, turno);

                // y si anda todo bien agrego la columna a la tabla
                this.agregarColumna(turno);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }