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)); } }
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 }