public static ShippingSystem getInstance() { if (instance == null) { instance = new ShippingSystem(); } return(instance); }
public Boolean buyProducts(User session, String creditCard, String couponId) { LinkedList <UserCart> toDelete = new LinkedList <UserCart>(); Boolean allBought = true; if (creditCard == null || creditCard.Equals("")) { return(false); } foreach (UserCart product in products) { if (couponId != null && couponId != "") { product.activateCoupon(couponId); } Sale sale = SalesManager.getInstance().getSale(product.getSaleId()); if (sale.TypeOfSale == 1 && checkValidAmount(sale, product) && checkValidDate(sale)) //regular buy { if (PaymentSystem.getInstance().payForProduct(creditCard, session, product)) { ShippingSystem.getInstance().sendShippingRequest(); ProductInStore p = ProductManager.getInstance().getProductInStore(sale.ProductInStoreId); int productId = p.getProduct().getProductId(); int storeId = p.getStore().getStoreId(); String userName = session.getUserName(); double price = product.updateAndReturnFinalPrice(couponId); DateTime currentDate = DateTime.Today; String date = currentDate.ToString(); int amount = product.getAmount(); int typeOfSale = sale.TypeOfSale; BuyHistoryManager.getInstance().addBuyHistory(productId, storeId, userName, price, date, amount, typeOfSale); //products.Remove(product); toDelete.AddLast(product); SalesManager.getInstance().setNewAmountForSale(product.getSaleId(), sale.Amount - product.getAmount()); } else { allBought = false; } } 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 = false; } else { if (RaffleSalesManager.getInstance().addRaffleSale(sale.SaleId, session.getUserName(), offer, sale.DueDate)) { PaymentSystem.getInstance().payForProduct(creditCard, session, product); 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; BuyHistoryManager.getInstance().addBuyHistory(productId, storeId, userName, offer, date, amount, typeOfSale); //products.Remove(product); toDelete.AddLast(product); } else { allBought = false; } } } } foreach (UserCart uc in toDelete) { products.Remove(uc); } return(allBought); }