public ActionResult Reserve(int id, EquipmentReservation equipmentReservation) { var equipment = _repositoryFactory.EquipmentRepository.GetNullableById(id); equipmentReservation.Equipment = equipment; equipmentReservation.User = GetCurrentUser(true); ModelState.Clear(); equipmentReservation.TransferValidationMessagesTo(ModelState); // check for conflicting reservations //if (_repositoryFactory.EquipmentReservationRepository.Queryable.Any(a => a.Start <= equipmentReservation.Start && equipmentReservation.End <= a.End)) if (_repositoryFactory.EquipmentReservationRepository.Queryable.Any(a => (a.Start <= equipmentReservation.End && a.End >= equipmentReservation.Start && !a.Cancelled))) { ModelState.AddModelError("EquipmentReservation.Start", "There is a conflict with the requested times. Please select a new time and try again."); } if (ModelState.IsValid) { _repositoryFactory.EquipmentReservationRepository.EnsurePersistent(equipmentReservation); Message = "Equipment Reservation has been made."; return(RedirectToAction("Index", "Authorized")); } var viewModel = EquipmentViewModel.Create(_repositoryFactory, equipment, equipmentReservation); return(View(viewModel)); }
public static EquipmentViewModel Create(IRepositoryFactory repositoryFactory, Equipment equipment = null, EquipmentReservation equipmentReservation = null) { var viewModel = new EquipmentViewModel() { Equipment = equipment, EquipmentReservation = equipmentReservation ?? new EquipmentReservation() }; if (equipment == null) { viewModel.Equipments = repositoryFactory.EquipmentRepository.Queryable.Where(a => a.Operator.ToLower() == EquipmentOperators.User).OrderBy(a => a.Name).ToList(); } return viewModel; }
public static EquipmentViewModel Create(IRepositoryFactory repositoryFactory, Equipment equipment = null, EquipmentReservation equipmentReservation = null) { var viewModel = new EquipmentViewModel() { Equipment = equipment, EquipmentReservation = equipmentReservation ?? new EquipmentReservation() }; if (equipment == null) { viewModel.Equipments = repositoryFactory.EquipmentRepository.Queryable.Where(a => a.Operator.ToLower() == EquipmentOperators.User).OrderBy(a => a.Name).ToList(); } return(viewModel); }
public ActionResult Reserve(int id, EquipmentReservation equipmentReservation) { var equipment = _repositoryFactory.EquipmentRepository.GetNullableById(id); equipmentReservation.Equipment = equipment; equipmentReservation.User = GetCurrentUser(true); ModelState.Clear(); equipmentReservation.TransferValidationMessagesTo(ModelState); // check for conflicting reservations //if (_repositoryFactory.EquipmentReservationRepository.Queryable.Any(a => a.Start <= equipmentReservation.Start && equipmentReservation.End <= a.End)) if (_repositoryFactory.EquipmentReservationRepository.Queryable.Any(a => (a.Start <= equipmentReservation.End && a.End >= equipmentReservation.Start && !a.Cancelled))) { ModelState.AddModelError("EquipmentReservation.Start", "There is a conflict with the requested times. Please select a new time and try again."); } if (ModelState.IsValid) { _repositoryFactory.EquipmentReservationRepository.EnsurePersistent(equipmentReservation); Message = "Equipment Reservation has been made."; return RedirectToAction("Index", "Authorized"); } var viewModel = EquipmentViewModel.Create(_repositoryFactory, equipment, equipmentReservation); return View(viewModel); }