コード例 #1
0
        public LinkedList <UserCart> getShoppingCartBeforeCheckout(User session)
        {
            if (!(session.getState() is Guest))
            {
                products = UserCartsManager.getInstance().getUserShoppingCart(session.getUserName());
            }

            updateRegularPricesForCart(); // set all the regular prices for the cart - before discount
            foreach (UserCart uc in products)
            {
                Sale sale = SalesManager.getInstance().getSale(uc.getSaleId());
                LinkedList <Discount> discounts = DiscountsManager.getInstance().getAllDiscountsById(sale.ProductInStoreId);
                uc.PriceAfterDiscount = uc.Price;
                foreach (Discount d in discounts)
                {
                    if (fulfillTypeOfSaleRestriction(sale.TypeOfSale, d))
                    {
                        double dis          = uc.PriceAfterDiscount * (d.Percentage / 100);
                        double updatedPrice = uc.PriceAfterDiscount - dis;
                        uc.PriceAfterDiscount = updatedPrice;
                    }
                }
            }
            return(products);
        }
コード例 #2
0
        public int removeFromCart(User session, int saleId)
        {
            Sale isExist = SalesManager.getInstance().getSale(saleId);

            if (isExist == null)
            {
                return(-2); // -2 = the sale id does not exist
            }
            if (!(session.getState() is Guest))
            {
                if (!UserCartsManager.getInstance().removeUserCart(session.getUserName(), saleId))
                {
                    return(-3); // trying to remove a product that does not exist in the cart
                }
            }

            foreach (UserCart c in products)
            {
                if (c.getUserName().Equals(session.getUserName()) && c.getSaleId() == saleId)
                {
                    products.Remove(c);

                    return(1);
                }
            }
            return(-3);
        }
コード例 #3
0
 public LinkedList <UserCart> getShoppingCartProducts(User session)
 {
     if (!(session.getState() is Guest))
     {
         products = UserCartsManager.getInstance().getUserShoppingCart(session.getUserName());
     }
     updateRegularPricesForCart();
     return(products);
 }
コード例 #4
0
 public void init()
 {
     WebServices.DAL.CleanDB cDB = new WebServices.DAL.CleanDB();
     cDB.emptyDB();
     UserCartsManager.restartInstance();
     userCartsArchive = UserCartsManager.getInstance();
     userCartsArchive.updateUserCarts("itamar", 1, 1);
     userCartsArchive.updateUserCarts("itamar", 2, 1);
     userCartsArchive.updateUserCarts("niv", 3, 3, 50);
     userCartsArchive.updateUserCarts("niv", 3, 1);
 }
コード例 #5
0
        public int addToCart(User session, int saleId, int amount)
        {
            Sale saleExist = SalesManager.getInstance().getSale(saleId);

            if (saleExist == null)
            {
                return(-3); //-3 = saleId entered doesn't exist
            }
            if (!checkValidDate(saleExist))
            {
                return(-4); // -4 = the date for the sale is no longer valid
            }
            if (saleExist.TypeOfSale != 1)
            {
                return(-5); //-5 = trying to add a sale with type different from regular sale type
            }
            int amountInStore = ProductManager.getInstance().getProductInStore(saleExist.ProductInStoreId).getAmount();

            if (amount > amountInStore || amount <= 0)
            {
                return(-6); // -6 = amount is bigger than the amount that exist in stock
            }
            int amountForSale = SalesManager.getInstance().getSale(saleId).Amount;

            if (amount > amountForSale || amount <= 0)
            {
                return(-7); //amount is bigger than the amount currently up for sale
            }
            if (!(session.getState() is Guest))
            {
                UserCartsManager.getInstance().updateUserCarts(session.getUserName(), saleId, amount);
            }

            UserCart toAdd = new UserCart(session.getUserName(), saleId, amount);

            foreach (UserCart c in products)
            {
                if (c.getUserName().Equals(toAdd.getUserName()) && c.getSaleId() == toAdd.getSaleId())
                {
                    if (c.getAmount() + amount <= amountForSale)
                    {
                        c.setAmount(c.getAmount() + amount);
                        return(1); // OK
                    }
                    return(-7);
                }
            }
            //in updateUserCarts we already add the product in case it doesn't exist, so no need to add to DB here also
            products.AddLast(toAdd);
            return(1);
        }
コード例 #6
0
        public int addToCartRaffle(User session, int saleId, double offer)
        {
            Sale sale = SalesManager.getInstance().getSale(saleId);

            if (sale == null)
            {
                return(-3); // sale id entered does not exist
            }
            if (sale.TypeOfSale != 3)
            {
                return(-4); // sale is not of type raffle
            }
            if (!checkValidDate(sale))
            {
                return(-5); // the date for the sale is no longer valid
            }
            UserCart isExist = UserCartsManager.getInstance().getUserCart(session.getUserName(), sale.SaleId);

            if (isExist != null)
            {
                return(-6); // already have an instance of the raffle sale in the cart
            }
            double remainingSum = getRemainingSumForOffers(sale.SaleId);

            if (offer > remainingSum || offer <= 0)
            {
                return(-8); // offer is bigger than remaining sum to pay
            }
            if (!(session.getState() is Guest))
            {
                UserCartsManager.getInstance().updateUserCarts(session.getUserName(), sale.SaleId, 1, offer);
            }
            else
            {
                return(-7); // cannot add a raffle sale to cart while on guest mode
            }

            //UserCart toAdd = UserCartsManager.getInstance().getUserCart(session.getUserName(), sale.SaleId);
            UserCart toAdd = new UserCart(session.getUserName(), sale.SaleId, 1);

            toAdd.setOffer(offer);
            session.getShoppingCart().AddLast(toAdd);

            return(1);
        }
コード例 #7
0
        public int editCart(User session, int saleId, int newAmount)
        {
            Sale sale = SalesManager.getInstance().getSale(saleId);

            if (sale == null)
            {
                return(-2);
            }

            if (sale.TypeOfSale == 3)
            {
                return(-3); // trying to edit amount of a raffle sale
            }
            ProductInStore p = ProductManager.getInstance().getProductInStore(sale.ProductInStoreId);

            if (newAmount > sale.Amount)
            {
                return(-4); // new amount is bigger than currently up for sale
            }
            if (newAmount > p.getAmount())
            {
                return(-5); // new amount is bigger than currently exist in stock
            }
            if (newAmount <= 0)
            {
                return(-6); // new amount can't be zero or lower
            }
            if (!(session.getState() is Guest))
            {
                UserCartsManager.getInstance().editUserCarts(session.getUserName(), saleId, newAmount);
            }

            foreach (UserCart product in products)
            {
                if (product.getUserName().Equals(session.getUserName()) && saleId == product.getSaleId())
                {
                    product.setAmount(newAmount);

                    return(1);
                }
            }
            return(-7); // trying to edit amount of product that does not exist in cart
        }
コード例 #8
0
        public void init()
        {
            WebServices.DAL.CleanDB cDB = new WebServices.DAL.CleanDB();
            cDB.emptyDB();
            ProductManager.restartInstance();
            SalesManager.restartInstance();
            StoreManagement.restartInstance();
            UserManager.restartInstance();
            UserCartsManager.restartInstance();
            DiscountsManager.restartInstance();
            CouponsManager.restartInstance();
            RaffleSalesManager.restartInstance();
            pA        = ProductManager.getInstance();
            saleA     = SalesManager.getInstance();
            storeA    = StoreManagement.getInstance();
            userA     = UserManager.getInstance();
            userCartA = UserCartsManager.getInstance();
            discountA = DiscountsManager.getInstance();
            couponA   = CouponsManager.getInstance();
            raffleA   = RaffleSalesManager.getInstance();

            p1 = pA.addProduct("Milk");
            p2 = pA.addProduct("Bread");
            p3 = pA.addProduct("T.V");

            zahi  = new User("zahi", "123456");
            aviad = new User("aviad", "123456");
            aviad.register("aviad", "123456");
            zahi.register("zahi", "123456");

            store = storeA.addStore("zahi inc", zahi);

            pis1 = ProductManager.getInstance().addProductInStore(p1, store, 20, 10);
            pis2 = ProductManager.getInstance().addProductInStore(p2, store, 30, 15);
            pis3 = ProductManager.getInstance().addProductInStore(p3, store, 40, 50);

            sale1 = saleA.addSale(pis1.getProductInStoreId(), 1, 10, "1/5/2020");
            sale2 = saleA.addSale(pis2.getProductInStoreId(), 1, 10, "1/5/2020");
            sale3 = saleA.addSale(pis3.getProductInStoreId(), 3, 1, "1/5/2020");

            cart = new ShoppingCart();
        }
コード例 #9
0
        public Tuple <int, LinkedList <UserCart> > checkout(User session, string country, string address)
        {
            if (!(session.getState() is Guest))
            {
                products = UserCartsManager.getInstance().getUserShoppingCart(session.getUserName());
            }

            /*
             *  first we check all the products in the cart fulfill their terms of amount
             * */
            int checkAmountFulfillmentAns = checkAmountFulfillment(country);

            if (checkAmountFulfillmentAns != -1)
            {
                return(Tuple.Create(checkAmountFulfillmentAns, products));
            }

            checkAndUpdateDiscountsByPolicys(country);
            return(Tuple.Create(-1, products));
        }
コード例 #10
0
ファイル: User.cs プロジェクト: shaybenh7/workshop182v3
        /*
         * return:
         *          0 if login success
         *          -1 username not exist
         *          -2 password not exist
         *          -3 user is removed
         *          -4 you are allready logged in
         */
        public int login(String username, String password)
        {
            int user = state.login(username, password);

            if (user == 0)
            {
                if (username == "admin" || username == "admin1")
                {
                    state = new Admin();
                }
                else
                {
                    state = new LogedIn();
                }
                this.userName         = username;
                this.password         = password;
                shoppingCart.products = UserCartsManager.getInstance().getUserShoppingCart(userName);
                return(0);
            }
            return(user);
        }
コード例 #11
0
        public int buyProductsInCart(User session, string country, string adress, string creditCard)
        {
            int allBought = 1;
            LinkedList <UserCart> toDelete = new LinkedList <UserCart>();

            if (creditCard == null || creditCard.Equals(""))
            {
                return(-2);
            }
            foreach (UserCart product in products)
            {
                Sale sale = SalesManager.getInstance().getSale(product.getSaleId());
                if (sale.TypeOfSale == 1 && checkValidAmount(sale, product) && checkValidDate(sale)) //regular buy
                {
                    if (paymentProxy.payForProduct(creditCard, session, product))
                    {
                        if (!shippingProxy.sendShippingRequest(session, country, adress, creditCard))
                        {
                            return(-9);
                        }

                        ProductInStore p           = ProductManager.getInstance().getProductInStore(sale.ProductInStoreId);
                        int            productId   = p.getProduct().getProductId();
                        int            storeId     = p.getStore().getStoreId();
                        String         userName    = session.getUserName();
                        DateTime       currentDate = DateTime.Today;
                        String         date        = currentDate.ToString();
                        int            amount      = product.getAmount();
                        int            typeOfSale  = sale.TypeOfSale;
                        Purchase.addBuyHistory(productId, storeId, userName, product.PriceAfterDiscount, date, amount, typeOfSale);
                        //BuyHistoryManager.getInstance().addBuyHistory(productId, storeId, userName, product.PriceAfterDiscount, date, amount,
                        //    typeOfSale);
                        toDelete.AddLast(product);
                        SalesManager.getInstance().setNewAmountForSale(product.getSaleId(), sale.Amount - product.getAmount());
                        Purchase.alertOwnersOnPurchase(StoreManagement.getInstance().getAllOwners(p.store.storeId), p.productInStoreId, 1);
                    }
                    else
                    {
                        allBought = -4;
                    }
                }
                else if (sale.TypeOfSale == 2) // auction buy
                {
                }
                else if (sale.TypeOfSale == 3 && checkValidDate(sale)) // raffle buy
                {
                    double offer        = product.getOffer();
                    double remainingSum = getRemainingSumForOffers(sale.SaleId);
                    if (offer > remainingSum)
                    {
                        allBought = -4;
                    }
                    else
                    {
                        if (paymentProxy.payForProduct(creditCard, session, product))
                        {
                            RaffleSalesManager.getInstance().addRaffleSale(sale.SaleId, session.getUserName(), offer, sale.DueDate);
                            ProductInStore p           = ProductManager.getInstance().getProductInStore(sale.ProductInStoreId);
                            int            productId   = p.getProduct().getProductId();
                            int            storeId     = p.getStore().getStoreId();
                            String         userName    = session.getUserName();
                            DateTime       currentDate = DateTime.Today;
                            String         date        = currentDate.ToString();
                            int            amount      = product.getAmount();
                            int            typeOfSale  = sale.TypeOfSale;
                            Purchase.addBuyHistory(productId, storeId, userName, offer, date, amount, typeOfSale);
                            //BuyHistoryManager.getInstance().addBuyHistory(productId, storeId, userName, offer, date, amount,
                            //    typeOfSale);
                            RaffleSalesManager.getInstance().sendMessageTORaffleWinner(sale.SaleId);
                            SalesManager.getInstance().setNewAmountForSale(product.getSaleId(), sale.Amount - product.getAmount());
                            Purchase.alertOwnersOnPurchase(StoreManagement.getInstance().getAllOwners(p.store.storeId), p.productInStoreId, 3);
                            toDelete.AddLast(product);
                        }
                        else
                        {
                            allBought = -4;
                        }
                    }
                }
                else
                {
                    return(-5); // unknown error - should not happen
                }
            }
            foreach (UserCart uc in toDelete)
            {
                if (!(session.getState() is Guest))
                {
                    UserCartsManager.getInstance().removeUserCart(session.userName, uc.SaleId);
                }
                products.Remove(uc);
            }

            return(allBought);
        }