/// <summary> /// Obtiene el horario del medico y las citas que estan agendadas para una fecha en particular /// </summary> /// <param name="fecha">Fecha</param> /// <param name="presionoBoton">Presiono boton</param> private void MostrarAgenda(DateTime fecha, string presionoBoton) { try { diaSeleccionado = fecha; string codigoMedico = Session["codigoMedico"].ToString(); listaCitas.Clear(); string fechaSeleccionada = diaSeleccionado.ToShortDateString(); ManejadorCita manejadorCita = new ManejadorCita(); string confirmacion = manejadorCita.CargarCitas(listaCitas, codigoMedico, fechaSeleccionada); // Si no hubo problema al cargar las citas se procede a cargar la disponibilidad if (!confirmacion.Contains("error")) { // Se obtiene la agenda de disponibilidad del medico para el dia seleccionado ManejadorAgenda manejadorAgenda = new ManejadorAgenda(); string nombreDia = diaSeleccionado.ToString("dddd", new CultureInfo("es-ES")).ToUpperInvariant(); string nombreMes = diaSeleccionado.ToString("MMMM", new CultureInfo("es-ES")).ToUpperInvariant(); int numeroDia = diaSeleccionado.Day; nombreDia = nombreDia.Substring(0, 1).ToUpper() + nombreDia.Substring(1).ToLower(); nombreMes = nombreMes.Substring(0, 1).ToUpper() + nombreMes.Substring(1).ToLower(); BLAgendaEstandar blDia = new BLAgendaEstandar(); blDia.CodigoMedico = codigoMedico; blDia.Dia = nombreDia; confirmacion = manejadorAgenda.CargarDisponibilidad(blDia); if (!confirmacion.Contains("error")) { // Se crea una lista de items a mostrar en el grid List <ListaItem> agenda = new List <ListaItem>(); // Si la lista de citas y de disponibilidad esta vacia if ((listaCitas.Count == 0) && (blDia.HoraInicio == null)) { confirmacion = "El día " + nombreDia + " " + numeroDia + " de " + nombreMes + " no hay eventos"; } else { // Si no hay disponibilidad pero si hay citas pedientes if ((listaCitas.Count > 0) && (blDia.HoraInicio == null)) { confirmacion = "El día " + nombreDia + " " + numeroDia + " de " + nombreMes + " tiene citas pendientes"; foreach (BLCita cita in listaCitas) { agenda.Add(new ListaItem(cita.Hora, "Ocupado")); } } string segundaConfirmacion = manejadorAgenda.ObtenerDuracionCita(codigoMedico); bool duracionCapturada = true; int duracionCita = 0; try { duracionCita = int.Parse(segundaConfirmacion); } catch (Exception) { duracionCapturada = false; } if ((!segundaConfirmacion.Contains("error")) && (duracionCapturada)) { ////////////////////////////////////////////////// DateTime horaInicio = DateTime.Now; DateTime horaFin = DateTime.Now; DateTime temporal = DateTime.Now; if (blDia.HoraInicio != null) { horaInicio = DateTime.Parse(blDia.HoraInicio); horaFin = DateTime.Parse(blDia.HoraFin); temporal = horaInicio; } string t = ""; string estado = ""; // Si la lista de citas esta vacia pero hay disponibilidad if ((listaCitas.Count == 0) && (blDia.HoraInicio != null)) { confirmacion = "El día " + nombreDia + " " + numeroDia + " de " + nombreMes + " no tiene citas pendientes"; while (temporal < horaFin) { t = ConvertirFormato(temporal); temporal = temporal.AddMinutes(duracionCita); agenda.Add(new ListaItem(t, "Disponible")); } } // Si hay disponibilidad y citas if ((listaCitas.Count > 0) && (blDia.HoraInicio != null)) { confirmacion = "El día " + nombreDia + " " + numeroDia + " de " + nombreMes + " tiene citas pendientes"; // Primero se incluye la disponibilidad while (temporal < horaFin) { t = ConvertirFormato(temporal); temporal = temporal.AddMinutes(duracionCita); agenda.Add(new ListaItem(t, "Disponible")); } // Luego se incluyen las citas bool existe = false; foreach (BLCita cita in listaCitas) { foreach (ListaItem elemento in agenda) { if (elemento.Hora.Equals(cita.Hora)) { elemento.Estado = "Ocupado"; existe = true; break; } else { existe = false; } } if (existe == false) { agenda.Add(new ListaItem(cita.Hora, "Ocupado")); } } // Se ordena la lista agenda.Sort((x, y) => string.Compare(x.Hora, y.Hora)); } } else { confirmacion = "Ocurrió un error al cargar la duración de las citas o esta no se ha establecido"; } ///////////////////////////////////////////// } vistaAgenda.DataSource = agenda; vistaAgenda.DataBind(); // vistaAgenda.HeaderRow.TableSection = TableRowSection.TableHeader; } } if (!presionoBoton.Equals("")) { confirmacion = presionoBoton; } MostrarMensaje(confirmacion); } catch (Exception ex) { Elog.save(this, ex); } }
/// <summary> /// Cargar la lista de horas disponibles para el medico /// </summary> private void CargarHoras(string codigoMedico) { hora.Items.Clear(); string fechaSeleccionada = fecha.SelectedValue; DateTime temporal = DateTime.Parse(fechaSeleccionada); string nombreDia = temporal.ToString("dddd", new CultureInfo("es-ES")).ToUpperInvariant(); nombreDia = nombreDia.Substring(0, 1).ToUpper() + nombreDia.Substring(1).ToLower(); BLAgendaEstandar dia = ObtenerDia(nombreDia); if (dia != null) { DateTime horaInicio = DateTime.Parse(dia.HoraInicio); DateTime horaFin = DateTime.Parse(dia.HoraFin); DateTime i = horaInicio; ManejadorAgenda manejadorAgenda = new ManejadorAgenda(); string confirmacion = manejadorAgenda.ObtenerDuracionCita(codigoMedico); bool duracionCapturada = true; int duracionCita = 0; try { duracionCita = int.Parse(confirmacion); } catch (Exception) { duracionCapturada = false; } if ((!confirmacion.Contains("error")) && (duracionCapturada)) { string t = ""; List <ListaHoras> listaHoras = new List <ListaHoras>(); while (i < horaFin) { t = ConvertirFormato(i); i = i.AddMinutes(duracionCita); listaHoras.Add(new ListaHoras(t)); } ManejadorCita manejadorCita = new ManejadorCita(); List <BLCita> horasCitas = new List <BLCita>(); confirmacion = manejadorCita.CargarHorasCita(horasCitas, codigoMedico, fechaSeleccionada); if (!confirmacion.Contains("error")) { foreach (BLCita h in horasCitas) { for (int j = 0; j < listaHoras.Count; j++) { if (listaHoras[j].Hora.Equals(h.Hora)) { listaHoras.RemoveAt(j); } } } foreach (ListaHoras elemento in listaHoras) { hora.Items.Add(new ListItem(elemento.Hora)); } string disponible = "Seleccionar"; if (listaHoras.Count == 0) { disponible = "No disponible"; } hora.Items.Insert(0, new ListItem(disponible)); hora.SelectedIndex = 0; hora.Items[0].Attributes.Add("disabled", "disabled"); } else { MostrarMensaje(confirmacion); } } else { MostrarMensaje(confirmacion); } } }