/// <summary> /// Comprueba que el rango actual no se superponga con el rángo pasado /// como parámetro. No tiene en cuenta los segundos. /// </summary> /// <param name="otroRango">rango a comparar con el actual</param> /// <returns>true si el rango se superpone, caso contrario false</returns> public bool rangoSuperpuesto(RangoHorario otroRango) { if (this.fin.Hora < otroRango.inicio.Hora) { return(false); } else if (this.fin.Hora == otroRango.inicio.Hora) { if (this.fin.Minuto < otroRango.inicio.Minuto) { return(false); } } if (this.inicio.Hora < otroRango.inicio.Hora) { return(true); } else if (this.inicio.Hora == otroRango.inicio.Hora) { if (this.inicio.Minuto < otroRango.inicio.Minuto) { return(true); } } if (otroRango.fin.Hora < this.inicio.Hora) { return(false); } else if (otroRango.fin.Hora == this.inicio.Hora) { if (otroRango.fin.Minuto < this.inicio.Minuto) { return(false); } } return(true); }
/// <summary> /// Comprueba que el rango actual no se superponga con el rángo pasado /// como parámetro. No tiene en cuenta los segundos. /// </summary> /// <param name="otroRango">rango a comparar con el actual</param> /// <returns>true si el rango se superpone, caso contrario false</returns> public bool rangoSuperpuesto(RangoHorario otroRango) { if (this.fin.Hora < otroRango.inicio.Hora) return false; else if (this.fin.Hora == otroRango.inicio.Hora) if (this.fin.Minuto < otroRango.inicio.Minuto) return false; if (this.inicio.Hora < otroRango.inicio.Hora) return true; else if (this.inicio.Hora == otroRango.inicio.Hora) if (this.inicio.Minuto < otroRango.inicio.Minuto) return true; if (otroRango.fin.Hora < this.inicio.Hora) return false; else if (otroRango.fin.Hora == this.inicio.Hora) if (otroRango.fin.Minuto < this.inicio.Minuto) return false; return true; }
/// <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); } }