public static async Task <(PoseBillingResult BillingResult, long Payload, string OrderId)> InAppProductProcess(InAppPurchase inAppPurchase, string appPackageName, string purchaseToken)
        {
            ProductPurchase poductPurchase = await _androidPublisher.Purchases.Products.Get(appPackageName, inAppPurchase.ProductId, purchaseToken).ExecuteAsync();

            if (!long.TryParse(poductPurchase.DeveloperPayload, out long payLoad))
            {
                return(null, 0, "");
            }

            PoseBillingResult billingResult = new PoseBillingResult();

            switch (poductPurchase.PurchaseState)
            {
            case 0:
                billingResult.PurchaseStateType = PosePurchaseStateType.Purchased;
                break;

            case 1:
                billingResult.PurchaseStateType = PosePurchaseStateType.Canceled;
                break;

            case 2:
                billingResult.PurchaseStateType = PosePurchaseStateType.Pending;
                break;
            }

            DateTime origin       = new DateTime(1970, 1, 1, 0, 0, 0, 0);
            DateTime purchaseTime = origin.AddMilliseconds(poductPurchase.PurchaseTimeMillis ?? 0);

            billingResult.MemberRoleType = inAppPurchase.OfferRoleType;
            billingResult.RoleExpireTime = purchaseTime.AddDays(inAppPurchase.OfferPeriod);
            billingResult.ProductId      = inAppPurchase.ProductId;

            return(billingResult, payLoad, poductPurchase.OrderId);
        }
Esempio n. 2
0
 protected void rptRecentActivity_OnItemDataBound(object sender, RepeaterItemEventArgs e)
 {
     if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
     {
         ProductPurchase dataItem = (ProductPurchase)e.Item.DataItem;
         Label           label    = e.Item.FindControl("lblTransactionXID") as Label;
         if (dataItem.TransactionXID != string.Empty)
         {
             label.Text = dataItem.TransactionXID;
         }
         else
         {
             label.Visible = false;
         }
         Label label2 = e.Item.FindControl("lblPrice") as Label;
         if (dataItem.Price > 0M)
         {
             label2.Text = string.Format("${0:#,#.00}", dataItem.Price);
         }
         else
         {
             label2.Text = "&nbsp;&nbsp;&nbsp;-";
         }
     }
 }
Esempio n. 3
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,PurchaseDate,PurchasePrice,Discount,FinalPrice,Status,CreatedDate,CreatedBy,ModifiedDate,ModifiedBy")] ProductPurchase productPurchase)
        {
            if (id != productPurchase.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(productPurchase);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ProductPurchaseExists(productPurchase.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(productPurchase));
        }
Esempio n. 4
0
    public virtual void InitPurchase()
    {
        ProductPurchase.Init();

        productPurchase = ProductPurchase.instance;//gameObject.AddComponent<ProductPurchase>();
        productPurchase.EnableProductUnlocks = ENABLE_PRODUCT_UNLOCKS;
    }
Esempio n. 5
0
        public async Task <ProductPurchase> PurchaseProduct(ProductPurchase productPurchase,
                                                            [Service] IMediator mediator,
                                                            [Service] ILogger <ProductPurchaseMutation> logger)
        {
            try
            {
                var purchaseCommand = new ProductPurchaseCommand()
                {
                    ProductPurchase = productPurchase
                };

                return(await mediator.Send(purchaseCommand));

                //messageBus.DeclareExchange("MyShop", "topic");
                //if (messageBus.PublishMessage(new { userId, shopId, productType }, "PurchaseProduct", "MyShop"))
                //{
                //    return true;
                //}
            }
            catch (Exception ex)
            {
                logger.LogError(LoggerEvents.GenerateEventId(LoggerEventType.UnknownPurchaseProductMutationException),
                                ex,
                                $"{nameof(ProductPurchaseMutation)} PurchaseProduct encountered exception with ShopId: {productPurchase.ShopId},ProductType: {productPurchase.ProductType},UserId: {productPurchase.UserId}");

                throw;
            }
        }
Esempio n. 6
0
        public async Task <IActionResult> Edit(int id, [Bind("ProductPurchaseId,BatchNumber,Comment,Cost,DateTime,Expiry,LocationId,ProductId,SupplierId,Timestamp,VersionNumber,Volume")] ProductPurchase val)
        {
            if (val.ProductPurchaseId != id)
            {
                return(NotFound());
            }

            this.FixNullFields(val);

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(val);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!Exists(val.ProductPurchaseId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["LocationId"] = new SelectList(_context.Location, "LocationId", "Name", val.LocationId);
            ViewData["ProductId"]  = new SelectList(_context.Product, "ProductId", "Description", val.ProductId);
            ViewData["SupplierId"] = new SelectList(_context.Contact, "ContactId", "Name", val.SupplierId);
            return(View(val));
        }
Esempio n. 7
0
        protected void GenerateProductKey_Click(object sender, EventArgs e)
        {
            var productPackage = CommerceCommon.GetProductPackage(base.CurrentSueetieProduct.ProductID);
            var purchase2      = new ProductPurchase
            {
                UserID      = base.CurrentSueetieUserID,
                CartLinkID  = CommerceCommon.GetCartLinkList(base.CurrentSueetieProduct.ProductID).Find(p => p.LicenseTypeID == 1).CartLinkID,
                ProductID   = base.CurrentSueetieProduct.ProductID,
                PurchaseKey = CommerceCommon.GeneratePurchaseKey(),
                ActionID    = 2
            };

            var productPurchase = purchase2;
            var num             = Purchases.RecordPurchase(productPurchase);
            var spt             = (SueetiePackageType)Enum.ToObject(typeof(SueetiePackageType), productPackage.PackageTypeID);

            var productLicense = new ProductLicense
            {
                License       = LicensingCommon.CreateLicenseKey(SueetieLicenseType.Free, spt),
                PackageTypeID = productPackage.PackageTypeID,
                LicenseTypeID = 1,
                Version       = productPackage.Version,
                UserID        = base.CurrentSueetieUserID,
                CartLinkID    = productPurchase.CartLinkID,
                PurchaseID    = num
            };

            Licenses.CreateProductLicense(productLicense);

            this.ltLicenseGeneration.Text = SueetieLocalizer.GetMarketplaceString("license_created_message");
            this.ltNewLicense.Text        = productLicense.License;
            this.SetActivePanel(this.pnlLicenseGeneration);
        }
Esempio n. 8
0
        // Converting purchase items to stock

        public int ProcessPurchaseInward(DateTime inDate, bool IsLocal)
        {
            using (VoyagerContext db = new VoyagerContext())
            {
                int ctr  = 0;
                var data = db.ImportPurchases.Where(c => c.IsDataConsumed == false && DbFunctions.TruncateTime(c.GRNDate) == DbFunctions.TruncateTime(inDate)).OrderBy(c => c.InvoiceNo).ToList();

                if (data != null && data.Count() > 0)
                {
                    ProductPurchase PurchasedProduct = null;

                    foreach (var item in data)
                    {
                        int pid = CreateProductItem(db, item);
                        if (pid != -999)
                        {
                            CreateStockItem(db, item, pid);
                        }
                        PurchasedProduct = CreatePurchaseInWard(db, item, PurchasedProduct);
                        PurchasedProduct.PurchaseItems.Add(CreatePurchaseItem(db, item, pid, IsLocal));
                        item.IsDataConsumed  = true;
                        db.Entry(item).State = EntityState.Modified;
                        ctr++;
                    }
                    if (PurchasedProduct != null)
                    {
                        db.ProductPurchases.Add(PurchasedProduct);
                    }
                    db.SaveChanges();
                }
                return(ctr);
            }//end of using
        }
Esempio n. 9
0
        protected void Download_Click(object sender, EventArgs e)
        {
            if (!this.IsFileAvailable)
            {
                base.Response.Redirect(base.Request.RawUrl + "&r=1");
                return;
            }

            ProductPurchase productPurchase = new ProductPurchase
            {
                ProductID   = base.CurrentSueetieProduct.ProductID,
                UserID      = base.CurrentSueetieUserID,
                PurchaseKey = this.PurchaseKey,
                CartLinkID  = -1,
                ActionID    = 1
            };

            Purchases.RecordPurchase(productPurchase);

            string sourceFileName = this.CurrentSueetieProduct.ResolveFilePath(this.Server);


            base.Response.AddHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(sourceFileName));
            base.Response.Clear();
            base.Response.ContentType = "application/zip";
            this.Response.WriteFile(sourceFileName);
            base.Response.End();
        }
Esempio n. 10
0
        public async Task <IActionResult> Edit(string id, [Bind("Id,ReferenceInternal,ReferenceExternal,PurchaseDate,TotalPrice,TotalVat,TotalQuantity,Note,IsVatPaid,ReceivingCost,IsActive,Meta,IsDeleted,CreatedBy,UpdatedBy,DeletedBy,CreatedAt,DeletedAt,SupplierId,TransectionTypeOId")] ProductPurchase productPurchase)
        {
            if (id != productPurchase.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(productPurchase);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!ProductPurchaseExists(productPurchase.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["SupplierId"]         = new SelectList(_context.Suppliers, "Id", "Id", productPurchase.SupplierId);
            ViewData["TransectionTypeOId"] = new SelectList(_context.TransectionType, "Id", "Id", productPurchase.TransectionTypeOId);
            return(View(productPurchase));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            ProductPurchase productPurchase = db.ProductPurchases.Find(id);

            db.ProductPurchases.Remove(productPurchase);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 protected void rptPurchases_OnItemDataBound(object sender, RepeaterItemEventArgs e)
 {
     if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
     {
         ProductPurchase dataItem = (ProductPurchase)e.Item.DataItem;
         Label           label    = e.Item.FindControl("lblTitle") as Label;
         label.Text = CommerceHelper.PurchasedProductTitle(dataItem);
     }
 }
Esempio n. 13
0
 protected override void OnOpenNew()
 {
     Purchase = new ProductPurchase
     {
         Date     = DateTime.Now,
         Account  = ContextManager.ActiveAccounts.FirstOrDefault(),
         Supplier = ContextManager.ActiveSuppliers.FirstOrDefault()
     };
 }
 public ProductPurchase CreatePurchaseInWard(VoyagerContext db, ImportPurchase purchase, ProductPurchase product)
 {
     if (product != null)
     {
         if (purchase.InvoiceNo == product.InvoiceNo)
         {
             product.TotalAmount      += (purchase.CostValue + purchase.TaxAmt);
             product.ShippingCost     += 0;//TODO: add option for adding shipping cost for fabric
             product.TotalBasicAmount += purchase.CostValue;
             product.TotalTax         += purchase.TaxAmt;
             product.TotalQty         += purchase.Quantity;
         }
         else
         {
             db.ProductPurchases.Add(product);
             db.SaveChanges();
             product = new ProductPurchase
             {
                 InvoiceNo        = purchase.InvoiceNo,
                 InWardDate       = purchase.GRNDate,
                 InWardNo         = purchase.GRNNo,
                 IsPaid           = false,
                 PurchaseDate     = purchase.InvoiceDate,
                 ShippingCost     = 0,//TODO: add option for adding shipping cost for fabric
                 TotalBasicAmount = purchase.CostValue,
                 TotalTax         = purchase.TaxAmt,
                 TotalQty         = purchase.Quantity,
                 TotalAmount      = purchase.CostValue + purchase.TaxAmt,// TODO: Check for actual DATA.
                 Remarks          = "",
                 SupplierID       = GetSupplierIdOrAdd(db, purchase.SupplierName),
                 StoreId          = StoreID
             };
             product.PurchaseItems = new List <PurchaseItem> ();
         }
     }
     else
     {
         product = new ProductPurchase
         {
             InvoiceNo        = purchase.InvoiceNo,
             InWardDate       = purchase.GRNDate,
             InWardNo         = purchase.GRNNo,
             IsPaid           = false,
             PurchaseDate     = purchase.InvoiceDate,
             ShippingCost     = 0,//TODO: add option for adding shipping cost for fabric
             TotalBasicAmount = purchase.CostValue,
             TotalTax         = purchase.TaxAmt,
             TotalQty         = purchase.Quantity,
             TotalAmount      = purchase.CostValue + purchase.TaxAmt,// TODO: Check for actual DATA.
             Remarks          = "",
             SupplierID       = GetSupplierIdOrAdd(db, purchase.SupplierName),
             StoreId          = StoreID
         };
         product.PurchaseItems = new List <PurchaseItem> ();
     }
     return(product);
 }
Esempio n. 15
0
        public async Task <IActionResult> Create([Bind("Id,PurchaseDate,PurchasePrice,Discount,FinalPrice,Status,CreatedDate,CreatedBy,ModifiedDate,ModifiedBy")] ProductPurchase productPurchase)
        {
            if (ModelState.IsValid)
            {
                _context.Add(productPurchase);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(productPurchase));
        }
Esempio n. 16
0
 private void FixNullFields(ProductPurchase val)
 {
     if (String.IsNullOrWhiteSpace(val.BatchNumber))
     {
         val.BatchNumber = "N/A";
     }
     if (String.IsNullOrWhiteSpace(val.Comment))
     {
         val.Comment = "N/A";
     }
 }
 public ActionResult Edit([Bind(Include = "ProductPurchaseId,InWardNo,InWardDate,PurchaseDate,InvoiceNo,TotalQty,TotalBasicAmount,ShippingCost,TotalTax,TotalAmount,Remarks,SupplierID,IsPaid")] ProductPurchase productPurchase)
 {
     if (ModelState.IsValid)
     {
         db.Entry(productPurchase).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.SupplierID = new SelectList(db.Suppliers, "SupplierID", "SuppilerName", productPurchase.SupplierID);
     return(View(productPurchase));
 }
Esempio n. 18
0
 public ActionResult Edit([Bind(Include = "Id,Id_User,DateP,DateLimit,Id_LatePayment,status,TotalAmount")] ProductPurchase productPurchase)
 {
     if (ModelState.IsValid)
     {
         db.Entry(productPurchase).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.Id_LatePayment = new SelectList(db.LatePayment, "Id", "TypeIncrement", productPurchase.Id_LatePayment);
     ViewBag.Id_User        = new SelectList(db.Users, "Id", "Credentials", productPurchase.Id_User);
     return(View(productPurchase));
 }
    public override List <ProductPurchaseOutp> ComputeMatches()
    {
        var l2 = ListTwo
                 .GroupBy(l => l.ProductID)
                 .ToDictionary(p => p.Key);

        return(ListOne
               .Select(listOne =>
        {
            decimal wap = 0;
            ProductPurchase minp = null;

            if (l2.TryGetValue(listOne.ProductID, out var matches))
            {
                long qsum = 0;
                decimal psum = 0;
                decimal min = decimal.MaxValue;
                foreach (var m in matches)
                {
                    long quantity = (long)m.Quantity * m.GlobalQuantity;
                    var price = m.Price;
                    qsum += quantity;
                    psum += quantity * price;
                    if (price < min)
                    {
                        minp = m;
                        min = price;
                    }
                }

                if (qsum != 0)
                {
                    wap = psum / qsum;
                }
            }


            return new ProductPurchaseOutp
            {
                ProductID = listOne.ProductID,
                ROQ = listOne.Price,
                RUQ = listOne.Quantity,
                RPQ = listOne.GlobalQuantity,
                RV = listOne.Price * listOne.Quantity * listOne.GlobalQuantity,
                BMPProduct = minp,
                WAP = wap
            };
        })
               .Where(p => p != null)
               .ToList());
    }
Esempio n. 20
0
        public IActionResult Create(ProductPurchase model)
        {
            var gateway = config.GetGateway();

            var request = new TransactionRequest
            {
                Amount             = Convert.ToDecimal(60),
                PaymentMethodNonce = model.Nonce,
                Customer           = new CustomerRequest //Adds customer since they have not booked before
                {
                    FirstName = model.FirstName,
                    LastName  = model.LastName,
                    Email     = model.Email,
                    Phone     = model.PhoneNumber,
                    Id        = model.userid
                },
                Options = new TransactionOptionsRequest
                {
                    SubmitForSettlement = true
                },
                BillingAddress = new AddressRequest
                {
                    FirstName       = model.FirstName,
                    LastName        = model.LastName,
                    StreetAddress   = model.AddressLine1,
                    ExtendedAddress = model.AddressLine2,
                    Locality        = model.City,
                    PostalCode      = model.PostCode
                },
            };

            //request.LineItems = cart.CartItems.Select(x => new Braintree.TransactionLineItemRequest
            //{
            //    Name = x.Product.Name,
            //    Description = x.Product.Description,
            //    ProductCode = x.ProductID.ToString(),
            //    Quantity = x.Quantity,
            //    UnitAmount = x.Product.Price,
            //    TotalAmount = x.Product.Price * x.Quantity,
            //    LineItemKind = Braintree.TransactionLineItemKind.DEBIT
            //}).ToArray();
            Result <Transaction> result = gateway.Transaction.Sale(request);

            if (result.IsSuccess())
            {
                //EmailDetails(newReservation).Wait();

                return(View("Success"));
            }
            return(View("Failure"));
        }
        // GET: ProductPurchases/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProductPurchase productPurchase = db.ProductPurchases.Find(id);

            if (productPurchase == null)
            {
                return(HttpNotFound());
            }
            return(View(productPurchase));
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            CollectionViewSource productPurchasesViewSource = ((CollectionViewSource)
                                                               (FindResource("ProductPurchasesViewSource")));

            CurrentPurchase = new ProductPurchase
            {
                Product      = CurrentProduct,
                PurchaseDate = DateTime.Now,
            };
            productPurchasesViewSource.Source = new List <ProductPurchase> {
                CurrentPurchase
            };
        }
        // GET: ProductPurchases/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProductPurchase productPurchase = db.ProductPurchases.Find(id);

            if (productPurchase == null)
            {
                return(HttpNotFound());
            }
            ViewBag.SupplierID = new SelectList(db.Suppliers, "SupplierID", "SuppilerName", productPurchase.SupplierID);
            return(View(productPurchase));
        }
Esempio n. 24
0
        public async Task <IActionResult> Create([Bind("ProductPurchaseId,BatchNumber,Comment,Cost,DateTime,Expiry,LocationId,ProductId,SupplierId,Timestamp,VersionNumber,Volume")] ProductPurchase val)
        {
            this.FixNullFields(val);
            if (ModelState.IsValid)
            {
                _context.Add(val);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["LocationId"] = new SelectList(_context.Location, "LocationId", "Name", val.LocationId);
            ViewData["ProductId"]  = new SelectList(_context.Product, "ProductId", "Description", val.ProductId);
            ViewData["SupplierId"] = new SelectList(_context.Contact, "ContactId", "Name", val.SupplierId);
            return(View(val));
        }
Esempio n. 25
0
        public async Task <IActionResult> Create([Bind("ProductPurchaseId,InWardNo,InWardDate,PurchaseDate,InvoiceNo,TotalQty,TotalBasicAmount,ShippingCost,TotalTax,TotalAmount,Remarks,SupplierID,IsPaid")] ProductPurchase productPurchase)
        {
            if (ModelState.IsValid)
            {
                HelperUtil.IsSessionSet(HttpContext);
                int storeid = HelperUtil.GetStoreID(HttpContext);
                productPurchase.StoreId = storeid;
                _context.Add(productPurchase);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["SupplierID"] = new SelectList(_context.Suppliers, "SupplierID", "SuppilerName", productPurchase.SupplierID);
            return(PartialView(productPurchase));
        }
Esempio n. 26
0
        public static void EvaluateModel(MLContext mlContext, IDataView testDataView, ITransformer model)
        {
            Console.WriteLine("=============== Evaluating the model ===============");
            var prediction = model.Transform(testDataView);
            var metrics    = mlContext.Regression.Evaluate(prediction);

            var predictionEngine = mlContext.Model.CreatePredictionEngine <ProductPurchase, ProductPurchasePrediction>(model);

            var testInput = new ProductPurchase {
                userId = 1, productId = 100
            };

            var productPrediction = predictionEngine.Predict(testInput);

            Console.WriteLine(productPrediction);
        }
Esempio n. 27
0
        // GET: ProductPurchases/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ProductPurchase productPurchase = db.ProductPurchase.Find(id);

            if (productPurchase == null)
            {
                return(HttpNotFound());
            }
            ViewBag.Id_LatePayment = new SelectList(db.LatePayment, "Id", "TypeIncrement", productPurchase.Id_LatePayment);
            ViewBag.Id_User        = new SelectList(db.Users, "Id", "Credentials", productPurchase.Id_User);
            return(View(productPurchase));
        }
        public void AddOrder(ProductPurchase purchase, int notificationAttempts)
        {
            if (this.PurchaseHistory == null)
            {
                this.PurchaseHistory = new List<PurchaseTag>();
            }

            this.PurchaseHistory.Add(new PurchaseTag {Date = purchase.Timestamp, Quantity = purchase.Quantity});

            if (purchase.Timestamp > this.LastOrderTimestamp)
            {
                this.LastStockCount = purchase.StockLeft;
                this.NotificationCounter = notificationAttempts;
                this.LastOrderTimestamp = purchase.Timestamp;
            }
        }
Esempio n. 29
0
        public void AddOrder(ProductPurchase purchase, int notificationAttempts)
        {
            if (this.PurchaseHistory == null)
            {
                this.PurchaseHistory = new List <PurchaseTag>();
            }

            this.PurchaseHistory.Add(new PurchaseTag {
                Date = purchase.Timestamp, Quantity = purchase.Quantity
            });

            if (purchase.Timestamp > this.LastOrderTimestamp)
            {
                this.LastStockCount      = purchase.StockLeft;
                this.NotificationCounter = notificationAttempts;
                this.LastOrderTimestamp  = purchase.Timestamp;
            }
        }
Esempio n. 30
0
        public async Task <IActionResult> Orders(string id)
        {
            var user = await this.userManager.GetUserAsync(User);

            var product = await this.db.Products.FirstOrDefaultAsync(p => p.Id.Equals(id));

            var purchase = new Purchase
            {
                OrderDate = DateTime.Now, User = user, UserId = user.Id, IsBought = false
            };

            var productPurchase = new ProductPurchase()
            {
                PurchaseId = purchase.Id,
                Purchase   = purchase,
                ProductId  = product.Id,
                Product    = product,
            };

            this.db.ProductsPurchases.Add(productPurchase);

            purchase.TotalOrderPrice = productPurchase.Product.Price;

            var autoShippingPurchase = new AutoShippingPurchase()
            {
                InitialOrderDate = purchase.OrderDate,
                CustomerId       = user.Id,
                Customer         = user
            };

            autoShippingPurchase.NextReorderDispatchDate = autoShippingPurchase.InitialOrderDate.AddDays(31);

            autoShippingPurchase.ProductPurchases.Add
                (productPurchase);

            autoShippingPurchase.TotalOrderPrice = product.Price;

            this.db.SubscribedPurchases.Add(autoShippingPurchase);

            await this.db.SaveChangesAsync();

            return(await Task.Run(() => this.RedirectToAction("Orders")));
        }
Esempio n. 31
0
        public void SubscriptionCalculatesCostCorrectly_WithAlteredCostPurchases()
        {
            _subscription.ProductsPurchased.Add(SubscriptionHelper.GetPurchase(_subscription, 1, _now.AddDays(1), price: 10));
            _subscription.ProductsPurchased.Add(SubscriptionHelper.GetPurchase(_subscription, 1, _now.AddDays(2), price: 15));
            _subscription.ProductsPurchased.Add(SubscriptionHelper.GetPurchase(_subscription, 1, _now.AddDays(4), price: 22.5f));
            _subscription.ProductsPurchased.Add(SubscriptionHelper.GetPurchase(_subscription, 1, _now.AddDays(-20), price: 100));
            _subscription.ProductsPurchased.Add(SubscriptionHelper.GetPurchase(_subscription, 1, _now.AddDays(1000), price: 0));

            var product = new Product {
                DurationMonths = 1, PriceUSD = 100, TaxUSD = 100
            };
            var purchase = new ProductPurchase(product, _subscription);

            _subscription.ProductsPurchased.Add(purchase);
            Assert.AreEqual(10 + 15 + 22.5f + 100 + 100, _subscription.TotalPurchaseCostUSD);

            product.PriceUSD = 50;
            Assert.AreEqual(10 + 15 + 22.5f + 100 + 100, _subscription.TotalPurchaseCostUSD);
        }