Esempio n. 1
0
        public HttpResponseMessage LiberarAgenda(LiberarAgendaViewModel obj)
        {
            try
            {
                obj.IdClinica = base.GetUsuarioLogado().IdClinica;
                obj.Usuario   = base.GetUsuarioLogado();
                _serviceAgenda.LiberarAgenda(obj);

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (Exception ex)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }
        }
Esempio n. 2
0
        public void LiberarAgenda(LiberarAgendaViewModel liberaragenda)
        {
            TimeSpan ts = (liberaragenda.DataTermino - liberaragenda.DataInicio);

            if (ts.Days > 15)
            {
                throw new Exception(" Somente permitido informar períodos anteriores ou igual a 15 dias ");
            }

            if (ts.Days < 0)
            {
                throw new Exception(" Período inválido ");
            }

            // monta list dia da semana
            var intList = new List <int>();

            if (liberaragenda.DiaSemana == null)
            {
                throw new Exception(" Nenhum dia da semana selecionado ");
            }

            #region [Dia Semana]
            if (liberaragenda.DiaSemana.Domingo)
            {
                intList.Add(0);
            }
            if (liberaragenda.DiaSemana.Segunda)
            {
                intList.Add(1);
            }
            if (liberaragenda.DiaSemana.Terca)
            {
                intList.Add(2);
            }
            if (liberaragenda.DiaSemana.Quarta)
            {
                intList.Add(3);
            }
            if (liberaragenda.DiaSemana.Quinta)
            {
                intList.Add(4);
            }
            if (liberaragenda.DiaSemana.Sexta)
            {
                intList.Add(5);
            }
            if (liberaragenda.DiaSemana.Sabado)
            {
                intList.Add(6);
            }
            #endregion

            // deleta agenda Aguardando
            #region [ LIBERAR AGENDA ]
            if (liberaragenda.PossuiIntervalo)
            {
                var HoraInicio  = liberaragenda.HoraInicio.Split(':');
                var HoraTermino = liberaragenda.HoraTermino.Split(':');

                DateTime TempoInicio  = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, Convert.ToInt32(HoraInicio[0]), Convert.ToInt32(HoraInicio[1]), 00);
                DateTime TempoTermino = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, Convert.ToInt32(HoraTermino[0]), Convert.ToInt32(HoraTermino[1]), 00);

                double intervaloMinutos = liberaragenda.IntervaloMinutos;

                List <DateTime> arrHorario = new List <DateTime>();
                while (TempoInicio <= TempoTermino)
                {
                    arrHorario.Add(TempoInicio);
                    TempoInicio = TempoInicio.AddHours(0).AddMinutes(intervaloMinutos).AddSeconds(0);
                }

                var      IntInicio        = liberaragenda.IntervaloInicio.Split(':');
                var      Inttermino       = liberaragenda.IntervaloTermino.Split(':');
                DateTime IntervaloInicio  = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, Convert.ToInt32(IntInicio[0]), Convert.ToInt32(IntInicio[1]), 00);
                DateTime IntervaloTermino = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, Convert.ToInt32(Inttermino[0]), Convert.ToInt32(Inttermino[1]), 00);

                List <DateTime> arrIntervalo = new List <DateTime>();
                while (IntervaloInicio < IntervaloTermino)
                {
                    arrIntervalo.Add(IntervaloInicio);
                    IntervaloInicio = IntervaloInicio.AddHours(0).AddMinutes(intervaloMinutos).AddSeconds(0);
                }
                var listaAgendaAguardando = arrHorario.Where(x => !arrIntervalo.Contains(x)).ToList();



                while (liberaragenda.DataInicio <= liberaragenda.DataTermino)
                {
                    int dia = (int)liberaragenda.DataInicio.DayOfWeek;
                    if (intList.Contains(dia))
                    {
                        foreach (var item in listaAgendaAguardando)
                        {
                            // .ToString("yyyy-MM-dd")
                            //.ToString(),
                            _repository.LiberarAgenda(liberaragenda.DataInicio, item.TimeOfDay, "", liberaragenda.IdProfissional, liberaragenda.Usuario.IdUsuario, liberaragenda.IdClinica);
                        }
                    }
                    liberaragenda.DataInicio = liberaragenda.DataInicio.AddDays(1);
                }
            }
            else
            {
                // cadastra uma agenda sem inervalo

                var HoraInicio  = liberaragenda.HoraInicio.Split(':');
                var HoraTermino = liberaragenda.HoraTermino.Split(':');

                DateTime TempoInicio  = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, Convert.ToInt32(HoraInicio[0]), Convert.ToInt32(HoraInicio[1]), 00);
                DateTime TempoTermino = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, Convert.ToInt32(HoraTermino[0]), Convert.ToInt32(HoraTermino[1]), 00);

                double intervaloMinutos = liberaragenda.IntervaloMinutos;

                List <DateTime> arrHorario = new List <DateTime>();
                while (TempoInicio <= TempoTermino)
                {
                    arrHorario.Add(TempoInicio);
                    TempoInicio = TempoInicio.AddHours(0).AddMinutes(intervaloMinutos).AddSeconds(0);
                }

                var listaAgendaAguardando = arrHorario.ToList();

                while (liberaragenda.DataInicio <= liberaragenda.DataTermino)
                {
                    int dia = (int)liberaragenda.DataInicio.DayOfWeek;
                    if (intList.Contains(dia))
                    {
                        foreach (var item in listaAgendaAguardando)
                        {
                            //.ToString("yyyy-MM-dd") .ToString()
                            _repository.LiberarAgenda(liberaragenda.DataInicio, item.TimeOfDay, "", liberaragenda.IdProfissional, liberaragenda.Usuario.IdUsuario, liberaragenda.IdClinica);
                        }
                    }
                    liberaragenda.DataInicio = liberaragenda.DataInicio.AddDays(1);
                }
            }
            #endregion
        }