public static CustomerDetails GetCustomer(int id) { try { IManager <Customer> customerManager = new CustomerManager(); IManager <Purchase> purchaseManager = new PurchaseManager(); IManager <PurchaseItem> purchaseItemManager = new PurchaseItemManager(); IManager <Item> itemManager = new ItemManager(); CustomerDetails customer = new CustomerDetails(customerManager.GetById(id)); Purchase conditionPurchase = new Purchase { CustomerId = id }; PurchaseItem conditionPurchaseItem = new PurchaseItem(); foreach (Purchase purchase in purchaseManager.GetAllWhere(conditionPurchase)) { customer.PurchaseHistory.Add(new PurchaseHistory(purchase)); } foreach (PurchaseHistory purchaseHistory in customer.PurchaseHistory) { conditionPurchaseItem.PurchaseId = purchaseHistory.Purchase.Id; foreach (PurchaseItem purchaseItem in purchaseItemManager.GetAllWhere(conditionPurchaseItem)) { if (purchaseHistory.Purchase.Status == ProfileStringConstants.PENDING) { Item item = itemManager.GetById(purchaseItem.ItemId); purchaseItem.Price = item.Price; purchaseItem.SubTotal = purchaseItem.Quantity * item.Price; purchaseItemManager.Update(purchaseItem); purchaseHistory.PurchaseDetails.Add(new PurchaseDetails(purchaseItem, item)); } else { purchaseHistory.PurchaseDetails.Add(new PurchaseDetails(purchaseItem, itemManager.GetById(purchaseItem.ItemId))); } } } return(customer); } catch (Exception ex) { Logger.log.Error(ex.ToString()); return(null); } }