public async Task<ActionResult> Book(ReservationViewModel model) { if (model.ActivityPackage != null && model.User != null && !string.IsNullOrEmpty(model.User.Id) && (model.ActivityPackage.Id > 0)) { var user = CurrentUser; var reservation = model.ToModel(CurrentUser); reservation.Status = Status.Pending.ToString(); ReservationContext.Save(reservation); var supplier = SupplierContext.GetById(model.ActivityPackage.SupplierId); await UserManager.SendEmailAsync(supplier.AspNetUserId, "A reservation has been made", "Please confirm this reservation made by " + CurrentUser.FirstName + " " + CurrentUser.LastName + "!"); TempData["message"] = "You have succesfully booked this activity!"; return RedirectToAction("Details", new { reservationId = reservation.Id }); } return View(model); }
public static ReservationViewModel ToViewModel(this Reservation reservation) { var user = ServiceLocator.Current.Resolve<IApplicationDbContext>().Users.Find(reservation.UserId); var activityPackage = ServiceLocator.Current.Resolve<IApplicationDbContext<ActivityPackage, int>>().GetById(reservation.ActivityPackageId); var vm = new ReservationViewModel { Id = reservation.Id, CreateDate = DateTimeFormats.FormatDate(reservation.AuditInfo.CreationDate), CreatedBy = UserProfileNames.ById(reservation.AuditInfo.CreatedBy), UpdateDate = DateTimeFormats.FormatDate(reservation.AuditInfo.UpdateDate), UpdatedBy = string.IsNullOrEmpty(reservation.AuditInfo.UpdatedBy) ? string.Empty : UserProfileNames.ById(reservation.AuditInfo.UpdatedBy), ActivityPackage = activityPackage.ToViewModel(), User = user.ToViewModel(), Message = reservation.Message, Statuses = StatusProvider.Statuses.Select(p => new SelectListItem { Text = p.Value, Value = p.Key }).ToList(), Status = Activities.Resources.Shared.Enums.ResourceManager.GetString(reservation.Status) }; return vm; }