コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        /// <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);
                }
            }
        }