public Turno getSiguienteHorarioDisponible(Turno turno, Profesional profesional) { GestorTurno gTurnos = new GestorTurno(); Turno turnoNuevo = null; DateTime fecha = turno.Fecha.AddDays(1); bool encontrado = false; foreach (Matricula matricula in profesional.Matriculas) { foreach (Horario horario in matricula.Horarios) { while (fecha.CompareTo(horario.Desde) > 0 && fecha.CompareTo(horario.Hasta) < 0 && !encontrado) { foreach (HorarioDetalle horarioDet in horario.Detalle) { if (fecha.DayOfWeek.ToString() == horarioDet.Dia.DescIngles) { DateTime hora = horarioDet.HoraDesde; int minutoDiferencia = (int)horarioDet.HoraHasta.Subtract(horarioDet.HoraDesde).TotalMinutes; int cantTurnos = minutoDiferencia / horarioDet.Frecuencia; for (int i = 0; i < cantTurnos; i++) { turnoNuevo = gTurnos.buscar(horarioDet, fecha, hora); if (turnoNuevo == null) { turnoNuevo = new Turno(); turnoNuevo.Fecha = fecha; turnoNuevo.Hora = hora; turnoNuevo.EntidadTurno = turno.EntidadTurno; turnoNuevo.EstadoTurno = turno.EstadoTurno; turnoNuevo.HorarioDet = horarioDet; turnoNuevo.Paciente = turno.Paciente; turnoNuevo.TipoTurno = turno.TipoTurno; turnoNuevo.Observacion = turno.Observacion; gTurnos.guardar(turnoNuevo); turno.EstadoTurno = gTurnos.getEstadoXCodigo(EstadoTurno.CANCELADO); gTurnos.guardar(turno); encontrado = true; } if (encontrado) { break; } hora = hora.AddMinutes(horarioDet.Frecuencia); } if (encontrado) { break; } } } if (encontrado) { break; } fecha = fecha.AddDays(1); } if (encontrado) { break; } } if (encontrado) { break; } } return turnoNuevo; }
protected void Page_Load(object sender, EventArgs e) { ConexionBD.esSICWeb = true; seleccionarTab("liTurnero"); gestorTurno = new GestorTurno(); if (!Page.IsPostBack) { estaLogueado = (Session["LoginCorrecto"] == "SI"); if (!estaLogueado) { Response.Redirect("Login.aspx"); } else { GestorPaciente gPaciente = new GestorPaciente(); GestorEspecialidad gEspecialidad = new GestorEspecialidad(); GestorTurno gTurno = new GestorTurno(); GestorGenerico gg = new GestorGenerico(); Paciente paciente = gPaciente.buscar(33428285, 1); if (paciente != null) { Session["Paciente"] = paciente; txtNombreYApellido.Value = paciente.Nombres + " " + paciente.Apellidos; txtDocumento.Value = paciente.NumeroDocumento.ToString(); //txtObraSocial Afiliacion afiliacionActual = null; if (paciente.Afiliaciones.Count > 0) { foreach (Afiliacion afiliacion in paciente.Afiliaciones) { if (afiliacion.Baja.CompareTo(new DateTime(2000, 1, 1)) < 0) { afiliacionActual = afiliacion; } } } if (afiliacionActual != null) { txtObraSocial.Value = afiliacionActual.Plan.ObraSocial.Descripcion; txtPlan.Value = afiliacionActual.Plan.Descripcion; } DataTable table = new DataTable(); table.Columns.Add("posicion"); table.Columns.Add("fecha"); table.Columns.Add("hora"); table.Columns.Add("medico"); table.Columns.Add("especialidad"); turnos = gTurno.buscar(paciente, false); if (turnos != null) { for (int i = 0; i < turnos.Count; i++) { Turno turno = turnos[i]; if (turno.EstadoTurno.Codigo != "CAN") { Especialidad especialidad = gEspecialidad.buscarEspecialidadXHorarioDet(turno.HorarioDet); table.Rows.Add(i.ToString(), turno.Fecha.ToShortDateString(), turno.Hora.TimeOfDay.ToString(), turno.EntidadTurno.Profesional.Apellidos + " " + turno.EntidadTurno.Profesional.Nombres, especialidad.Descripcion); } } } Session["turnos"] = turnos; dgvTurnosVigentes.Columns[0].Visible = true; dgvTurnosVigentes.DataSource = table; dgvTurnosVigentes.DataBind(); dgvTurnosVigentes.Columns[0].Visible = false; DataTable tableAnteriores = new DataTable(); tableAnteriores.Columns.Add("fecha"); tableAnteriores.Columns.Add("hora"); tableAnteriores.Columns.Add("medico"); tableAnteriores.Columns.Add("especialidad"); tableAnteriores.Columns.Add("asistio"); IList<Turno> turnosHistorico = gTurno.buscar(paciente, true); if (turnosHistorico != null) { foreach (Turno turno in turnosHistorico) { Especialidad especialidad = gEspecialidad.buscarEspecialidadXHorarioDet(turno.HorarioDet); string asistio = ""; if (turno.EstadoTurno.Codigo == "CAN") { asistio = "Canceló"; } tableAnteriores.Rows.Add(turno.Fecha.ToShortDateString(), turno.Hora.TimeOfDay.ToString(), turno.EntidadTurno.Profesional.Apellidos + " " + turno.EntidadTurno.Profesional.Nombres, especialidad.Descripcion, asistio); } } dgvTurnosAnteriores.DataSource = tableAnteriores; dgvTurnosAnteriores.DataBind(); } } } }