Example #1
0
        public ActionResult tryCheckout(CheckoutInfo info)
        {
            ActionResult res = null;

            PurchaseData purchase = PaymentController.getPurchaseById(info.purchaseId);

            try
            {
                var charge             = performCharge(info, purchase);
                int updatedUserCredits = updateUserCredits(info, purchase, charge);

                dynamic contentRes = new
                {
                    charge,
                    updatedUserCredits
                };

                res = new ContentResult {
                    Content     = JsonConvert.SerializeObject(contentRes),
                    ContentType = "application/json"
                };
            } catch (Exception e)
            {
                res = new ContentResult {
                    Content     = JsonConvert.SerializeObject(e),
                    ContentType = "application/json",
                    StatusCode  = 500
                };
            }

            return(res);
        }
Example #2
0
        public async Task <IActionResult> OnPost()
        {
            ProductIndex = _productVMService.GetProductsVM(HttpContext, null);
            int?cartId = HttpContext.Session.GetInt32("cartId");

            if (cartId != null)
            {
                productsInCart = (from p in ProductIndex.Products
                                  join cp in _db.CartProducts on p.Id equals cp.ProductId
                                  where cp.CartId == cartId
                                  select p).ToList();
            }
            checkoutInfo = new CheckoutInfo(HttpContext.Session.GetInt32("cartId"), FirstName, LastName, Address, Apartment, City,
                                            Country, Province, PostalCode, Phone, CardNumber, CardHolderName, ExpirationDate);

            if (!ModelState.IsValid)
            {
                return(Page());
            }
            else
            {
                await _db.CheckoutInfos.AddAsync(checkoutInfo);

                ShoppingCart cart = await _db.Carts.Where(c => c.Id == cartId).FirstOrDefaultAsync();

                cart.setStatus(1);
                await _db.SaveChangesAsync();

                HttpContext.Session.Remove("cartId");
                return(RedirectToPage("Confirmation"));
            }
        }
        public IActionResult Payment(CheckoutInfo checkoutInfo)
        {
            var order = _context.Order
                        .Include(o => o.Basket)
                        .FirstOrDefault(x => x.OrderId == checkoutInfo.OrderId);

            //Add shipping to total
            var total = 0;

            var service = new BasketService(_context);

            total = service.GetTotal(HttpContext.Session);

            var shipping = 0;

            if (total < 500)
            {
                shipping = 49;
            }

            total += shipping;

            order.Total    = total;
            order.Shipping = shipping;
            _context.SaveChanges();

            return(View(checkoutInfo));
        }
Example #4
0
        public CheckoutInfo CheckoutInfo(ObjectIdentity objIdentity)
        {
            ObjectIdentitySet objIdSet = new ObjectIdentitySet();

            objIdSet.Identities.Add(objIdentity);
            List <CheckoutInfo> objList;
            OperationOptions    operationOptions = null;

            versionControlService.Checkout(objIdSet, operationOptions);
            objList = versionControlService.GetCheckoutInfo(objIdSet);
            CheckoutInfo checkoutInfo = objList[0];

            if (checkoutInfo.IsCheckedOut)
            {
                Console.WriteLine("Object "
                                  + checkoutInfo.Identity
                                  + " is checked out.");
                Console.WriteLine("Lock owner is " + checkoutInfo.UserName);
            }
            else
            {
                Console.WriteLine("Object "
                                  + checkoutInfo.Identity
                                  + " is not checked out.");
            }
            versionControlService.CancelCheckout(objIdSet);
            return(checkoutInfo);
        }
        private async Task UpdateStorage(Guid correlationId, int sagaStatus, CheckoutInfo checkoutInfo)
        {
            var updateSagaInfo = await _repository.GetByIdAsync(correlationId);

            updateSagaInfo.Data       = checkoutInfo.ToString <CheckoutInfo>();
            updateSagaInfo.SagaStatus = sagaStatus;
            await _repository.UpdateAsync(updateSagaInfo);
        }
Example #6
0
 public ActionResult Checkout(CheckoutInfo checkInfo)
 {
     if (ModelState.IsValid)
     {
         cartRepository.CheckoutUser(cartRepository.UserInfo.First(p => p.LoginInformation.Username == HttpContext.User.Identity.Name).UserID);
         return(RedirectToAction("HomeScreen", "Home"));
     }
     return(View(checkInfo));
 }
 protected override void Given()
 {
     base.Given();
     SourceRepoDriver.GetLatestRevision().Returns(new RevisionInfo { Revision = "2344" });
     SourceRepoDriver.GetSourceRevision(Arg.Any<string>(), Arg.Any<string>()).Returns(new CheckoutInfo(){Comment = "comment"});
     WorkingAreaGovernor.AllocateWorkingArea().Returns("dugh");
     Worker = new Worker(Pipeline, WorkingAreaGovernor);
     Worker.OnProjectCheckedOut += info => checkoutInfo = info;
 }
Example #8
0
        public ActionResult CreateNewCustomerPolicy()
        {
            int cusId = (int)Session["id"];
            CustomerinfoDAORequest customerRequest = new CustomerinfoDAORequest();
            Customer_Info          customerInfo    = customerRequest.searchCustomerById(cusId);

            int policyID = int.Parse(Request.Params["idPolicyHidden"]);
            PolicyDAORequest policyRequest = new PolicyDAORequest();
            Policy           policyInfo    = policyRequest.searchPolicyById(policyID);

            int             modelId = int.Parse(Request.Params["cbVehicleModel"]);
            ModelDAORequest dao     = new ModelDAORequest();
            Model           model1  = dao.searchModelByModel(modelId);
            ModelViewModel  model   = dao.GetModelById(modelId);

            int vehicleCondition = int.Parse(Request.Params["condition"]);

            Vehicle_Info newVehicle = new Vehicle_Info()
            {
                brand_id          = int.Parse(Request.Form["cbVehicleBrand"]),
                model_id          = int.Parse(Request.Form["cbVehicleModel"]),
                address           = Request.Form["address"].ToString(),
                owner_name        = Request.Form["ownerName"].ToString(),
                version           = Request.Params["version"],
                frame_number      = Request.Params["frameNumber"],
                engine_number     = Request.Params["engineNumber"],
                vehicle_number    = Request.Params["vehicleNumber"],
                vehicle_condition = vehicleCondition,
                rate_by_condition = (vehicleCondition * model.rate) / 100,
                Model             = model1
            };

            Customer_Policy newCustomerPolicy = new Customer_Policy()
            {
                customer_id        = cusId,
                policy_id          = policyID,
                Vehicle_Info       = newVehicle,
                vehicle_id         = newVehicle.id,
                policy_start_date  = DateTime.Parse(Request.Params["startDate"]),
                policy_end_date    = DateTime.Parse(Request.Params["endDate"]),
                create_date        = DateTime.Parse(Request.Params["createDate"]),
                customer_add_prove = "Proved",
                total_payment      = decimal.Parse(Request.Params["totalPayment"]),
                active             = true,
                Policy             = policyInfo,
                Customer_Info      = customerInfo
            };

            CheckoutInfo checkout = new CheckoutInfo()
            {
                CustomerPolicy = newCustomerPolicy,
                Vehicle        = newVehicle
            };

            Session["checkoutInfo"] = checkout;
            return(RedirectToAction("CheckOutPage"));
        }
        public async Task PaymentAccepted(Guid correlationId)
        {
            await Audit("CheckoutService", $"CheckoutSaga | PaymentAccepted({correlationId}):Action", "The payment is accepted by the payment gateway.");

            var result = await LoadFromStorage(correlationId);

            _state         = (State)result.Item1.SagaStatus;
            _internalData  = result.Item2;
            _correlationId = correlationId;
            await _machine.FireAsync(_receivedPaymentTrigger, correlationId);
        }
        public async Task Checkout(Guid correlationId, Guid orderId)
        {
            await Audit("CheckoutService", $"CheckoutSaga | Checkout({correlationId}, {orderId}):Action", "The order is checking out...");

            var result = await LoadFromStorage(correlationId, orderId);

            _state         = (State)result.Item1.SagaStatus;
            _internalData  = result.Item2;
            _correlationId = correlationId;
            await _machine.FireAsync(_checkoutTrigger, correlationId);
        }
Example #11
0
        private void Checkout_Load(object sender, EventArgs e)
        {
            checkoutInfo = new CheckoutInfo();

            gridSelections.DataSource = checkoutInfo.SelectedItems;
            gridReview.DataSource     = checkoutInfo.SelectedItems;

            gridSelections.RowsAdded   += SelectionCountChanged;
            gridSelections.RowsRemoved += SelectionCountChanged;

            TransitionToMemberLookup();
        }
        //create a payment using an APIContext
        private Payment CreatePayment(APIContext apiContext, string redirectUrl)
        {
            CheckoutInfo checkout = (CheckoutInfo)Session["checkoutInfo"];

            var lsItem = new ItemList()
            {
                items = new List <Item>()
            };

            lsItem.items.Add(new Item {
                name = checkout.CustomerPolicy.Policy.policy_number, currency = "USD", price = checkout.CustomerPolicy.total_payment.ToString(), quantity = "1", sku = "sku"
            });

            var payer = new Payer()
            {
                payment_method = "paypal",
                payer_info     = new PayerInfo
                {
                    email = "" //personal account
                }
            };
            var redictUrl = new RedirectUrls()
            {
                cancel_url = redirectUrl,
                return_url = redirectUrl
            };
            var detail = new Details()
            {
                tax = "0", shipping = "0", subtotal = checkout.CustomerPolicy.total_payment.ToString()
            };                                                                                                                     //subtotal: sum(price*quantity) if sum is incorrect, it will return an error 400.
            var amount = new Amount()
            {
                currency = "USD", details = detail, total = checkout.CustomerPolicy.total_payment.ToString()
            };                                                                                                                          //total= tax + shipping + subtotal
            var transList = new List <Transaction>();

            transList.Add(new Transaction
            {
                description    = "Payment",
                invoice_number = Convert.ToString((new Random()).Next(100000)),
                amount         = amount,
                item_list      = lsItem,
            });
            this.payment = new Payment()
            {
                intent        = "sale",
                payer         = payer,
                transactions  = transList,
                redirect_urls = redictUrl
            };
            return(this.payment.Create(apiContext));
        }
        public void Create_Order_Infomation(CheckoutInfo model)
        {
            // create customer base on delivery info
            var customer_Id = Create_Customer(model.BillingInfo);

            // add to order table
            var order_Id = Create_Order(customer_Id, model);

            // add to order details table
            foreach (var item in model.CartItems)
            {
                var order_Detail = Create_Order_Detail(order_Id, item);
            }
        }
Example #14
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="idDocument"></param>
        /// <param name="documentNumber"></param>
        /// <param name="checkOutStatus"></param>
        /// <returns></returns>
        public bool IsCheckedOut(string idDocument, string documentNumber, out string ownerUser)
        {
            ownerUser = string.Empty;
            CheckoutInfo info = this.GetDctmCheckOutInfo(documentNumber);

            if (info != null)
            {
                ownerUser = info.UserName;
                return(info.IsCheckedOut);
            }
            else
            {
                return(false);
            }
        }
Example #15
0
        /// <summary>
        /// Reperimento dei metadati sullo stato del checkout del documento
        /// </summary>
        /// <param name="idDocument"></param>
        /// <param name="documentNumber"></param>
        /// <returns></returns>
        public CheckOutStatus GetCheckOutStatus(string idDocument, string documentNumber)
        {
            CheckOutStatus retValue = null;

            CheckoutInfo dctmCheckOutInfo = this.GetDctmCheckOutInfo(documentNumber);

            if (dctmCheckOutInfo.IsCheckedOut)
            {
                string dctmId = ((ObjectId)dctmCheckOutInfo.Identity.Value).Id;

                retValue = this.GetCheckOutStatus(dctmId, idDocument, documentNumber);
            }

            return(retValue);
        }
        public void AddCustomerPolicy()
        {
            CheckoutInfo checkout = (CheckoutInfo)Session["checkoutInfo"];

            Vehicle_Info    vehicleInfo    = checkout.Vehicle;
            Customer_Policy customerPolicy = checkout.CustomerPolicy;

            VehicleinfoViewModel vehicle = new VehicleinfoViewModel()
            {
                address          = vehicleInfo.address,
                brandid          = vehicleInfo.brand_id,
                eginenumber      = vehicleInfo.engine_number,
                framenumber      = vehicleInfo.frame_number,
                modelid          = vehicleInfo.model_id,
                ownername        = vehicleInfo.owner_name,
                ratebycondition  = vehicleInfo.rate_by_condition,
                vehiclecondition = vehicleInfo.vehicle_condition,
                vehiclenumber    = vehicleInfo.vehicle_number,
                version          = vehicleInfo.version
            };

            VehicleinfoDAORequest request1 = new VehicleinfoDAORequest();

            request1.Add(vehicle);

            VehicleinfoViewModel vehicle2 = request1.GetByAllNumber(vehicle.framenumber, vehicle.eginenumber, vehicle.vehiclenumber);

            CustomerpolicyViewModel cPolicy = new CustomerpolicyViewModel()
            {
                active           = customerPolicy.active,
                createdate       = customerPolicy.create_date,
                customeraddprove = customerPolicy.customer_add_prove,
                customerid       = (int)customerPolicy.customer_id,
                policyenddate    = customerPolicy.policy_end_date,
                policyid         = (int)customerPolicy.policy_id,
                policystartdate  = customerPolicy.policy_start_date,
                TotalPayment     = customerPolicy.total_payment,
                vehicleid        = vehicle2.id
            };

            CustomerpolicyDAORequest request2 = new CustomerpolicyDAORequest();

            request2.Add(cPolicy);
        }
Example #17
0
        public IActionResult LoginOrAnonymous(CheckoutInfo checkoutInfo)
        {
            if (User.Identity.IsAuthenticated)
            {
                var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;

                var user = _context.Users.FirstOrDefault(x => x.Id == userId);

                var order = _context.Order
                            .Include(x => x.Basket)
                            .ThenInclude(y => y.Items)
                            .ToList().Last();

                order.User = user;
                _context.AddOrUpdate(order);

                _context.SaveChanges();

                var chOutInfo = new CheckoutInfo
                {
                    FirstName      = user.FirstName,
                    LastName       = user.LastName,
                    PostingAddress = user.PostingAddress,
                    PostalCode     = user.PostalCode,
                    City           = user.City,
                    Email          = user.Email,
                    PhoneNumber    = Convert.ToInt32(user.PhoneNumber),
                    OrderId        = order.OrderId
                };

                _context.AddOrUpdate(chOutInfo);
                _context.AddOrUpdate(order);

                _context.SaveChanges();

                return(RedirectToAction("Payment", "Orders", chOutInfo));
            }

            ViewData["ReturnUrl"] = HttpContext.Request.GetUri().AbsolutePath;

            return(View(checkoutInfo));
        }
Example #18
0
        public ActionResult tryCheckout(CheckoutInfo info)
        {
            string       id       = info.purchaseId ?? purchaseConfig.defaultPurchaseId;
            PurchaseData purchase = findPurchaseData(PaymentController.countryToPurchases, id);

            ActionResult res = null;

            try
            {
                var customer = customerService.Create(new CustomerCreateOptions
                {
                    Email       = info.email,
                    SourceToken = info.sourceToken
                });

                var charge = chargeService.Create(new ChargeCreateOptions
                {
                    Amount      = purchase.price.amount,
                    Description = purchase.name,
                    Currency    = purchase.price.currency,
                    CustomerId  = customer.Id
                });

                if (charge != null)
                {
                    if (charge.Paid)
                    {
                        //add credits to db user here
                    }

                    string chargeString = JsonConvert.SerializeObject(charge);
                    res = new ContentResult {
                        Content = chargeString, ContentType = "application/json"
                    };
                }
            } catch (Exception e)
            {
                res = null;
            }

            return(res);
        }
Example #19
0
        public async Task <IActionResult> CheckoutInfo([Bind("Id, OrderId,FirstName,LastName,Email,PostingAddress,PostalCode,City,PhoneNumber")] CheckoutInfo checkoutInfo)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    _context.CheckoutInfo.Update(checkoutInfo);

                    await _context.SaveChangesAsync();

                    return(RedirectToAction("Payment", checkoutInfo));
                }
                catch (DbUpdateConcurrencyException exc)
                {
                    _logger.LogError(exc.ToString());
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View("LoginOrAnonymous", checkoutInfo));
        }
Example #20
0
        private int updateUserCredits(CheckoutInfo info, PurchaseData purchase, Charge charge)
        {
            int res = -1;

            User user = userRepository.GetById(info.userId);

            res = user.Credits;

            if (
                charge != null &&
                charge.Paid
                )
            {
                user.Credits += purchase.credits;
                userRepository.Update(user);

                res = user.Credits;
            }

            return(res);
        }
        private async Task <Tuple <SagaInfo, CheckoutInfo> > LoadFromStorage(Guid correlationId, Guid?orderId = null)
        {
            var sagaInfo = await _repository.GetByIdAsync(correlationId);

            CheckoutInfo internalData;

            if (sagaInfo != null)
            {
                internalData = sagaInfo.Data.ToObject <CheckoutInfo>();
            }
            else
            {
                if (!orderId.HasValue)
                {
                    throw new Exception("Need to have an order id for the first time.");
                }
                var order = await _restClient.GetAsync <Order>("order_service", $"/api/orders/{orderId.Value}");

                internalData = new CheckoutInfo
                {
                    OrderId     = order.Id,
                    CustomerId  = order.CustomerId,
                    EmployeeId  = order.EmployeeId,
                    OrderDate   = order.OrderDate,
                    OrderStatus = (int)order.OrderStatus,
                    Products    = order.OrderDetails.Select(x => new ProductInfo
                    {
                        ProductId = x.ProductId,
                        Quantity  = x.Quantity
                    }).ToList()
                };
                var saga = new SagaInfo
                {
                    Id   = correlationId, // correlation id
                    Data = internalData.ToString <CheckoutInfo>()
                };
                sagaInfo = await _repository.AddAsync(saga);
            }
            return(new Tuple <SagaInfo, CheckoutInfo>(sagaInfo, internalData));
        }
Example #22
0
        private static Charge performCharge(CheckoutInfo info, PurchaseData purchase)
        {
            Charge res = null;

            var customer = customerService.Create(new CustomerCreateOptions
            {
                Email       = info.email,
                SourceToken = info.sourceToken
            });

            var amountMultiplier = getUnitMultiplier(purchase);

            res = chargeService.Create(new ChargeCreateOptions
            {
                Amount      = purchase.price.amount * amountMultiplier,
                Currency    = purchase.price.currency,
                Description = purchase.name,
                CustomerId  = customer.Id
            });

            return(res);
        }
        private int Create_Order(int Customer_Id, CheckoutInfo model)
        {
            try
            {
                double?total_Money = 0;

                foreach (var item in model.CartItems)
                {
                    if (item.Price == null)
                    {
                        item.Price = 0;
                    }
                    ;

                    var item_total_price = item.Price * item.Quantity;
                    total_Money += item_total_price;
                }

                object[] SqlParams =
                {
                    new SqlParameter("@Customer_Id",          Customer_Id),
                    new SqlParameter("@Delivery_City_Id",     model.BillingInfo.City_ID),
                    new SqlParameter("@Delivery_District_Id", model.BillingInfo.District_ID),
                    new SqlParameter("@Delivery_Address",     model.BillingInfo.Delivery_Address),
                    new SqlParameter("@Total_Money",          total_Money),
                    new SqlParameter("@Order_Status",                                          1),
                    new SqlParameter("@Notes",                model.BillingInfo.Notes)
                };

                var res = context.Database.SqlQuery <int>("Sp_Create_Order @Customer_Id, @Delivery_City_Id, @Delivery_District_Id, @Delivery_Address, @Total_Money, @Order_Status, @Notes", SqlParams).FirstOrDefault();

                return(res);
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
                return(0);
            }
        }
        public override async Task <IActionResult> Execute(object id, IFormCollection formCollection = null)
        {
            var context = this.Context;

            var basketId = 0;

            if (this.Controller.HttpContext.Session.GetInt32("BasketId") != null)
            {
                basketId = this.Controller.HttpContext.Session.GetInt32("BasketId").Value;
            }

            var basket = context.Baskets
                         .Include(x => x.Items)
                         .ThenInclude(y => y.BasketItemIngredients)
                         .Include(z => z.Items)
                         .ThenInclude(h => h.Dish)
                         .ThenInclude(j => j.DishIngredients)
                         .ThenInclude(k => k.Ingredient)
                         .FirstOrDefault(x => x.BasketId == basketId);

            var previousOrder = context.Order
                                .Include(x => x.Basket)
                                .FirstOrDefault(x => x.BasketId == basketId);

            var order = new Order();

            if (previousOrder != null)
            {
                order = previousOrder;
            }
            else
            {
                order.Basket = basket;
            }


            if (this.Controller.User.Identity.IsAuthenticated)
            {
                if (this.Controller.HttpContext.Session.GetInt32("LoggedInBefore") != null)
                {
                    order = context.Order
                            .Include(x => x.Basket)
                            .ThenInclude(y => y.Items)
                            .ToList().Last();
                }

                var userId = this.Controller.User.FindFirst(ClaimTypes.NameIdentifier).Value;

                var user = context.Users.FirstOrDefault(x => x.Id == userId);

                order.User = user;
                context.AddOrUpdate(order);

                await context.SaveChangesAsync();

                var chOutInfo = new CheckoutInfo
                {
                    FirstName      = user.FirstName,
                    LastName       = user.LastName,
                    PostingAddress = user.PostingAddress,
                    PostalCode     = user.PostalCode,
                    City           = user.City,
                    Email          = user.Email,
                    PhoneNumber    = Convert.ToInt32(user.PhoneNumber),
                    OrderId        = order.OrderId
                };


                context.AddOrUpdate(chOutInfo);
                context.AddOrUpdate(order);
                order.BasketId = basketId;

                await context.SaveChangesAsync();

                this.Controller.HttpContext.Session.Remove("LoggedInBefore");

                return(Controller.RedirectToAction("Payment", "Orders", chOutInfo));
            }

            context.AddOrUpdate(order);
            await context.SaveChangesAsync();

            var checkoutInfo = new CheckoutInfo {
                OrderId = order.OrderId
            };

            order.BasketId = basketId;
            await context.SaveChangesAsync();

            this.Controller.HttpContext.Session.SetInt32("LoggedInBefore", 1);

            return(this.Controller.RedirectToAction("LoginOrAnonymous", "Orders", checkoutInfo));
        }
Example #25
0
        public ActionResult CheckOutPage()
        {
            CheckoutInfo checkout = (CheckoutInfo)Session["checkoutInfo"];

            return(View(checkout));
        }
Example #26
0
 protected override void When()
 {
     workingArea = Path.Combine(GitTestSupport.GetTempPath(), Path.GetRandomFileName());
     Directory.CreateDirectory(workingArea);
     sourceRevision = _driver.GetSourceRevision(revision1.Revision, workingArea );
 }