コード例 #1
0
ファイル: DraftState.cs プロジェクト: nidhisht/GangOfFour
 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";
     }
 }
コード例 #2
0
 public static string GetOrderStateDisplayName(this OrderState orderState)
 {
     return(orderState.GetType().GetMember(orderState.ToString())
            .First()
            .GetCustomAttribute <DisplayAttribute>()
            .Name);
 }
コード例 #3
0
        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);
        }
コード例 #4
0
        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));
            }
        }