public override void Change(Order order, OrderState state) { if (state.GetType().Equals(typeof(CompletedState))) { order.Message = "Failed. Cannot move directly to Completed state"; } else if (state.GetType().Equals(typeof(InProgressState))) { order.CurrentState = new InProgressState(); order.Message = "State changed successfully"; } }
public static string GetOrderStateDisplayName(this OrderState orderState) { return(orderState.GetType().GetMember(orderState.ToString()) .First() .GetCustomAttribute <DisplayAttribute>() .Name); }
public static List <Order> GetOrdersByState(OrderState state) { List <Order> orderByStateList = new List <Order>(); if (state != null) { foreach (Order o in allOrders) { if (o.state.GetType() == state.GetType()) { orderByStateList.Add(o); } } } else { foreach (Order o in allOrders) { orderByStateList.Add(o); } } return(orderByStateList); }
private static string ReportToXml(Contract contract, Order order, OrderState orderState) { string lastClassName = ""; string lastPropertyName = ""; try { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.AppendChild(xmlDoc.CreateXmlDeclaration("1.0", null, null)); XmlElement rootNode = xmlDoc.CreateElement("REPORT"); xmlDoc.AppendChild(rootNode); lastClassName = "Contract"; XmlElement contractNode = xmlDoc.CreateElement("CONTRACT"); rootNode.AppendChild(contractNode); foreach (var property in contract.GetType().GetProperties()) { if (property.GetValue(contract) != null) { lastPropertyName = property.Name; XmlElement fieldNode = xmlDoc.CreateElement(property.Name.Replace(" ", "").Replace("/", "").Replace("'", "").Replace("&", "n").Replace("-", "").Replace("%", "Pct")); fieldNode.AppendChild(xmlDoc.CreateTextNode(property.GetValue(contract).ToString())); contractNode.AppendChild(fieldNode); } } lastClassName = "Order"; XmlElement orderDetailsNode = xmlDoc.CreateElement("ORDERDETAILS"); rootNode.AppendChild(orderDetailsNode); foreach (var property in order.GetType().GetProperties()) { if (property.GetValue(order) != null) { lastPropertyName = property.Name; XmlElement fieldNode = xmlDoc.CreateElement(property.Name.Replace(" ", "").Replace("/", "").Replace("'", "").Replace("&", "n").Replace("-", "").Replace("%", "Pct")); fieldNode.AppendChild(xmlDoc.CreateTextNode(property.GetValue(order).ToString())); orderDetailsNode.AppendChild(fieldNode); } } lastClassName = "OrderState"; XmlElement orderStateNode = xmlDoc.CreateElement("ORDERSTATE"); rootNode.AppendChild(orderStateNode); foreach (var property in orderState.GetType().GetProperties()) { if (property.GetValue(orderState) != null) { lastPropertyName = property.Name; XmlElement fieldNode = xmlDoc.CreateElement(property.Name.Replace(" ", "").Replace("/", "").Replace("'", "").Replace("&", "n").Replace("-", "").Replace("%", "Pct")); fieldNode.AppendChild(xmlDoc.CreateTextNode(property.GetValue(orderState).ToString())); orderStateNode.AppendChild(fieldNode); } } using (StringWriter stringWriter = new StringWriter()) { XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter); xmlDoc.WriteTo(xmlTextWriter); return(stringWriter.ToString()); } } catch (Exception) { throw new Exception(String.Format("Error parsing order after {0} property in {1}", lastPropertyName, lastClassName)); } }