public IActionResult PayPackage(int id, int numberOfPeople) { Booking currentBooking = _bookingRepo.GetSingle(b => b.BookingId == id); Package currentPackage = _packageRepo.GetSingle(p => p.PackageId == currentBooking.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); currentBooking.NumberOfPeople = numberOfPeople; PayPackageViewModel vm = new PayPackageViewModel { BookingId = id, CompanyName = currentProvider.DisplayName, PackageName = currentPackage.Name, DateFor = currentBooking.DateFor, NumberOfPeople = currentBooking.NumberOfPeople, TotalPrice = currentBooking.NumberOfPeople * currentPackage.Price, PaymentType = 1 }; _bookingRepo.Update(currentBooking); return(View(vm)); }
public async Task <IActionResult> PayPackage(PayPackageViewModel vm) { if (ModelState.IsValid) { ApplicationUser currentUser = await _userManagerService.FindByNameAsync(User.Identity.Name); Customer currentCustomer = _customerRepo.GetSingle(c => c.UserId == currentUser.Id); Booking currentBooking = _bookingRepo.GetSingle(b => b.BookingId == vm.BookingId); Package currentPackage = _packageRepo.GetSingle(p => p.PackageId == currentBooking.PackageId); Provider currentProvider = _providerRepo.GetSingle(p => p.ProviderId == currentPackage.ProviderId); currentBooking.IsPaid = true; _bookingRepo.Update(currentBooking); //--------======= Email Notification ========----------- //Create Unique Voucher Code const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; int voucherCodeLength = 8; Random random = new Random(); string uniqueVoucherCode = new string(Enumerable.Repeat(chars, voucherCodeLength).Select(s => s[random.Next(s.Length)]).ToArray()); DateTime voucherExpDate = DateTime.Today.AddMonths(3); string emailContent = "Dear " + currentCustomer.FirstName + ",\n\n" + "Thank you for your order. \n\n" + "Please find the tour details below:\n\n" + "Company Name: " + currentProvider.DisplayName + "\n" + "Package Name: " + currentPackage.Name + "\n" + "Tour Date: " + currentBooking.DateFor.ToString("yyyy-MM-dd") + "\n" + "Booked On: " + currentBooking.DateMade.ToString("yyyy-MM-dd hh:mm:ss") + "\n" + "Number of People: " + currentBooking.NumberOfPeople + "\n" + "Total Cost: $" + (currentBooking.Price * currentBooking.NumberOfPeople) + "\n\n" + "Please also find the voucher included:\n\n" + "Voucher Code: " + uniqueVoucherCode + "\n" + "Voucher Validity: 3 months from purchase\n" + "Voucher Expiry: " + voucherExpDate.ToString("yyyy-MM-dd") + "\n\n" + "Kind Regards,\nGrande Travel"; await _emailService.SendEmailAsync(currentUser.Email, "Grande Travel - Order Confirmation - Do not reply", emailContent); //--------======= SMS Notification ========----------- string smsContent = "Dear " + currentCustomer.FirstName + ", thank you for your order! Grande Travel"; await _smsService.SendSmsAsync(currentUser.PhoneNumber, smsContent); return(RedirectToAction("BookedPackages", "Packages")); } return(View(vm)); }