public StatusCodeResult Delete(int id) { try { var reservation = _unitOfWork.ReservationRepository.Get(id); if (reservation == null) { return(new StatusCodeResult(StatusCodes.Status404NotFound)); } var validator = new SchedulerEventValidation(_unitOfWork); // cannot delete other reservations, except the ones with ownership if (!validator.IsOwnedByUser(_userManager.GetUserId(User), reservation.UserId)) { return(new StatusCodeResult(StatusCodes.Status403Forbidden)); } _unitOfWork.ReservationRepository.Delete(reservation); _unitOfWork.Save(); return(new StatusCodeResult(StatusCodes.Status200OK)); } catch (Exception ex) { _logger.LogError(ex.Message, ex); return(new StatusCodeResult(StatusCodes.Status500InternalServerError)); } }
public void ValidateModel_ModelIsNull_ReturnFalse() { // Arrange var uow = new Mock <IUnitOfWork>(); var schedulerEventValidation = new SchedulerEventValidation(uow.Object); SchedulerEventModel model = null; // Act var result = schedulerEventValidation.IsValidSchedulerEventModel(model); // Assert Assert.IsFalse(result); }
public void ValidateModel_NoOverlappingWithOtherReservations_ReturnTrue() { // Arrange var model = CreateSchedulerEventModel(); model.StartDate = "4/9/2018 16:00"; model.EndDate = "4/9/2018 17:00"; var modelStartDate = DateTime.Parse(model.StartDate); var modelEndDate = DateTime.Parse(model.EndDate); var reservation1 = new Reservation { RoomId = 1, Start = DateTime.Parse("4/9/2018 12:00"), End = DateTime.Parse("4/9/2018 14:00") }; var reservation2 = new Reservation { RoomId = 1, Start = DateTime.Parse("4/9/2018 15:00"), End = DateTime.Parse("4/9/2018 16:00") }; var listOfReservations = new List <Reservation> { reservation1, reservation2 }; var reservationRepository = new Mock <IRepository <Reservation> >(); reservationRepository .Setup(repo => repo.GetAll()).Returns(listOfReservations.AsQueryable()); var uow = new Mock <IUnitOfWork>(); uow.Setup(x => x.ReservationRepository).Returns(reservationRepository.Object); var schedulerEventValidation = new SchedulerEventValidation(uow.Object); // Act var result = schedulerEventValidation.IsValidSchedulerEventModel(model); // Assert Assert.IsTrue(result); }
public void ValidateModel_StartEndDateAreNull_ReturnFalse() { // Arrange var uow = new Mock <IUnitOfWork>(); var schedulerEventValidation = new SchedulerEventValidation(uow.Object); var model = CreateSchedulerEventModel(); model.StartDate = null; model.EndDate = null; // Act var result = schedulerEventValidation.IsValidSchedulerEventModel(model); // Assert Assert.IsFalse(result); }
public async Task <StatusCodeResult> Update([FromBody] SchedulerEventModel model) { try { var validator = new SchedulerEventValidation(_unitOfWork); if (!validator.IsValidSchedulerEventModel(model)) { return(new StatusCodeResult(StatusCodes.Status403Forbidden)); } var reservation = _unitOfWork.ReservationRepository.GetAll().Include(x => x.Room).FirstOrDefault(x => x.Id == model.Id); if (reservation == null) { return(new StatusCodeResult(StatusCodes.Status404NotFound)); } // cannot update other reservations, except the ones with ownership if (!validator.IsOwnedByUser(_userManager.GetUserId(User), reservation.UserId)) { return(new StatusCodeResult(StatusCodes.Status403Forbidden)); } reservation.ModifiedDate = DateTime.Now; reservation.IPAddress = Request.HttpContext.Connection.RemoteIpAddress.ToString(); reservation.Start = Convert.ToDateTime(model.StartDate); reservation.End = Convert.ToDateTime(model.EndDate); reservation.Title = model.Title; reservation.Description = model.Description; reservation.Status = ReservationStatusEnum.Modified.ToString(); reservation.RoomId = model.RoomId; _unitOfWork.ReservationRepository.Update(reservation); _unitOfWork.Save(); var message = $"Reservation titled: {reservation.Title} {Environment.NewLine} from {reservation.Start.ToString("dd/MMM/yy HH:mm")} to {reservation.End.ToString("dd/MMM/yy HH:mm")} {Environment.NewLine} on room {reservation.Room.Name} has changed !"; await _hubContext.Clients.All.SendAsync("ReservationChanged", message); return(new StatusCodeResult(StatusCodes.Status200OK)); } catch (Exception ex) { _logger.LogError(ex.Message, ex); return(new StatusCodeResult(StatusCodes.Status500InternalServerError)); } }
public void ValidateModel_StartDateHigherThanEndDate_ReturnFalse() { // Arrange var reservationRepository = new Mock <IRepository <Reservation> >(); var uow = new Mock <IUnitOfWork>(); uow.Setup(x => x.ReservationRepository).Returns(reservationRepository.Object); var schedulerEventValidation = new SchedulerEventValidation(uow.Object); var model = CreateSchedulerEventModel(); model.StartDate = "4/9/2018 17:00"; model.EndDate = "3/9/2018 16:00"; // Act var result = schedulerEventValidation.IsValidSchedulerEventModel(model); // Assert Assert.IsFalse(result); }
public void ValidateModel_StartEndDatesCannotBeParsed_ThrowFormatException() { // Arrange var uow = new Mock <IUnitOfWork>(); var schedulerEventValidation = new SchedulerEventValidation(uow.Object); var model = CreateSchedulerEventModel(); model.StartDate = "33/22/2001212 160:212:321"; model.EndDate = "33/22/2001212 160:212:322"; // Act var action = new Action(() => { schedulerEventValidation.IsValidSchedulerEventModel(model); }); // Assert Assert.ThrowsException <FormatException>(action); }
public StatusCodeResult Insert([FromBody] SchedulerEventModel model) { try { var validator = new SchedulerEventValidation(_unitOfWork); if (!validator.IsValidSchedulerEventModel(model)) { return(new StatusCodeResult(StatusCodes.Status500InternalServerError)); } var ipAddress = Request.HttpContext.Connection.RemoteIpAddress.ToString(); var user = _userManager.GetUserAsync(HttpContext.User); if (user != null && user.Result != null) { var reservation = new Reservation { Description = model.Description, Start = Convert.ToDateTime(model.StartDate), End = Convert.ToDateTime(model.EndDate), RoomId = model.RoomId, Status = model.Status, Title = model.Title, AddedDate = DateTime.Now, ModifiedDate = DateTime.Now, IPAddress = ipAddress, UserId = user.Result.Id }; _unitOfWork.ReservationRepository.Insert(reservation); _unitOfWork.Save(); } return(new StatusCodeResult(StatusCodes.Status201Created)); } catch (Exception ex) { _logger.LogError(ex.Message, ex); return(new StatusCodeResult(StatusCodes.Status500InternalServerError)); } }