public Agenda traerAgendaDelProfesional(Usuario usuario)
        {
            string procedimiento = "BEMVINDO.sp_agenda_del_profesional";

            SqlParameter        pIdProfesional = new SqlParameter("@id_profesional", usuario.id);
            List <SqlParameter> parametros     = new List <SqlParameter> {
                pIdProfesional
            };

            List <Dictionary <string, object> > listaDB = db.ejecutarStoredProcedure(procedimiento, parametros);

            if (listaDB.Count == 0)
            {
                return(new Agenda(0, usuario.id, db.getDate(), db.getDate(), new List <DiaAgenda>(), TipoAgenda.Nuevo));
            }

            //creo los dias agenda
            List <DiaAgenda> listaDiasAgenda = new List <DiaAgenda>();

            DiaAgenda diaAgenda;

            foreach (Dictionary <string, object> dic in listaDB)
            {
                if (listaDiasAgenda.Exists(x => x.idDiaAgenda == Convert.ToInt64(dic["id_dia_agenda"])))
                {
                    diaAgenda = listaDiasAgenda.Find(x => x.idDiaAgenda == Convert.ToInt64(dic["id_dia_agenda"]));
                    diaAgenda.especialidades.Add((string)dic["descripcion"], Convert.ToInt64(dic["id_especialidad"]));
                }
                else
                {
                    Dictionary <string, long> nuevaEsp = new Dictionary <string, long>();
                    nuevaEsp.Add((string)dic["descripcion"], Convert.ToInt64(dic["id_especialidad"]));

                    diaAgenda = new DiaAgenda(Convert.ToInt64(dic["id_dia_agenda"]), (string)dic["dia"], nuevaEsp, (TimeSpan)dic["horario_inicial"], (TimeSpan)dic["horario_final"]);
                    listaDiasAgenda.Add(diaAgenda);
                }
            }

            TipoAgenda tipo = ((DateTime)listaDB[0]["fecha_final"] < db.getDate())? TipoAgenda.Vencido : TipoAgenda.Actual;

            return(new Agenda(Convert.ToInt64(listaDB[0]["id_agenda"]), usuario.id, (DateTime)listaDB[0]["fecha_inicial"], (DateTime)listaDB[0]["fecha_final"], listaDiasAgenda, tipo));
        }
        private IList <DiaAgenda> ObtenerCronograma()
        {
            IList <DiaAgenda> retorno = new List <DiaAgenda>(this.listCronograma.Items.Count);

            foreach (DiaSemana diaSemana in this.listCronograma.Items.Cast <DiaSemana>())
            {
                DiaAgenda diaAgenda = new DiaAgenda();

                diaAgenda.NroDiaSemana    = diaSemana.Id;
                diaAgenda.NombreDiaSemana = diaSemana.Nombre;

                diaAgenda.HoraDesde   = diaSemana.HoraDesde.Hour;
                diaAgenda.MinutoDesde = diaSemana.HoraDesde.Minute;

                diaAgenda.HoraHasta   = diaSemana.HoraHasta.Hour;
                diaAgenda.MinutoHasta = diaSemana.HoraHasta.Minute;

                retorno.Add(diaAgenda);
            }
            return(retorno);
        }
Esempio n. 3
0
        public void Post([FromBody] DiaAgenda value)
        {
            try
            {
                #region Validaçãoes
                if (value.Data == null)
                {
                    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable)
                    {
                        Content      = new StringContent("Data inválida."),
                        ReasonPhrase = "Dia inválido"
                    });
                }

                if (value.Data <= DateTime.Now.Date)
                {
                    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable)
                    {
                        Content      = new StringContent("Data inválida."),
                        ReasonPhrase = "Data inválida"
                    });
                }

                if (!Validacoes.ValidaTimeSpan24Hrs(value.HorarioAtendimentoInicio))
                {
                    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable)
                    {
                        Content      = new StringContent("Horário de atendimento de início inválido."),
                        ReasonPhrase = "Horário inválido"
                    });
                }

                if (!Validacoes.ValidaTimeSpan24Hrs(value.HorarioAtendimentoTermino))
                {
                    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable)
                    {
                        Content      = new StringContent("Horário de atendimento de término inválido."),
                        ReasonPhrase = "Horário inválido"
                    });
                }


                if (value.HorarioAtendimentoInicio > value.HorarioAtendimentoTermino)
                {
                    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable)
                    {
                        Content      = new StringContent("Intervalo de atendimento inválido."),
                        ReasonPhrase = "Intervalo inválido"
                    });
                }


                if (value.HorarioAtendimentoInicio > value.HorarioAtendimentoTermino)
                {
                    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable)
                    {
                        Content      = new StringContent("Intervalo de atendimento inválido."),
                        ReasonPhrase = "Intervalo inválido"
                    });
                }


                if (!ValidaIntervalo(0, value.IdOdontologista, value.IdClinica, value.Data, value.HorarioAtendimentoInicio, value.HorarioAtendimentoTermino))
                {
                    throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotAcceptable)
                    {
                        Content      = new StringContent("Intervalo inválido, já existe na agenda essa data."),
                        ReasonPhrase = "Intervalo inválido"
                    });
                }
                #endregion
                using (var repositorio = new DiaAgendaRepositorio(new Connection(new System.Data.SqlClient.SqlConnection())))
                {
                    repositorio.Criar(value);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }