/// <summary> /// Creates the purchase event. /// </summary> private Purchase SetupPurchase(CheckoutDetailsViewModel checkoutDetails, BasketViewModel basketViewModel) { var shippingAddress = new AddressDetails { FirstName = checkoutDetails.User.FirstName, LastName = checkoutDetails.User.LastName, PhoneNumber = checkoutDetails.User.Phone, Street1 = checkoutDetails.ShippingAddress.Address1, Street2 = checkoutDetails.ShippingAddress.Address2, City = checkoutDetails.ShippingAddress.City, State = checkoutDetails.ShippingAddress.State, ZipCode = checkoutDetails.ShippingAddress.ZipCode, Country = checkoutDetails.ShippingAddress.CountryRegion }; var billingAddress = new AddressDetails { FirstName = checkoutDetails.User.FirstName, LastName = checkoutDetails.User.LastName, PhoneNumber = checkoutDetails.User.Phone, Street1 = checkoutDetails.BillingAddress.Address1, Street2 = checkoutDetails.BillingAddress.Address2, City = checkoutDetails.BillingAddress.City, State = checkoutDetails.BillingAddress.State, ZipCode = checkoutDetails.BillingAddress.ZipCode, Country = checkoutDetails.BillingAddress.CountryRegion }; var device = new DeviceContext { DeviceContextId = _contextAccessor.GetSessionId(), ExternalDeviceId = Guid.NewGuid().ToString(), IPAddress = _contextAccessor.HttpContext.Connection.RemoteIpAddress.ToString(), Provider = DeviceContextProvider.DFPFingerPrinting.ToString() };
private CheckoutDetailsViewModel ToDetails(Order o) { var vm = new CheckoutDetailsViewModel { Username = o.Username, OrderDetails = o.OrderDetails.Select(a => new CheckoutOrderDetailVM { AlbumName = a.Album.Title, Quantity = a.Quantity, UnitPrice = a.UnitPrice }).ToList(), OrderId = o.OrderId, Address = o.Address, City = o.City, Country = o.Country, Email = o.Email, FirstName = o.FirstName, LastName = o.LastName, OrderDate = o.OrderDate, Phone = o.Phone, PostalCode = o.PostalCode, State = o.State, Total = o.Total }; return(vm); }
public async Task <IActionResult> Detalles(int idRecepcion) { var recepcion = await _context.Recepcion .Include(r => r.Automovil) .Include(r => r.cliente) .Include(r => r.empleado) .Where(r => r.recepcionID == idRecepcion) .FirstOrDefaultAsync(); var procedimientos = _context.Procedimiento .Where(l => l.recepcionID == idRecepcion) .ToList(); var allTareas = _context.AsignacionTarea .Include(l => l.procedimiento) .ToList(); var factura = _context.Factura .Where(r => r.idRecepcion == idRecepcion) .FirstOrDefault(); var extras = _context.Extra .Where(r => r.idFactura == factura.facturaId) .ToList(); List <AsignacionTarea> tareasRecepcion = new List <AsignacionTarea>(); foreach (Procedimiento p in procedimientos) { var tarea = _context.AsignacionTarea .Where(l => l.procedimientoID == p.procedimientoID) .FirstOrDefault(); if (tarea != null) { tareasRecepcion.Add(tarea); } } CheckoutDetailsViewModel model = new CheckoutDetailsViewModel() { recepcion = recepcion, tareasRecepcion = tareasRecepcion, procedimientos = procedimientos, preciosExtras = new double[tareasRecepcion.Count], factura = factura, extras = extras }; return(View(model)); }
public async Task <IActionResult> CheckoutDetails(CheckoutDetailsViewModel checkoutDetails) { var basketViewModel = await GetBasketViewModelAsync(); var address = new Address( string.Join(' ', checkoutDetails.ShippingAddress.Address1, checkoutDetails.ShippingAddress.Address2), checkoutDetails.ShippingAddress.City, checkoutDetails.ShippingAddress.State, checkoutDetails.ShippingAddress.CountryRegion, checkoutDetails.ShippingAddress.ZipCode); var paymentInfo = new PaymentInfo( string.Join(' ', checkoutDetails.User.FirstName, checkoutDetails.User.LastName), checkoutDetails.CreditCard.CardNumber, checkoutDetails.CreditCard.CardType, checkoutDetails.CreditCard.CVV, string.Join('/', checkoutDetails.CreditCard.ExpirationMonth, checkoutDetails.CreditCard.ExpirationYear)); #region Fraud Protection Service //Call Fraud Protection to get the risk score for this purchase. //We get a correlation ID that we pass to all Fraud Protection calls (up to 4) that we make in the purchase workflow. //This is optional, but can help when troubleshooting bugs or performance issues. var purchase = SetupPurchase(checkoutDetails, basketViewModel); var correlationId = _fraudProtectionService.NewCorrelationId; var result = await _fraudProtectionService.PostPurchase(purchase, correlationId); var fraudProtectionIO = new FraudProtectionIOModel(correlationId, purchase, result, "Purchase"); //Check the risk score that was returned and possibly complete the purchase. var status = await ApproveOrRejectPurchase( result.ResultDetails.MerchantRuleDecision, checkoutDetails.CreditCard.UnformattedCardNumber, purchase.PurchaseId, correlationId, fraudProtectionIO); TempData.Put(FraudProtectionIOModel.TempDataKey, fraudProtectionIO); #endregion await _orderService.CreateOrderAsync(basketViewModel.Id, address, paymentInfo, status, purchase, result); await _basketService.DeleteBasketAsync(basketViewModel.Id); ViewData["OrderResult"] = status; return(View("Checkout")); }
public ActionResult CheckoutDetails() { CheckoutDetailsViewModel checkoutDetailsViewModel = new CheckoutDetailsViewModel(); checkoutDetailsViewModel.ApplicationUserId = User.Identity.GetUserId(); //string userId = checkoutDetailsViewModel.ApplicationUser.Id; var userProfile = from u in db.UserProfiles where u.ApplicationUserId == checkoutDetailsViewModel.ApplicationUserId select u; checkoutDetailsViewModel.UserProfile = userProfile.First(); var cart = from c in db.Carts where c.UserId == checkoutDetailsViewModel.ApplicationUserId && c.State == "active" select c; checkoutDetailsViewModel.Cart = cart.First(); return(View(checkoutDetailsViewModel)); }
public async Task <IActionResult> Checkout(Dictionary <string, int> items) { var basketViewModel = await GetBasketViewModelAsync(); await _basketService.SetQuantities(basketViewModel.Id, items); var user = await _userManager.GetUserAsync(User); var sessionId = _contextAccessor.GetSessionId(); if (user == null) { //Anonymous user checkout. return(View("CheckoutDetails", new CheckoutDetailsViewModel { NumberItems = basketViewModel.Items.Count, DeviceFingerPrinting = new DeviceFingerPrintingViewModel { SessionId = sessionId } })); } // Apply default user settings var baseCheckoutModel = new CheckoutDetailsViewModel { User = new UserViewModel { FirstName = user.FirstName, LastName = user.LastName, Email = user.Email, Phone = user.PhoneNumber, }, ShippingAddress = new AddressViewModel { Address1 = user.Address1, Address2 = user.Address2, City = user.City, State = user.State, ZipCode = user.ZipCode, CountryRegion = user.CountryRegion, }, CreditCard = new CreditCardViewModel { CardType = user.DefaultCardType, CardName = user.DefaultCardName, CardNumber = user.DefaultCardNumber, ExpirationMonth = user.DefaultExpirationMonth, ExpirationYear = user.DefaultExpirationYear, CVV = user.DefaultCVV, }, BillingAddress = new AddressViewModel { Address1 = user.BillingAddress1, Address2 = user.BillingAddress2, City = user.BillingCity, CountryRegion = user.BillingCountryRegion, State = user.BillingState, ZipCode = user.BillingZipCode, }, NumberItems = basketViewModel.Items.Count, DeviceFingerPrinting = new DeviceFingerPrintingViewModel { SessionId = sessionId } }; return(View("CheckoutDetails", baseCheckoutModel)); }
private ActionResult ToView(CheckoutDetailsViewModel vm) { return(View(vm)); }