示例#1
0
        private List <AgendaProfesional> obtenerAgendasProfesionalEspecialidad()
        {
            List <AgendaProfesional> agendasReturn = new List <AgendaProfesional>();

            using (SqlConnection cx = Connection.getConnection())
            {
                Especialidad  especialidadSeleccionada = this.especialidades.Find(especialidad => especialidad.Descripcion.Equals(this.cmb_especialidad.SelectedItem.ToString()));
                StringBuilder query = new StringBuilder(ConfigurationManager.AppSettings["query.obtener.agendas.select"].ToString());
                query.Append(ConfigurationManager.AppSettings["query.obtener.agendas.group.by"].ToString());
                query.Append(" HAVING");
                query.Append(ConfigurationManager.AppSettings["query.obtener.agendas.having.profesional"].Replace("{0}", this.profesional.NroDoc.ToString()).ToString());
                query.Append(" AND");
                query.Append(ConfigurationManager.AppSettings["query.obtener.agendas.having.especialidad"].Replace("{8}", especialidadSeleccionada.Id.ToString()));
                Console.WriteLine("Query:");
                Console.WriteLine(query.ToString());
                SqlCommand sqlCmd = new SqlCommand(query.ToString(), cx);
                sqlCmd.CommandType = CommandType.Text;
                try
                {
                    cx.Open();
                    SqlDataReader sqlReader = sqlCmd.ExecuteReader();
                    while (sqlReader.Read())
                    {
                        AgendaProfesional agenda = new AgendaProfesional();
                        agenda.Dia          = new Dia((int)sqlReader["dia_id"], sqlReader["dia"].ToString());
                        agenda.Especialidad = especialidadSeleccionada;
                        agenda.FechaDesde   = DateTime.Parse(sqlReader["fechaDesde"].ToString()).Date;
                        agenda.FechaHasta   = DateTime.Parse(sqlReader["fechaHasta"].ToString()).Date;
                        agenda.hhDesde      = TimeSpan.Parse(sqlReader["desde"].ToString());
                        agenda.hhHasta      = TimeSpan.Parse(sqlReader["hasta"].ToString());
                        agendasReturn.Add(agenda);
                    }
                    sqlReader.Close();
                    sqlReader.Dispose();
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Se ha producido un error al buscar las agendas para el profesional y la especialidad seleccionados");
                    Console.WriteLine(ex);
                    MessageBox.Show("Se ha producido un error al buscar las agendas para el profesional y la especialidad seleccionados", "Error al buscar especialidades", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

            return(agendasReturn);
        }
示例#2
0
        private List <DateTime> generarPosiblesTurnosAgenda(DateTime fechaMin, AgendaProfesional agenda, List <DateTime> horariosOcupados, List <DateTime> diasCancelados)
        {
            List <Turno>    turnosPosibles   = new List <Turno>();
            List <DateTime> horariosPosibles = new List <DateTime>();

            //Seteo la fecha minima
            DateTime fechaActual = fechaMin;
            TimeSpan horario;

            //Mientras esté en el rango de fechas definido por la agenda
            while (fechaActual <= agenda.FechaHasta)
            {
                horario = agenda.hhDesde;
                DateTime fechaHoraTurnoPosible = fechaActual.Add(horario);

                //Mientras el horario esté dentro del rango definido por la agenda
                while (horario < agenda.hhHasta)
                {
                    //Si el horario no está tomado por alguno de los horariosOcupados, agrego a la lista de posibles turnos
                    if (horariosOcupados.Find(horarioOcupado => horarioOcupado.Equals(fechaHoraTurnoPosible)) == DateTime.MinValue &&
                        diasCancelados.Find(diaCancelado => diaCancelado.Equals(fechaHoraTurnoPosible.Date)) == DateTime.MinValue)
                    {
                        horariosPosibles.Add(fechaHoraTurnoPosible);
                    }


                    //Incremento el horario
                    horario = horario.Add(this.incrementoHorario);
                    fechaHoraTurnoPosible = fechaHoraTurnoPosible.Add(this.incrementoHorario);
                }
                //Incremento la fecha
                fechaActual = fechaActual.AddDays(7);
            }

            return(horariosPosibles);
        }