Example #1
0
        /// <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()
            };
Example #2
0
        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);
        }
Example #3
0
        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));
        }
Example #4
0
        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"));
        }
Example #5
0
        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));
        }
Example #6
0
        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));
        }
Example #7
0
 private ActionResult ToView(CheckoutDetailsViewModel vm)
 {
     return(View(vm));
 }