Beispiel #1
0
        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! ;)"));
        }
Beispiel #2
0
        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));
        }