public void CalcularHorarios() { actualizarAgenda(); cb_hora.DataSource = null; Agenda_Diaria dia = null; if (cb_anio.SelectedItem != null && cb_mes.SelectedItem != null && cb_dia_mes.SelectedItem != null && agenda != null) { dia = agenda.Find(elem => elem.dia == (((DateTime)cb_dia_mes.SelectedItem).DayOfWeek)); } if (dia != null) { horarios = dia.generarHorarios(); //Genera todos los horarios del dia if (((DateTime)cb_dia_mes.SelectedItem).Date == ClinicaFrba.Utils.Fechas.getCurrentDateTime().Date.Date) //Son turnos para hoy, filtrar horarios que pasaron { horarios.RemoveAll(horario => (horario < ClinicaFrba.Utils.Fechas.getCurrentDateTime().TimeOfDay)); } } List <Turno> turnos = Turno.turnosFuturosPorProfesionalYEspecialidad(profesionalElegido.matricula, especialidadElegida.id_especialidad); List <TimeSpan> horariosOcupados = turnos.FindAll(t => t.activo && t.fecha_estipulada.Date == ((DateTime)cb_dia_mes.SelectedItem).Date).Select(t => t.fecha_estipulada.TimeOfDay).ToList <TimeSpan>(); // tantes.Text = horarios.Count().ToString(); //tacancelar.Text = horariosOcupados.Count().ToString(); if (horarios != null) { horarios.RemoveAll(horario => horariosOcupados.Contains(horario)); } //tdespues.Text = horarios.Count().ToString(); cb_hora.DataSource = horarios; }
private void btn_agregar_Click(object sender, EventArgs e) { Agenda_Diaria nueva = new Agenda_Diaria(); Errores error = new Errores(); if (cb_dia.SelectedValue == null) { error.agregarError("Debe seleccionar un dia."); } if (l_especialidad.SelectedItem == null) { error.agregarError("La especialidad no puede ser nula."); } if (!error.huboError()) { nueva = new Agenda_Diaria(((Dia)cb_dia.SelectedItem).dia, profesional.matricula, (int)l_desde_h.Value, (int)l_desde_m.Value, (int)l_hasta_h.Value, (int)l_hasta_m.Value, ((Especialidad)l_especialidad.SelectedItem).id_especialidad); if (!nueva.esValida()) { error.agregarError("La hora de fin debe ser posterior a la de inicio."); } if (agendas.Sum(elem => elem.horasDiarias()) + nueva.horasDiarias() > 48) { error.agregarError("Esta prohibido trabajar mas de 48hs semanales. Si quiere agregar mas horas debe eliminar algunas."); } if (Agenda_Diaria.seSuperponen(agendas, nueva)) { error.agregarError("No puede elegir rangos que se superpongan en el mismo dia."); } if (agendas.Any(elem => elem.dia == nueva.dia && elem.id_especialidad == nueva.id_especialidad)) { error.agregarError("No se puede trabajar dos veces con la misma especialidad en el mismo dia."); } } if (!error.huboError()) { agendas.Add(nueva); actualizarAgenda(); } else { MessageBox.Show(error.stringErrores(), "Clinica-FRBA ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void actualizarAgenda() { agenda = Agenda_Diaria.getAgendaProfesional(profesionalElegido.matricula, especialidadElegida.id_especialidad, Rango_Atencion.rangoPorDia(profesionalElegido.matricula, especialidadElegida.id_especialidad, (DateTime)cb_dia_mes.SelectedItem)); }