// // 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"; }
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; }
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); }
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(); } }