public void InsertOrder(ProductDTO product, int quantity, TimeSpan sysTime) { if (product.Stock.HasStockCapacity(quantity)) { product.Stock.ReduceStock(quantity); var order = new OrderDTO(product, quantity); if (product.HasCampaign()) { var existingCampaign = product.GetCampaign(); if (existingCampaign.HasDuration(sysTime)) { existingCampaign.IncraseTotalSalesCount(quantity); order.SetCampaign(existingCampaign); order.SetPriceSales(product.Price.Value); OrderList.Add(order); Logger.Log(String.Format("Succesfully! Order created. Product Code :{0}, Quantity: {1}", product.ProductCode.Value, quantity)); } }else { order.SetPriceSales(product.Price.Value); OrderList.Add(order); Logger.Log(String.Format("Succesfully! Order created. Order created; product {0}, quantity {1}", product.ProductCode.Value, quantity)); } } }