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; }
/// <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; }
/// <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; }
/// <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; }
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; } }
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; } }
/// <summary> /// Constructor de copia /// </summary> /// <param name="h"> Hora que se desea copiar</param> public Hora(Hora h) { hora = h.hora; min = h.min; }
/// <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); }
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); }
/// <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; }
/// <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; }
/// <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; }