示例#1
0
        public void OrderManager_InvalidOrder_Guest_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);

            string storeName = GetStoreName();
            // setup test
            StoreContactDetails details = new StoreContactDetails(storeName, "*****@*****.**", "location", "222", "222", "bank", "cool store");

            Store s = storeHandler.OpenStore(details, Owner, context);

            string itemName = "testItemD";
            Item   item     = s.AddItem(itemName, 2, new HashSet <string>()
            {
                "CategoryA"
            }, 1.22, context);

            Dictionary <Guid, StoreCart> shoppingCart = new Dictionary <Guid, StoreCart>();
            StoreCart cart = new StoreCart(s.Id);

            cart.AddToStoreCart(item.Id, 1);
            shoppingCart.Add(s.Id, cart);

            Order order = null;

            Assert.DoesNotThrow(() => order = orderManager.DiscountAndReserve(GetGuestId(), shoppingCart, context));
            Assert.IsNotNull(order);
            order.Status = OrderStatus.DELIVERED;
            orderManager.LogOrder(order.userKey, order.OrderId, context);
            Assert.AreEqual(orderManager.GetStoreOrdersHistory(s.Id, context).Count, 1);
        }
示例#2
0
        static void Main(string[] args)
        {
            //bronze card
            ICart      bronzeShopCart   = new StoreCart();
            IItem      remote           = new Item("LG", 150);
            CardHolder cardHolderBronze = new CardHolder("Anthony", "Hopkins");

            bronzeShopCart.AddItem(remote);
            IDiscountCard bronzeCard = new BronzeCard(0, cardHolderBronze);
            string        billBronze = CashDesk.Pay(bronzeShopCart, bronzeCard);

            Console.WriteLine(billBronze + Environment.NewLine);
            //silver card
            ICart silverShopCart = new StoreCart();
            IItem playStation    = new Item("PlayStation 5", 850);

            silverShopCart.AddItem(playStation);
            CardHolder    cardHolderSilver = new CardHolder("Jake", "Gyllenhaal");
            IDiscountCard silverCard       = new SilverCard(600, cardHolderSilver);
            string        billSilver       = CashDesk.Pay(silverShopCart, silverCard);

            Console.WriteLine(billSilver + Environment.NewLine);
            //gold car
            ICart goldShopCart = new StoreCart();

            goldShopCart.AddItem(new Item("Toy", 300));
            goldShopCart.AddItem(new Item("Cooker", 700));
            goldShopCart.AddItem(new Item("Pack-man", 300));
            CardHolder    cardHolderGold = new CardHolder("Christian", "Bale");
            IDiscountCard goldenCard     = new GoldCard(1300, cardHolderGold);
            string        billGold       = CashDesk.Pay(goldShopCart, goldenCard);

            Console.WriteLine(billGold + Environment.NewLine);
            Console.ReadLine();
        }
示例#3
0
        private void CheckInventory(StoreCart storeCart, MarketDbContext context)
        {
            Guid storeID = storeCart.StoreID;
            IStoreInventoryManager store = StoreHandler.GetStoreInventoryManager(storeID, context);

            store.IsOrderItemsAmountAvailable(storeCart.Items, context);
        }
示例#4
0
        public void OrderManager_ValidOrder_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);

            string storeName = GetStoreName();
            // setup test
            StoreContactDetails details = new StoreContactDetails(storeName, "*****@*****.**", "location", "222", "222", "bank", "cool store");

            storeHandler.OpenStore(details, Owner, context);
            Store s = storeHandler.Stores(context).Where(s => s.ContactDetails.Name.Equals(storeName, StringComparison.InvariantCultureIgnoreCase)).First();

            string itemName = "testItemD";
            Item   item     = s.AddItem(itemName, 2, new HashSet <string>()
            {
                "CategoryA"
            }, 1.22, context);

            Dictionary <Guid, StoreCart> shoppingCart = new Dictionary <Guid, StoreCart>();
            StoreCart cart = new StoreCart(s.Id);

            cart.AddToStoreCart(item.Id, 1);
            shoppingCart.Add(s.Id, cart);

            // test
            Order order = null;

            Assert.DoesNotThrow(() => order = orderManager.DiscountAndReserve(Buyer1, shoppingCart, context));
            Assert.IsNotNull(order);
            order.Status = OrderStatus.DELIVERED;
            Assert.DoesNotThrow(() => orderManager.LogOrder(order.UserId, order.OrderId, context));
        }
示例#5
0
        public void OrderManager_Delivery_Guest_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);

            string storeName = GetStoreName();
            // setup test
            StoreContactDetails details = new StoreContactDetails(storeName, "*****@*****.**", "location", "222", "222", "bank", "cool store");

            storeHandler.OpenStore(details, Owner, context);
            Store s = storeHandler.Stores(context).Where(s => s.ContactDetails.Name.Equals(storeName, StringComparison.InvariantCultureIgnoreCase)).First();

            string itemName = "testItemD";
            Item   item     = s.AddItem(itemName, 2, new HashSet <string>()
            {
                "CategoryA"
            }, 1.22, context);

            Dictionary <Guid, StoreCart> shoppingCart = new Dictionary <Guid, StoreCart>();
            StoreCart cart = new StoreCart(s.Id);

            cart.AddToStoreCart(item.Id, 1);
            shoppingCart.Add(s.Id, cart);

            DeliveryReal realDelivery = new DeliveryReal(new HttpClient());

            orderManager.Delivery.Real = realDelivery;
            Order order = null;

            Assert.DoesNotThrow(() => order = orderManager.DiscountAndReserve(GetGuestId(), shoppingCart, context));
            Assert.IsNotNull(order);
            order.Status = OrderStatus.PAYED_FOR;
            Assert.DoesNotThrow(() => orderManager.ScheduleDelivery(order.userKey, order.OrderId, "address", "city", "country", "22222", "name", context));
        }
示例#6
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            services.AddDbContext <ApplicationDbContext>(options =>
                                                         options.UseSqlServer(
                                                             Configuration.GetConnectionString("DefaultConnection")));

            //services.AddDefaultIdentity<IdentityUser>(options =>
            services.AddDefaultIdentity <ApplicationUser>(options =>
            {
                options.Password.RequiredLength = 8;
            })
            .AddDefaultUI(UIFramework.Bootstrap4)
            .AddEntityFrameworkStores <ApplicationDbContext>();

            services.AddTransient <IBook, BookRepository>();
            services.AddTransient <IOrderRepository, OrderRepository>();
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            services.AddScoped(sp => StoreCart.GetCart(sp));

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
            services.AddSession();
        }
示例#7
0
        public void OrderManager_Payment_Guest_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);

            string storeName = GetStoreName();
            // setup test
            StoreContactDetails details = new StoreContactDetails(storeName, "*****@*****.**", "location", "222", "222", "bank", "cool store");

            storeHandler.OpenStore(details, Owner, context);
            Store s = storeHandler.Stores(context).Where(s => s.ContactDetails.Name.Equals(storeName, StringComparison.InvariantCultureIgnoreCase)).First();

            string itemName = "testItemD";
            Item   item     = s.AddItem(itemName, 2, new HashSet <string>()
            {
                "CategoryA"
            }, 1.22, context, keyWords: new HashSet <string>()
            {
                "test"
            });

            Dictionary <Guid, StoreCart> shoppingCart = new Dictionary <Guid, StoreCart>();
            StoreCart cart = new StoreCart(s.Id);

            cart.AddToStoreCart(item.Id, 1);
            shoppingCart.Add(s.Id, cart);

            PaymentReal realPayment = new PaymentReal(new System.Net.Http.HttpClient());

            orderManager.Payment.Real = realPayment;
            Order order = null;

            Assert.DoesNotThrow(() => order = orderManager.DiscountAndReserve(GetGuestId(), shoppingCart, context));
            Assert.IsNotNull(order);
            Assert.DoesNotThrow(() => orderManager.CollectPayment(order.userKey, order.OrderId, "1111222233334444", "12/2021", "111", "name", "222333231", context));
        }
示例#8
0
        public JsonResult ChangeQuantity(int Id, int Quantity, int?CartId)
        {
            int             adminId   = AuthorityHelper.OperatorId ?? 0;
            OperationResult oper      = new OperationResult(OperationResultType.Error, "更新失败");
            var             query     = _storeCartContract.StoreCarts.Where(x => x.IsDeleted == false && x.IsEnabled == true && x.IsOrder == false);
            StoreCart       storeCart = null;

            if (CartId.HasValue)
            {
                storeCart = query.FirstOrDefault(f => f.Id == CartId);
            }
            else
            {
                storeCart = query.FirstOrDefault(x => x.PurchaserId == adminId);
            }
            if (storeCart != null)
            {
                StoreCartItem storeCartItem = storeCart.StoreCartItems.FirstOrDefault(x => x.IsDeleted == false && x.IsEnabled == true && x.Id == Id);
                if (storeCartItem != null)
                {
                    storeCartItem.Quantity    = Quantity;
                    storeCartItem.UpdatedTime = DateTime.Now;
                    storeCartItem.OperatorId  = adminId;
                    oper = _storeCartItemContract.Update(storeCartItem);
                }
            }
            else
            {
                oper.Message = "购物车不存在";
            }
            return(Json(oper));
        }
示例#9
0
 public StoreCartController(IAllPhones phoneRepository, IAllUsers userRepository, StoreCart storeCart, AppDBContext context)
 {
     _phoneRep  = phoneRepository;
     _storeCart = storeCart;
     _userRep   = userRepository;
     db         = context;
 }
示例#10
0
 public OrdersController(IOrderRepository orderRepository, StoreCart shoppingCart, UserManager <ApplicationUser> user, ApplicationDbContext dbContext)
 {
     _orderRepository = orderRepository;
     _shoppingCart    = shoppingCart;
     _userManager     = user;
     _context         = dbContext;
 }
        public JsonResult OrderCartStaInfo(int?CartId)
        {
            float allPieceCount, AllTagPrice, allBigCount, allBigCountReal;

            allPieceCount = AllTagPrice = allBigCount = allBigCountReal = 0;
            try
            {
                StoreCart storeCart = new StoreCart();
                var       query     = _storeCartContract.StoreCarts.Where(x => x.IsDeleted == false && x.IsEnabled == true && x.IsOrder == false);
                if (CartId.HasValue)
                {
                    storeCart = query.FirstOrDefault(f => f.Id == CartId);
                }
                if (storeCart.IsNotNull())
                {
                    var items = storeCart.StoreCartItems.Where(w => w.IsEnabled && !w.IsDeleted && w.ParentId == null).SelectMany(s => s.StoreCartItems.Where(w => w.IsEnabled && !w.IsDeleted)).ToList();
                    allPieceCount   = items.Sum(s => s.Quantity);
                    AllTagPrice     = items.Sum(s => s.Quantity * s.Product.ProductOriginNumber.TagPrice);
                    allBigCountReal = items.GroupBy(g => g.ParentId).Count();                                                         //有商品的总款数
                    allBigCount     = storeCart.StoreCartItems.Where(w => w.IsEnabled && !w.IsDeleted && w.ParentId == null).Count(); //总款数
                }
            }
            catch { }
            var rdata = new
            {
                allPieceCount   = allPieceCount,
                AllTagPrice     = AllTagPrice,
                allBigCount     = allBigCount,
                allBigCountReal = allBigCountReal,
            };

            return(Json(new OperationResult(OperationResultType.Success, "", rdata), JsonRequestBehavior.AllowGet));
        }
示例#12
0
        public void OrderManager_ValidOrder_TooManyItems_ShouldFail()
        {
            using var context = new MarketDbContext(inMemoryConnection);

            string storeName = GetStoreName();

            // setup test
            StoreContactDetails details = new StoreContactDetails(storeName, "*****@*****.**", "location", "222", "222", "bank", "cool store");

            storeHandler.OpenStore(details, Owner, context);
            Store s = storeHandler.Stores(context).Where(s => s.ContactDetails.Name.Equals(storeName, StringComparison.InvariantCultureIgnoreCase)).First();

            string itemName = "testItemC";
            Item   item     = s.AddItem(itemName, 1, new HashSet <string>()
            {
                "CategoryA"
            }, 1.22, context);

            Dictionary <Guid, StoreCart> shoppingCart = new Dictionary <Guid, StoreCart>();
            StoreCart cart = new StoreCart(s.Id);

            cart.AddToStoreCart(item.Id, 3);
            shoppingCart.Add(s.Id, cart);

            // test
            Assert.Throws <ItemAmountException>(() => orderManager.DiscountAndReserve(Buyer1, shoppingCart, context));
        }
示例#13
0
        public void OrderManager_StoreHistory_TwoStores_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);

            string storeName1 = GetStoreName();
            string storeName2 = GetStoreName();

            // setup test
            StoreContactDetails details1 = new StoreContactDetails(storeName1, "*****@*****.**", "location", "222", "222", "bank", "cool store");
            StoreContactDetails details2 = new StoreContactDetails(storeName2, "*****@*****.**", "location", "222", "222", "bank", "very cool store");

            storeHandler.OpenStore(details1, Owner, context);
            storeHandler.OpenStore(details2, Owner, context);

            Store store1 = storeHandler.Stores(context).Where(s => s.ContactDetails.Name.Equals(storeName1, StringComparison.InvariantCultureIgnoreCase)).First();
            Store store2 = storeHandler.Stores(context).Where(s => s.ContactDetails.Name.Equals(storeName2, StringComparison.InvariantCultureIgnoreCase)).First();

            string itemName1 = "testItemD";
            string itemName2 = "testItemE";

            Item item1 = store1.AddItem(itemName1, 2, new HashSet <string>()
            {
                "CategoryA"
            }, 1.22, context);
            Item item2 = store2.AddItem(itemName2, 2, new HashSet <string>()
            {
                "CategoryA"
            }, 1.22, context);

            Dictionary <Guid, StoreCart> shoppingCart = new Dictionary <Guid, StoreCart>();
            StoreCart cart1 = new StoreCart(store1.Id);

            cart1.AddToStoreCart(item1.Id, 1);
            shoppingCart.Add(store1.Id, cart1);

            StoreCart cart2 = new StoreCart(store2.Id);

            cart2.AddToStoreCart(item2.Id, 1);
            shoppingCart.Add(store2.Id, cart2);
            // test
            Order order = null;

            Assert.DoesNotThrow(() => order = orderManager.DiscountAndReserve(Buyer1, shoppingCart, context));
            Assert.IsNotNull(order);
            order.Status = OrderStatus.DELIVERED;
            Assert.DoesNotThrow(() => orderManager.LogOrder(order.UserId, order.OrderId, context));

            List <StoreOrder> storeHistory1 = orderManager.GetStoreOrdersHistory(store1.Id, context);

            Assert.AreEqual(1, storeHistory1.Count());
            Assert.AreEqual(storeHistory1[0].OrderItemsDict[item1.Id].Name, itemName1);
            Assert.AreEqual(storeHistory1[0].StoreId, store1.Id);

            List <StoreOrder> storeHistory2 = orderManager.GetStoreOrdersHistory(store2.Id, context);

            Assert.AreEqual(1, storeHistory2.Count());
            Assert.AreEqual(storeHistory2[0].OrderItemsDict[item2.Id].Name, itemName2);
            Assert.AreEqual(storeHistory2[0].StoreId, store2.Id);
        }
示例#14
0
        internal override bool IsValidPurchase(StoreCart cart)
        {
            int totalItems = 0;

            foreach (KeyValuePair <Guid, int> itemAmount in cart.Items)
            {
                totalItems = totalItems + itemAmount.Value;
            }
            return(isBetweenMinMax(totalItems));
        }
示例#15
0
 internal override bool IsValidPurchase(StoreCart cart)
 {
     foreach (KeyValuePair <Guid, int> itemAmount in cart.Items)
     {
         if (ItemID.Equals(itemAmount.Key))
         {
             return(isBetweenMinMax(itemAmount.Value));
         }
     }
     return(true);
 }
示例#16
0
        /// <summary>
        /// 初始化一键下单界面
        /// </summary>
        /// <returns></returns>
        public ActionResult AddPurchase()
        {
            StoreCart storeCart = _storeCartContract.StoreCarts.Where(x => x.IsDeleted == false && x.IsEnabled == true && x.IsOrder == false)
                                  .FirstOrDefault(x => x.PurchaserId == AuthorityHelper.OperatorId);
            var allPrice = storeCart?.StoreCartItems.Where(w => w.IsEnabled && !w.IsDeleted)?.Sum(s => s.Quantity * s.Product?.ProductOriginNumber?.PurchasePrice ?? 0) ?? 0;

            ViewBag.AllPrice = allPrice;

            ViewBag.StoreTypes = CacheAccess.GetStoreType(_storeTypeContract, true);

            return(PartialView());
        }
        private void updateMultiply(MyViewHolder myViewHolder, StoreCart tempMap)
        {
            float items = tempMap.Quantity;

            myViewHolder.txtQuan.Text = "" + int.Parse(items.ToString());
            myViewHolder.pPrice.Text  = "" + myViewHolder.price * items;

            var totalAmount = (from data in list select data).Sum(x => x.SelRate * x.Quantity);

            CartFragment.tv_total.Text = (activity.Resources.GetString(Resource.String.currency) + " " + totalAmount);
            updateintent();
        }
示例#18
0
        public void OrderManager_ReviewPending_Timeout_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);

            string storeName1 = GetStoreName();
            string storeName2 = GetStoreName();

            // setup test
            StoreContactDetails details1 = new StoreContactDetails(storeName1, "*****@*****.**", "location", "222", "222", "bank", "cool store");
            StoreContactDetails details2 = new StoreContactDetails(storeName2, "*****@*****.**", "location", "222", "222", "bank", "very cool store");

            storeHandler.OpenStore(details1, Owner, context);
            storeHandler.OpenStore(details2, Owner, context);

            Store store1 = storeHandler.Stores(context).Where(s => s.ContactDetails.Name.Equals(storeName1, StringComparison.InvariantCultureIgnoreCase)).First();
            Store store2 = storeHandler.Stores(context).Where(s => s.ContactDetails.Name.Equals(storeName2, StringComparison.InvariantCultureIgnoreCase)).First();

            string itemName1 = "testItemD";
            string itemName2 = "testItemE";

            Item item1 = store1.AddItem(itemName1, 2, new HashSet <string>()
            {
                "CategoryA"
            }, 1.22, context);
            Item item2 = store2.AddItem(itemName2, 2, new HashSet <string>()
            {
                "CategoryA"
            }, 1.22, context);

            Dictionary <Guid, StoreCart> shoppingCart = new Dictionary <Guid, StoreCart>();
            StoreCart cart1 = new StoreCart(store1.Id);

            cart1.AddToStoreCart(item1.Id, 2);
            shoppingCart.Add(store1.Id, cart1);

            StoreCart cart2 = new StoreCart(store2.Id);

            cart2.AddToStoreCart(item2.Id, 2);
            shoppingCart.Add(store2.Id, cart2);
            // test
            Order order = null;

            Assert.DoesNotThrow(() => order = orderManager.DiscountAndReserve(Buyer1, shoppingCart, context));
            Assert.IsNotNull(order);
            Assert.Throws <ItemAmountException>(() => orderManager.DiscountAndReserve(Buyer1, shoppingCart, context));
            context.SaveChanges();
            context.Dispose();

            Thread.Sleep(1000 * 60 * 4);// sleep max time for delete

            using var context2 = new MarketDbContext(inMemoryConnection);
            Assert.DoesNotThrow(() => order = orderManager.DiscountAndReserve(Buyer1, shoppingCart, context2));
        }
示例#19
0
        public void OrderManager_ValidOrder_StoreNotFound_ShouldFail()
        {
            using var context = new MarketDbContext(inMemoryConnection);

            Dictionary <Guid, StoreCart> shoppingCart = new Dictionary <Guid, StoreCart>();
            StoreCart cart = new StoreCart(Guid.NewGuid());

            cart.AddToStoreCart(Guid.NewGuid(), 1);
            shoppingCart.Add(Guid.NewGuid(), cart);

            // test
            Assert.Throws <StoreNotFoundException>(() => orderManager.DiscountAndReserve(Buyer1, shoppingCart, context));
        }
示例#20
0
 public void Setup()
 {
     Item1      = Guid.NewGuid();
     Item3      = Guid.NewGuid();
     Item2      = Guid.NewGuid();
     cart1With5 = new StoreCart(MOCK_GUID_FOR_STORE);
     cart1With5.AddToStoreCart(Item1, 5);
     cart2With5 = new StoreCart(MOCK_GUID_FOR_STORE);
     cart2With5.AddToStoreCart(Item2, 5);
     multyItemsAmount10 = new StoreCart(MOCK_GUID_FOR_STORE);
     multyItemsAmount10.AddToStoreCart(Item1, 2);
     multyItemsAmount10.AddToStoreCart(Item2, 3);
     multyItemsAmount10.AddToStoreCart(Item3, 5);
 }
示例#21
0
        public void OrderManager_ValidOrder_TwoStores_TwoShoppingCarts_OneDoesntHaveEnoughItems_ShuoldFail()
        {
            using var context = new MarketDbContext(inMemoryConnection);

            string storeName1 = GetStoreName();
            string storeName2 = GetStoreName();

            // setup test
            StoreContactDetails details1 = new StoreContactDetails(storeName1, "*****@*****.**", "location", "222", "222", "bank", "cool store");
            StoreContactDetails details2 = new StoreContactDetails(storeName2, "*****@*****.**", "location", "222", "222", "bank", "very cool store");

            storeHandler.OpenStore(details1, Owner, context);
            storeHandler.OpenStore(details2, Owner, context);

            Store store1 = storeHandler.Stores(context).Where(s => s.ContactDetails.Name.Equals(storeName1, StringComparison.InvariantCultureIgnoreCase)).First();
            Store store2 = storeHandler.Stores(context).Where(s => s.ContactDetails.Name.Equals(storeName2, StringComparison.InvariantCultureIgnoreCase)).First();

            string itemName1 = "testItemD";
            string itemName2 = "testItemE";

            Item item1 = store1.AddItem(itemName1, 2, new HashSet <string>()
            {
                "CategoryA"
            }, 1.22, context);
            Item item2 = store2.AddItem(itemName2, 0, new HashSet <string>()
            {
                "CategoryA"
            }, 1.22, context);

            Dictionary <Guid, StoreCart> shoppingCart1 = new Dictionary <Guid, StoreCart>();
            StoreCart cart1 = new StoreCart(store1.Id);

            cart1.AddToStoreCart(item1.Id, 1);
            shoppingCart1.Add(store1.Id, cart1);

            Dictionary <Guid, StoreCart> shoppingCart2 = new Dictionary <Guid, StoreCart>();
            StoreCart cart2 = new StoreCart(store2.Id);

            cart2.AddToStoreCart(item2.Id, 1);
            shoppingCart2.Add(store2.Id, cart2);

            // test
            Order order = null;

            Assert.DoesNotThrow(() => order = orderManager.DiscountAndReserve(Buyer1, shoppingCart1, context));
            Assert.IsNotNull(order);
            order.Status = OrderStatus.DELIVERED;
            Assert.DoesNotThrow(() => orderManager.LogOrder(order.UserId, order.OrderId, context));
            Assert.Throws <ItemAmountException>(() => orderManager.DiscountAndReserve(Buyer1, shoppingCart2, context));
        }
示例#22
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <AppDBContent>(optins =>
                                                 optins.UseSqlServer(_confString.GetConnectionString("DefaultConnection")));
            services.AddTransient <IAllBooks, BookRepository>();
            services.AddTransient <IBooksCategory, CategoryRepository>();
            services.AddTransient <IAllOrders, OrdersRepository>();

            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            services.AddScoped(sp => StoreCart.GetCart(sp));

            services.AddMvc(option => option.EnableEndpointRouting = false);

            services.AddMemoryCache();
            services.AddSession();
        }
示例#23
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddAuthentication().AddGoogle(googleOptions =>
            {
                googleOptions.ClientId     = Configuration["Authentication:Google:ClientId"];
                googleOptions.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
            });


            services.AddDbContext <AppDBInfo>(options => options.UseSqlServer(_configStr.GetConnectionString("DefaultConnection")));
            services.AddMemoryCache();
            services.AddSession();
            services.AddMvc();
            services.AddTransient <IProduct, ProductRepos>();
            services.AddTransient <IProductCategory, CategoryRepos>();
            services.AddTransient <IAllOrders, OrderRepos>();

            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();

            // Several cart for different users
            services.AddScoped(sc => StoreCart.storeCart(sc));
        }
示例#24
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext <AppDBContext>(option => option.UseSqlServer(_confsting.GetConnectionString("DefaultConnection")));
            services.AddTransient <IAllPhones, PhoneRepository>();
            services.AddTransient <IPhonesCategory, CategoryRepository>();
            services.AddTransient <IAllUsers, UserRepository>();


            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            ;

            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
            .AddCookie(options =>     //CookieAuthenticationOptions
            {
                options.LoginPath = new Microsoft.AspNetCore.Http.PathString("/Account/Login");
            });


            services.AddScoped(sp => StoreCart.GetCart(sp));
            services.AddMvc();
            services.AddMemoryCache();
            services.AddSession();
        }
示例#25
0
        internal override bool IsValidPurchase(StoreCart cart)
        {
            switch (Op)
            {
            case Operator.AND:
                return(PolicyLeft.IsValidPurchase(cart) && PolicyRight.IsValidPurchase(cart));

            case Operator.OR:
                return(PolicyLeft.IsValidPurchase(cart) || PolicyRight.IsValidPurchase(cart));

            case Operator.XOR:
                if (PolicyLeft.IsValidPurchase(cart))
                {
                    return(!PolicyRight.IsValidPurchase(cart));
                }
                else
                {
                    return(PolicyRight.IsValidPurchase(cart));
                }

            default:
                throw new NotSupportedException();
            }
        }
        public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
        {
            MyViewHolder myViewHolder = holder as MyViewHolder;
            StoreCart    map          = new StoreCart();

            map = list[position];
            byte[] imageByteArray = map.ItemImage != null?Base64.Decode(map.ItemImage, Base64Flags.Default) : null;

            myViewHolder.prodNAme.Text = map.ItemMastId;

            string items  = map.Quantity.ToString();
            string sprice = map.SelRate.ToString("0.##");

            myViewHolder.price       = float.Parse(sprice);
            myViewHolder.pPrice.Text = "" + (decimal.Parse(sprice) * decimal.Parse(items)).ToString("0.##");
            var totalAmount = (from data in list select data).Sum(x => x.SelRate * x.Quantity);

            CartFragment.tv_total.Text   = activity.Resources.GetString(Resource.String.currency) + " " + totalAmount.ToString("0.##");
            myViewHolder.txtQuan.Text    = items.ToString();
            myViewHolder.minteger        = float.Parse(items);
            myViewHolder.pQuan.Text      = map.Quantity.ToString();
            myViewHolder.pMrp.Visibility = ViewStates.Gone;
            myViewHolder.pMrp.Text       = "";
            myViewHolder.pMrp.PaintFlags = (myViewHolder.pMrp.PaintFlags | Android.Graphics.PaintFlags.StrikeThruText);

            myViewHolder.btn_Add.Click += delegate
            {
                myViewHolder.btn_Add.Visibility    = ViewStates.Gone;
                myViewHolder.ll_addQuan.Visibility = ViewStates.Visible;

                float  items  = map.Quantity;
                float  price  = float.Parse(sprice);
                double reward = double.Parse("0.00");
                myViewHolder.pPrice.Text = "" + price * items;
                updateintent();
            };

            myViewHolder.txt_close.Click += async delegate
            {
                if (list.Count > 0)
                {
                    var itemMasterId = list[position].ID;

                    var deleteURI = BaseURL.DeleteCartItem + itemMasterId;

                    using (var client = new HttpClient())
                    {
                        StringContent content  = new StringContent("");
                        var           response = await client.PostAsync(deleteURI, content);

                        if (response.StatusCode == HttpStatusCode.OK)
                        {
                            Toast.MakeText(activity, "Delete successfully", ToastLength.Short);
                        }
                    }
                    list.RemoveAt(position);
                }
                var totalAmount = (from data in list select data).Sum(x => x.SelRate * x.Quantity);
                CartFragment.tv_total.Text = activity.Resources.GetString(Resource.String.currency) + " " + totalAmount;


                if (list.Count == 0)
                {
                    CartFragment.noData.Visibility   = ViewStates.Visible;
                    CartFragment.viewCart.Visibility = ViewStates.Gone;
                }
                CartFragment.totalItems.Text = "" + list.Count() + "  Total Items:";
                NotifyDataSetChanged();
                updateintent();
            };

            myViewHolder.plus.Click += delegate
            {
                increaseInteger(myViewHolder);
                updateMultiply(myViewHolder, map);
            };

            myViewHolder.minus.Click += delegate
            {
                decreaseInteger(myViewHolder);
                updateMultiply(myViewHolder, map);
            };


            Glide.With(activity)
            .Load(imageByteArray)
            .Apply(RequestOptions.CircleCropTransform())
            .Into(myViewHolder.image);
        }
示例#27
0
 internal abstract bool IsValidPurchase(StoreCart cart);
示例#28
0
        public void OrderManager_UserHistory_2UsersSameStore_ShouldPass()
        {
            using var context = new MarketDbContext(inMemoryConnection);

            string storeName = GetStoreName();
            // setup test
            StoreContactDetails details = new StoreContactDetails(storeName, "*****@*****.**", "location", "222", "222", "bank", "cool store");

            storeHandler.OpenStore(details, Owner, context);
            Store s = storeHandler.Stores(context).Where(s => s.ContactDetails.Name.Equals(storeName, StringComparison.InvariantCultureIgnoreCase)).First();

            string itemName = "testItemD";
            Item   item     = s.AddItem(itemName, 4, new HashSet <string>()
            {
                "CategoryA"
            }, 1.22, context);

            Dictionary <Guid, StoreCart> shoppingCart = new Dictionary <Guid, StoreCart>();
            StoreCart cart = new StoreCart(s.Id);

            cart.AddToStoreCart(item.Id, 1);
            shoppingCart.Add(s.Id, cart);

            // test
            Order order = null;

            Assert.DoesNotThrow(() => order = orderManager.DiscountAndReserve(Buyer1, shoppingCart, context));
            Assert.IsNotNull(order);
            order.Status = OrderStatus.DELIVERED;
            Assert.DoesNotThrow(() => orderManager.LogOrder(order.UserId, order.OrderId, context));

            order = null;
            Assert.DoesNotThrow(() => order = orderManager.DiscountAndReserve(Buyer2, shoppingCart, context));
            Assert.IsNotNull(order);
            order.Status = OrderStatus.DELIVERED;
            Assert.DoesNotThrow(() => orderManager.LogOrder(order.UserId, order.OrderId, context));

            List <Order> userHistory1 = orderManager.GetUserOrdersHistory(Buyer1, context);

            Assert.AreEqual(1, userHistory1.Count());
            Order orderHistory1 = userHistory1.First();

            Assert.AreEqual(orderHistory1.StoreOrdersDict.Count, 1);
            KeyValuePair <Guid, StoreOrder> orderedItemFromStore1 = orderHistory1.StoreOrdersDict.First();

            Assert.AreEqual(orderedItemFromStore1.Value.StoreOrderItems.Count, 1);
            OrderItem orderedItem1 = orderedItemFromStore1.Value.OrderItemsDict[item.Id];

            Assert.AreEqual(orderedItem1.ItemId, item.Id);

            List <Order> userHistory2 = orderManager.GetUserOrdersHistory(Buyer1, context);

            Assert.AreEqual(1, userHistory2.Count());
            Order orderHistory2 = userHistory2.First();

            Assert.AreEqual(orderHistory2.StoreOrdersDict.Count, 1);
            KeyValuePair <Guid, StoreOrder> orderedItemFromStore2 = orderHistory2.StoreOrdersDict.First();

            Assert.AreEqual(orderedItemFromStore2.Value.StoreOrderItems.Count, 1);
            OrderItem orderedItem2 = orderedItemFromStore2.Value.OrderItemsDict[item.Id];

            Assert.AreEqual(orderedItem2.ItemId, item.Id);
        }
示例#29
0
 public OrderController(IAllOrders allOrders, StoreCart storeCart)
 {
     this.allOrders = allOrders;
     this.storeCart = storeCart;
 }
示例#30
0
        /// <summary>
        /// 获取购物车数据
        /// </summary>
        /// <returns></returns>
        public async Task <ActionResult> OrderCartList(int?CartId)
        {
            GridRequest request = new GridRequest(Request);
            int         adminId = AuthorityHelper.OperatorId ?? 0;
            Expression <Func <StoreCartItem, bool> > predicate = FilterHelper.GetExpression <StoreCartItem>(request.FilterGroup);
            var data = await Task.Run(() =>
            {
                StoreCart storeCart = new StoreCart();
                var query           = _storeCartContract.StoreCarts.Where(x => x.IsDeleted == false && x.IsEnabled == true && x.IsOrder == false);
                if (CartId.HasValue)
                {
                    var mod = query.FirstOrDefault(f => f.Id == CartId);
                    if (mod.IsNotNull())
                    {
                        storeCart = mod;
                    }
                }
                else
                {
                    storeCart = query.FirstOrDefault(x => x.PurchaserId == adminId);
                }

                int count = 0;
                ICollection <StoreCartItem> listEntity = new List <StoreCartItem>();
                List <string> listNum = new List <string>();
                if (storeCart != null)
                {
                    listEntity = storeCart.StoreCartItems;
                }

                int pageIndex = request.PageCondition.PageIndex;
                int pageSize  = request.PageCondition.PageSize;
                List <StoreCartItem> parents = listEntity.Where(m => m.ParentId == null).AsQueryable()
                                               .Where <StoreCartItem, int>(predicate, request.PageCondition, out count).ToList();
                List <string> listNumber = parents.Select(x => x.BigProdNum).ToList();
                var listBigProdNumImgs   = _productOrigNumberContract.OrigNumbs.Where(x => x.IsDeleted == false && x.IsEnabled == true && listNumber.Any(k => k == x.BigProdNum) == true).Select(s => new { s.BigProdNum, s.ThumbnailPath }).ToList();

                Func <IEnumerable <StoreCartItem>, List <StoreCartItem> > getSoure = null;
                getSoure = (soure) =>
                {
                    var children = soure.OrderByDescending(x => x.CreatedTime);
                    List <StoreCartItem> listStoreCartItem = new List <StoreCartItem>();
                    foreach (var child in children)
                    {
                        listStoreCartItem.Add(child);
                        var childList = child.StoreCartItems;
                        listStoreCartItem.AddRange(getSoure(childList));
                    }
                    return(listStoreCartItem);
                };

                var list = (from m in getSoure(parents).AsQueryable().Where(predicate)
                            let bigProdNumAndImg = listBigProdNumImgs.FirstOrDefault(f => f.BigProdNum == m.BigProdNum)
                                                   let bigProdNumImg = bigProdNumAndImg != null ? bigProdNumAndImg.ThumbnailPath : ""
                                                                       let productImg = m.Product != null ? (m.Product.ThumbnailPath != null && m.Product.ThumbnailPath != "") ? m.Product.ThumbnailPath : bigProdNumImg : bigProdNumImg
                                                                                        select new
                {
                    ParentId = m.ParentId,
                    Id = m.Id.ToString(),
                    m.BigProdNum,
                    ProductNumber = m.ParentId == null ? "" : m.Product.ProductNumber,
                    ProductName = m.Product == null ? "" : m.Product.ProductOriginNumber.ProductName,
                    ThumbnailPath = m.Product == null ? bigProdNumImg : productImg,
                    ColorIconPath = m.ParentId == null ? "" : m.Product.Color.IconPath,
                    SizeName = m.ParentId == null ? "" : m.Product.Size.SizeName,
                    Quantity = m.Quantity,
                    Price = m.Product == null ? "" : (m.Product.ProductOriginNumber == null ? "" : m.Product.ProductOriginNumber.TagPrice.ToString())
                }).ToList();

                return(new GridData <object>(list, count, request.RequestInfo));
            });

            return(Json(data, JsonRequestBehavior.AllowGet));
        }