public async Task <IActionResult> Book(BookPackageViewModel vm) { if (!User.Identity.IsAuthenticated) { return(Content("Login required!")); } else if (User.IsInRole("Customer")) { if (ModelState.IsValid) { Package currentPackage = _packageRepo.GetSingle(p => p.PackageId == vm.PackageId); Provider currentProvider = _providerRepo.GetSingle(p => p.ProviderId == currentPackage.ProviderId); ApplicationUser currentUser = await _userManagerService.FindByNameAsync(User.Identity.Name); Customer currentCustomer = _customerRepo.GetSingle(c => c.UserId == currentUser.Id); Booking actualBooking = new Booking { CustomerId = currentCustomer.CustomerId, PackageId = currentPackage.PackageId, DateMade = DateTime.Now, CompanyName = currentProvider.DisplayName, PackageName = currentPackage.Name, DateFor = vm.DateFor, NumberOfPeople = vm.NumberOfPeople, SpecialRequirements = vm.SpecialRequirements, Price = currentPackage.Price, IsPaid = false }; _bookingRepo.Create(actualBooking); string emailContent = "Dear " + currentCustomer.FirstName + ",\n\nThank you for your order with Grande Travel.\n" + "Please don't hesitate to check your booking details here:\n" + "http://localhost:5000/Packages/BookedPackages [Login required]\n\n" + "Kind Regards,\nGrande Travel"; await _emailService.SendEmailAsync(currentUser.Email, "Grande Travel - Do not reply", emailContent); return(RedirectToAction("BookedPackages", "Packages")); } return(View(vm)); } return(Content("Must be a Customer to book a package! Nice try though! ;)")); }
public IActionResult Book(int id) { Package currentPackage = _packageRepo.GetSingle(p => p.PackageId == id); Provider currentProvider = _providerRepo.GetSingle(p => p.ProviderId == currentPackage.ProviderId); BookPackageViewModel vm = new BookPackageViewModel { PackageId = currentPackage.PackageId, ProviderId = currentProvider.ProviderId, CompanyName = currentProvider.DisplayName, PackageName = currentPackage.Name, NumberOfPeople = 1, DateFor = DateTime.Now, Price = currentPackage.Price }; return(View(vm)); }