/// <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); } } }
/// <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> /// Valida las entradas de la interfaz gráfica /// </summary> private string ValidarEntradas() { bool diaMarcado = false; if (lunes.Checked) { diaMarcado = true; } if (martes.Checked) { diaMarcado = true; } if (miercoles.Checked) { diaMarcado = true; } if (jueves.Checked) { diaMarcado = true; } if (viernes.Checked) { diaMarcado = true; } if (sabado.Checked) { diaMarcado = true; } if (domingo.Checked) { diaMarcado = true; } // Si selecciono un dia, entonces se procede a validar horas bool formatoHoraCorrecto = true; string confirmacion = "Bien"; DateTime horaInicio = DateTime.Now; DateTime horaFin = DateTime.Now; if (diaMarcado) { try { horaInicio = DateTime.Parse(clockpicker.Value); horaFin = DateTime.Parse(clockpicker2.Value); } catch (Exception) { formatoHoraCorrecto = false; } if (formatoHoraCorrecto) { if (horaFin < horaInicio) { confirmacion = "La hora de inicio debe comenzar antes que la hora de fin"; } else { bool vacio = false; if (duracion == null) { vacio = true; } else { if (duracion.Value == "") { vacio = true; } } if (!vacio) { double minutos = horaFin.Subtract(horaInicio).TotalMinutes; if (minutos < (int.Parse(duracion.Value))) { confirmacion = "La duración de la cita no se ajusta al intervalo de horas laborales"; } } else { ManejadorAgenda manejador = new ManejadorAgenda(); string codigoMedico = Session["codigoMedico"].ToString(); string obtenida = manejador.ObtenerDuracionCita(codigoMedico); if (obtenida.Contains("error")) { confirmacion = "Ocurrió un error al intentar obtener la duración de las citas"; } else { int min = 0; bool existeDuracion = true; try { min = int.Parse(obtenida); } catch (Exception) { existeDuracion = false; } if (!existeDuracion) { confirmacion = "Se requiere establecer el tiempo de duración para las citas"; } } } } } else { confirmacion = "El formato de hora no es correcto"; } } else { confirmacion = "Al menos un día debe ser seleccionado"; } return(confirmacion); }