Clase Hora: representa una hora mediante horas y minutos
Пример #1
0
        public void initPanelHorario(int minHor, int maxHor)
        {
            pnlHoras.Controls.Clear();
            Hora hora = new Hora(0, 0);
            int posY = 0;
            int horAux = minHor;
            while (horAux <= maxHor) {
                Label lblHora = new Label();
                if (horAux >= 24) {
                    lblHora.Text = "24:00";
                } else {
                    hora.setTiempo(horAux, 0);
                    lblHora.Text = hora.toString();
                }
                lblHora.Location = new Point(20, posY);
                lblHora.ForeColor = Color.White;
                posY += 60;
                horAux++;
                pnlHoras.Controls.Add(lblHora);
            }

            pnlHoras.Height = 1460;
            pnlLunes.Height = 1460;
            pnlMartes.Height = 1460;
            pnlMiercoles.Height = 1460;
            pnlJueves.Height = 1460;
            pnlViernes.Height = 1460;
            pnlSabado.Height = 1460;
            pnlDomingo.Height = 1460;
        }
        /// <summary>
        /// NO USAR, HAY UNA FUNCION EN LOS EN QUE YA HACE ESTO
        /// </summary>
        /// <param name="h"></param>
        /// <returns></returns>
        protected int getMaxHora(Horario h)
        {
            Hora maxHora =  new Hora(0, 1);
            foreach (List<Turno> turnosDia in h.ArrayTurnos) {
                foreach (Turno turno in turnosDia) {
                    if (turno.HoraFin > maxHora)
                        maxHora = turno.HoraFin;
                }
            }

            int mh = maxHora.Hor;
            if (maxHora.Min > 0)
                mh++;

            return mh;
        }
Пример #3
0
        /// <summary>
        /// Dice cuál es la primera hora de un día de un horario
        /// </summary>
        /// <param name="dia">Dia del que se quiere su primera hora</param>
        /// <returns>Primera hora del dia</returns>
        public Hora minHoraDia(int dia)
        {
            if (dia > 6 || dia < 0)
                throw new IndexOutOfRangeException("El día no existe (fuera de rango).");

            if (arrayTurnos[dia].Count == 0)
                throw new ArgumentNullException("El día está vacío.");

            Hora minima = new Hora(23, 59);

            foreach (Turno item in arrayTurnos[dia])
            {
                if (item.HoraInicio < minima)
                    minima = item.HoraInicio;
            }
            return minima;
        }
Пример #4
0
        /// <summary>
        /// Dice cuál es la hora más temprana del Horario
        /// </summary>
        /// <returns>Devuelve la hora más temprana del Horario</returns>
        public Hora minHora()
        {
            bool encontrado = false;
            Hora minima = new Hora(23, 59);
            for (int i = 0; i < 7; i++)
            {
                try
                {
                    if (minHoraDia(i) < minima || !encontrado)
                    {
                        minima = minHoraDia(i);
                        encontrado = true;
                    }
                }
                catch (ArgumentNullException)
                { }
            }

            if (!encontrado)
            {
                throw new NullReferenceException("El horario está vacío");
            }
            return minima;
        }
Пример #5
0
        /// <summary>
        /// Dice cuál es la última hora de un día de un horario
        /// </summary>
        /// <param name="dia">Dia del que se quiere su última hora</param>
        /// <returns></returns>
        public Hora maxHoraDia(int dia)
        {
            if (dia > 6 || dia < 0)
                throw new IndexOutOfRangeException("El día no existe (fuera de rango).");

            if (arrayTurnos[dia].Count == 0)
                throw new ArgumentNullException("El día está vacío");

            Hora maxima = new Hora(0, 0);

            foreach (Turno item in arrayTurnos[dia])
            {
                if (item.HoraFin > maxima)
                    maxima = item.HoraFin;
            }
            return maxima;
        }
Пример #6
0
        private void btAdd_Click(object sender, EventArgs e)
        {
            bool valid = true;

            if (tbUbi.Text == "")
            {
                lbErrUbi.Visible = true;
                valid = false;
            }
            else
            {
                lbErrUbi.Visible = false;
            }

            Taimer.Hora horI = new Taimer.Hora((int)udHoraIni.Value, (int)udMinIni.Value);
            Taimer.Hora horF = new Taimer.Hora((int)udHoraFin.Value, (int)udMinFin.Value);

            if (horI >= horF)
            {
                lbErrHora.Visible = true;
                valid = false;
            }
            else
            {
                lbErrHora.Visible = false;
            }

            if (valid)
            {

                Taimer.Turno turn = new Taimer.Turno(horI, horF, cbDia.Text, tbUbi.Text);
                // Lo añado a la tabla
                dgTurnos.Rows.Add(turn.DiaString, turn.HoraInicio.toString(), turn.HoraFin.toString(), turn.Ubicacion, "");
                dgTurnos.Rows[dgTurnos.RowCount - 1].Tag = turn;

                currentAct.AddTurno(turn);
                tCreados.Add(turn);

                tbUbi.Text = "";
                cbDia.SelectedIndex = 0;
                udHoraIni.Value = 0;
                udHoraFin.Value = 0;
                udMinFin.Value = 0;
                udMinIni.Value = 0;

                modificado = true;
            }
        }
Пример #7
0
        private void btnGuardar_Click(object sender, EventArgs e)
        {
            Taimer.Hora horI = new Taimer.Hora((int)nUDHorIniMod.Value, (int)nUDMinIniMod.Value);
            Taimer.Hora horF = new Taimer.Hora((int)nUDHorFinMod.Value, (int)nUDMinFinMod.Value);

            Hora backup_horI = new Taimer.Hora(((Turno)grpBoxTurno.Tag).HoraInicio);
            Hora backup_horF = new Taimer.Hora(((Turno)grpBoxTurno.Tag).HoraFin);

            if (horI < horF)
            {
                Taimer.Turno turno = (Taimer.Turno)grpBoxTurno.Tag;
                try
                {
                    turno.CambiarHorasNoSuperpone(horI, horF);
                    turno.Dia = Taimer.TaimerLibrary.convertToDais(cmbBoxDiaMod.Text);
                    turno.Ubicacion = txtBoxLugarMod.Text;
                    loadAsig(currentAct);
                    if (!tModificados.Contains(turno))
                        tModificados.Add(turno);

                    lbErrHoraMod.Visible = false;
                    modificado = true;

                }
                catch (NotSupportedException exc)
                {
                    ((Turno)grpBoxTurno.Tag).HoraInicio = backup_horI;
                    ((Turno)grpBoxTurno.Tag).HoraFin = backup_horF;
                    MessageBox.Show(exc.Message);
                }
            }
            else
            {
                lbErrHoraMod.Visible = true;
            }
        }
Пример #8
0
 /// <summary>
 /// Constructor de copia
 /// </summary>
 /// <param name="h"> Hora que se desea copiar</param>
 public Hora(Hora h)
 {
     hora = h.hora;
     min = h.min;
 }
Пример #9
0
 /// <summary>
 /// Devuelve los minutos de diferencia que hay con la hora que se pasa
 /// </summary>
 /// <param name="h2">Hora con la que se quiere obtener la diferencia</param>
 /// <returns></returns>
 public int MinutosDeDiferencia(Hora h2)
 {
     int minutos1 = Hor * 60 + Min;
     int minutos2 = h2.Hor * 60 + h2.Min;
     return (minutos2 - minutos1);
 }
Пример #10
0
        public bool Equals(Hora p)
        {
            // Si el parámetro es nulo, devuelve falso.
            if ((object)p == null) {
                return false;
            }

            // Devuelve TRUE si los campos coinciden:
            return (Hor == p.Hor) && (Min == p.Min);
        }
Пример #11
0
 /// <summary>
 /// Resta entre dos Horas, se expresa el resultado en minutos
 /// </summary>
 /// <param name="h1">Minuendo</param>
 /// <param name="h2">Sustraendo</param>
 /// <returns>Resultado expresado en minutos</returns>
 public static int diff(Hora h1, Hora h2)
 {
     int resultado = 0;
     if (h1 < h2)
         throw new InvalidOperationException("Orden de los operandos de la hora invertido");
     else
     {
         //throw new NotImplementedException();
         resultado += (h1.Hor - h2.Hor)*60;
         resultado += h1.Min - h2.Min;
     }
     return resultado;
 }
Пример #12
0
 /// <summary>
 /// Operador -
 /// </summary>
 /// <param name="h1">Minuendo</param>
 /// <param name="h2">Sustraendo</param>
 /// <returns>Hora resultado de la resta</returns>
 public static Hora operator -(Hora h1, Hora h2)
 {
     Hora resultado = new Hora(0, 0);
     if (h1 < h2)
         throw new InvalidOperationException("Orden de los operandos de la hora invertido");
     else {
         //throw new NotImplementedException();
         resultado.Hor = h1.Hor - h2.Hor;
         resultado.Min = h1.Min - h2.Min;
     }
     return resultado;
 }
Пример #13
0
 /// <summary>
 /// Operador +
 /// </summary>
 /// <param name="h1">Primer sumando</param>
 /// <param name="h2">Segundo sumando</param>
 /// <returns>Hora resultado de la suma</returns>
 public static Hora operator +(Hora h1, Hora h2)
 {
     Hora h = new Hora();
     h.Hor = h1.hora + h2.hora;
     h.Min = h1.min + h2.min;
     return h;
 }