//
        // GET: /Api/DisponibilidadeSala/
        public string Get(int? CodigoSalaReuniao, DateTime? DataHoraInicial, DateTime? DataHoraFinal)
        {

            if (CodigoSalaReuniao == null ||
                DataHoraInicial == null ||
                DataHoraFinal == null)
            {
                HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.BadRequest);
                message.Content = new StringContent("Um ou mais parâmetros de entrada estão inválidos.");
                throw new HttpResponseException(message);
            }

            ReservaSala reserva = new ReservaSala();
            reserva.CodigoSalaReuniao = CodigoSalaReuniao.Value;
            reserva.DataHoraInicial = DataHoraInicial.Value.ToUniversalTime();
            reserva.DataHoraFinal = DataHoraFinal.Value.ToUniversalTime();

            if (new ReservarSalaBS().ValidarReservaExistente(reserva))
            {
                HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.Conflict);
                message.Content = new StringContent("A sala não está disponível na data solicitada.");
                throw new HttpResponseException(message);
            }

            return "OK";
        }
예제 #2
0
        public bool ValidarReservaExistente(ReservaSala novaReserva) 
        {
            //Se for 8:00 reservar até as 7:59
            if (novaReserva.DataHoraFinal.Minute == 0 ||
                novaReserva.DataHoraFinal.Minute == 30)
                novaReserva.DataHoraFinal = novaReserva.DataHoraFinal.AddSeconds(-1);

            using (SYMContext db = new SYMContext())
            {
                foreach (ReservaSala reservaBase in db.ReservaSala.Where(p => p.CodigoSalaReuniao == novaReserva.CodigoSalaReuniao).ToList())
                {
                    if (novaReserva.DataHoraInicial >= reservaBase.DataHoraInicial && novaReserva.DataHoraInicial <= reservaBase.DataHoraFinal) 
                    {
                        return true;
                    }

                    if (novaReserva.DataHoraFinal >= reservaBase.DataHoraInicial && novaReserva.DataHoraInicial <= reservaBase.DataHoraFinal)
                    {
                        return true;
                    }
                }
            }

            return false;
        }
예제 #3
0
        public void IncluirReserva(ReservaSala novaReserva)
        {
            novaReserva.CodigoUsuario = 1;
            novaReserva.CodigoStatusReservaSala = 1;
            novaReserva.CodigoUsuarioAlteracao = 1;
            novaReserva.DataAlteracao = DateTime.UtcNow;

            //Iniciar sem ocupação
            novaReserva.DataInicioOcupacao = null;
            novaReserva.DataLimiteOcupacao = novaReserva.DataHoraInicial.AddMinutes(15);

            //Se for 8:00 reservar até as 7:59
            if (novaReserva.DataHoraFinal.Minute == 0 ||
                novaReserva.DataHoraFinal.Minute == 30)
                novaReserva.DataHoraFinal = novaReserva.DataHoraFinal.AddSeconds(-1);

            using (SYMContext db = new SYMContext())
            {
                db.ReservaSala.Add(novaReserva);

                db.SaveChanges();
            }
        
        }
 public ReservaSala Get(int CodigoReserva)
 {
     ReservaSala dados = new ReservaSala();
     dados = new ReservarSalaBS().ConsultarReserva(CodigoReserva);
     return dados;
 }
        public void Post(ReservaSala postData)
        {
            postData.DataHoraInicial = postData.DataHoraInicial.ToUniversalTime();
            postData.DataHoraFinal = postData.DataHoraFinal.ToUniversalTime();

            if (postData.CodigoSalaReuniao == default(int) ||
                postData.DescricaoAgendamento == default(string) ||
                postData.DataHoraInicial == default(DateTime) ||
                postData.DataHoraFinal == default(DateTime))
            {
                HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.BadRequest);
                message.Content = new StringContent("Um ou mais parâmetros de entrada estão inválidos.");
                throw new HttpResponseException(message);
            }



            if (new ReservarSalaBS().ValidarReservaExistente(postData))
            {
                HttpResponseMessage message = new HttpResponseMessage(HttpStatusCode.Conflict);
                message.Content = new StringContent("A sala não está disponível na data solicitada.");
                throw new HttpResponseException(message);
            }

            new ReservarSalaBS().IncluirReserva(postData);
        }
예제 #6
0
        public void OcuparReserva(ReservaSala param) 
        {
            ReservaSala reservaBase = null;

            using (SYMContext db = new SYMContext())
            {
                reservaBase = db.ReservaSala.Where(p => p.CodigoReserva == param.CodigoReserva).FirstOrDefault();
                reservaBase.DataInicioOcupacao = DateTime.UtcNow;

                db.ReservaSala.Add(reservaBase);

                db.SaveChanges();
            }
        }