Esempio n. 1
0
        public PurchasePolicyData ToPurchasePolicyData(PurchasePolicy policyData)
        {
            if (policyData.GetType() == typeof(ProductPurchasePolicy))
            {
                int policyProdutId = ((ProductPurchasePolicy)policyData).ProductId;
                int preCondition   = ((ProductPurchasePolicy)policyData).PreCondition.PreConditionNumber;
                return(new PurchasePolicyProductData(preCondition, policyProdutId));
            }

            else if (policyData.GetType() == typeof(BasketPurchasePolicy))
            {
                int preCondition = ((BasketPurchasePolicy)policyData).PreCondition.PreConditionNumber;
                return(new PurchasePolicyBasketData(preCondition));
            }

            else if (policyData.GetType() == typeof(SystemPurchasePolicy))
            {
                int storeId      = ((SystemPurchasePolicy)policyData).StoreId;
                int preCondition = ((SystemPurchasePolicy)policyData).PreCondition.PreConditionNumber;
                return(new PurchasePolicySystemData(preCondition, storeId));
            }

            else if (policyData.GetType() == typeof(UserPurchasePolicy))
            {
                int preCondition = ((UserPurchasePolicy)policyData).PreCondition.PreConditionNumber;
                return(new PurchasePolicyUserData(preCondition));
            }

            else if (policyData.GetType() == typeof(CompundPurchasePolicy))
            {
                int mergetype = ((CompundPurchasePolicy)policyData).mergeType;
                List <PurchasePolicy>     policies = ((CompundPurchasePolicy)policyData).getChildren();
                List <PurchasePolicyData> retList  = new List <PurchasePolicyData>();
                foreach (PurchasePolicy policy in policies)
                {
                    PurchasePolicyData newPolicyData = ToPurchasePolicyData(policy);
                    retList.Add(newPolicyData);
                }
                return(new CompoundPurchasePolicyData(mergetype, retList));
            }
            return(new PurchasePolicyData()); // not reached
        }
Esempio n. 2
0
        private Tuple <bool, string> IsValidPurchasePolicy(PurchasePolicy purchasePolicy)
        {
            if (purchasePolicy.GetType() == typeof(ProductPurchasePolicy))
            {
                int policyProdutId = ((ProductPurchasePolicy)purchasePolicy).ProductId;
                if (!Inventory.InvProducts.ContainsKey(policyProdutId))
                {
                    return(new Tuple <bool, string>(false, CommonStr.InventoryErrorMessage.ProductNotExistErrMsg));
                }
                int preCondition = ((ProductPurchasePolicy)purchasePolicy).PreCondition.PreConditionNumber;
                if (!(CommonStr.PurchasePreCondition.pre_min <= preCondition && preCondition <= CommonStr.PurchasePreCondition.pre_max))
                {
                    return(new Tuple <bool, string>(false, CommonStr.PoliciesErrors.PreConditionNumberErr));
                }

                return(new Tuple <bool, string>(true, ""));
            }

            else if (purchasePolicy.GetType() == typeof(BasketPurchasePolicy))
            {
                int preCondition = ((BasketPurchasePolicy)purchasePolicy).PreCondition.PreConditionNumber;
                if (!(CommonStr.PurchasePreCondition.pre_min <= preCondition && preCondition <= CommonStr.PurchasePreCondition.pre_max))
                {
                    return(new Tuple <bool, string>(false, CommonStr.PoliciesErrors.PreConditionNumberErr));
                }
                return(new Tuple <bool, string>(true, ""));
            }

            else if (purchasePolicy.GetType() == typeof(SystemPurchasePolicy))
            {
                int preCondition = ((SystemPurchasePolicy)purchasePolicy).PreCondition.PreConditionNumber;
                if (!(CommonStr.PurchasePreCondition.pre_min <= preCondition && preCondition <= CommonStr.PurchasePreCondition.pre_max))
                {
                    return(new Tuple <bool, string>(false, CommonStr.PoliciesErrors.PreConditionNumberErr));
                }
                return(new Tuple <bool, string>(true, ""));
            }

            else if (purchasePolicy.GetType() == typeof(UserPurchasePolicy))
            {
                int preCondition = ((UserPurchasePolicy)purchasePolicy).PreCondition.PreConditionNumber;
                if (!(CommonStr.PurchasePreCondition.pre_min <= preCondition && preCondition <= CommonStr.PurchasePreCondition.pre_max))
                {
                    return(new Tuple <bool, string>(false, CommonStr.PoliciesErrors.PreConditionNumberErr));
                }
                return(new Tuple <bool, string>(true, ""));
            }

            else if (purchasePolicy.GetType() == typeof(CompundPurchasePolicy))
            {
                int mergetype = ((CompundPurchasePolicy)purchasePolicy).mergeType;
                if (!(0 <= mergetype && mergetype <= 2))
                {
                    return(new Tuple <bool, string>(false, CommonStr.PoliciesErrors.MergeTypeErr));
                }

                List <PurchasePolicy> policies = ((CompundPurchasePolicy)purchasePolicy).getChildren();
                foreach (PurchasePolicy children in policies)
                {
                    Tuple <bool, string> isChildrenValid = IsValidPurchasePolicy(children);
                    if (!isChildrenValid.Item1)
                    {
                        return(isChildrenValid);
                    }
                }
                return(new Tuple <bool, string>(true, ""));
            }
            return(null); // not reached
        }