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); }
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); }
public LinkedList <UserCart> getShoppingCartProducts(User session) { if (!(session.getState() is Guest)) { products = UserCartsManager.getInstance().getUserShoppingCart(session.getUserName()); } updateRegularPricesForCart(); return(products); }
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); }
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); }
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); }
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 }
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(); }
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)); }
/* * 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); }
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); }