public BasePolicy ReturnBaseObject(string json)
        {
            BasePolicy result   = new BasePolicy();
            var        jsonType = (IJsonType)handler.Handle(json);

            if (handler.errors != null)
            {
                foreach (var item in handler.errors)
                {
                    Console.WriteLine(item.ToString());
                }
            }
            if (jsonType is null)
            {
                Console.WriteLine("Ошибка конвертации");
            }
            else
            {
                if (jsonType.GetType() == typeof(BasePolicy))
                {
                    return((BasePolicy)jsonType);
                }
                else
                {
                    result = mapper.Map <BasePolicy>(jsonType);
                }
            }
            return(result);
        }
Beispiel #2
0
        public void CreatesCorrectPolicy()
        {
            var basePolicy = new BasePolicy();
            var xml        = basePolicy.GetXml().ToString();

            xml.Should().Be("<base />");
        }
        static void Main(string[] args)
        {
            try
            {
                AutoMapperConfigure();
                var        baseType     = new BaseTypeHandler();
                var        firstType    = new FirstTypeHandler();
                var        secondType   = new SecondTypeHandler();
                var        thirdType    = new ThirdTypeHandler();
                BasePolicy basePolicies = new BasePolicy();
                Context    context;
                while (!JsonTypeChoose())
                {
                }

                switch (jsonType)
                {
                case 0:
                    context      = new Context(baseType, mapper);
                    basePolicies = context.ReturnBaseObject(json0);
                    break;

                case 1:
                    context      = new Context(firstType, mapper);
                    basePolicies = context.ReturnBaseObject(json1);
                    break;

                case 2:
                    context      = new Context(secondType, mapper);
                    basePolicies = context.ReturnBaseObject(json2);
                    break;

                case 3:
                    context      = new Context(thirdType, mapper);
                    basePolicies = context.ReturnBaseObject(json3);
                    break;

                case 4:     // Тип не определен и определяется в зависимости от переданного json
                    baseType.SetNext(firstType).SetNext(secondType).SetNext(thirdType);
                    string[] selectableJson = new string[4] {
                        json0, json1, json2, json3
                    };
                    Random rand = new Random();

                    context      = new Context(baseType, mapper);
                    basePolicies = context.ReturnBaseObject(selectableJson[rand.Next(0, selectableJson.Length)]);
                    break;
                }
                Console.WriteLine(JsonConvert.SerializeObject(basePolicies));
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadKey();
        }
Beispiel #4
0
        public static iPolicy generateDateTimePolicyByCategory(string category, DateTime minDate, DateTime maxDate)
        {
            if (minDate > maxDate)
            {
                return(null);
            }
            iPolicy policy = new BasePolicy(p => p.info.category.Equals(category), (p, u) => DateTime.Now <minDate | DateTime.Now> maxDate);

            return(policy);
        }
Beispiel #5
0
        public static iPolicy generateWeeklyTimePolicyByProduct(string name, string category, string man, int minDay, int minHour, int maxDay, int maxHour)
        {
            if (minDay > maxDay | minDay < 1 | minDay > 7 | maxDay < 1 | maxDay > 7 | minHour < 0 | minHour > 23 | maxHour < 0 | maxHour > 23)
            {
                return(null);
            }
            iPolicy policy = new BasePolicy(p => p.info.Equals(ProductInfo.getProductInfo(name, category, man)), (Product p, aUser u) => DateTime.Now.Day <minDay | DateTime.Now.Day> maxDay | (DateTime.Now.Day == minDay & DateTime.Now.Hour < minHour) | (DateTime.Now.Day == maxDay & DateTime.Now.Hour > maxHour));

            return(policy);
        }
Beispiel #6
0
        public static iPolicy generateDateTimePolicyByProduct(string name, string category, string man, DateTime minDate, DateTime maxDate)
        {
            if (minDate > maxDate)
            {
                return(null);
            }
            iPolicy policy = new BasePolicy(p => p.info.Equals(ProductInfo.getProductInfo(name, category, man)), (p, u) => DateTime.Now <minDate | DateTime.Now> maxDate);

            return(policy);
        }
Beispiel #7
0
        public bool addDateTimePolicyByCategory(string category, DateTime minDate, DateTime maxDate)
        {
            if (minDate > maxDate)
            {
                return(false);
            }
            iPolicy policy = new BasePolicy(p => p.info.category.Equals(category), (p, u) => DateTime.Now <minDate | DateTime.Now> maxDate);

            this.purchasePolicies.Add(policy);
            return(true);
        }
Beispiel #8
0
        public bool addWeeklyTimePolicyByProduct(string name, string category, string man, int minDay, int minHour, int maxDay, int maxHour)
        {
            if (minDay > maxDay | minDay < 1 | minDay > 7 | maxDay < 1 | maxDay > 7 | minHour < 0 | minHour > 23 | maxHour < 0 | maxHour > 23)
            {
                return(false);
            }
            iPolicy policy = new BasePolicy(p => p.info.Equals(ProductInfo.getProductInfo(name, category, man)), (Product p, aUser u) => DateTime.Now.Day <minDay | DateTime.Now.Day> maxDay | (DateTime.Now.Day == minDay & DateTime.Now.Hour < minHour) | (DateTime.Now.Day == maxDay & DateTime.Now.Hour > maxHour));

            this.purchasePolicies.Add(policy);
            return(true);
        }
Beispiel #9
0
        public bool addDateTimePolicyByProduct(string name, string category, string man, DateTime minDate, DateTime maxDate)
        {
            if (minDate > maxDate)
            {
                return(false);
            }
            iPolicy policy = new BasePolicy(p => p.info.Equals(ProductInfo.getProductInfo(name, category, man)), (p, u) => DateTime.Now <minDate | DateTime.Now> maxDate);

            this.purchasePolicies.Add(policy);
            return(true);
        }
Beispiel #10
0
        public void addMinAmountPolicyByCategory(string category, int minAmount)
        {
            iPolicy policy = new BasePolicy(p => p.info.category.Equals(category), (Product p, aUser u) => p.amount >= minAmount);

            this.purchasePolicies.Add(policy);
        }
Beispiel #11
0
        public void addMinAmountPolicyByProduct(string name, string category, string man, int minAmount)
        {
            iPolicy policy = new BasePolicy(p => p.info.Equals(ProductInfo.getProductInfo(name, category, man)), (Product p, aUser u) => p.amount >= minAmount);

            this.purchasePolicies.Add(policy);
        }
Beispiel #12
0
        public void addDailyPolicyByCategory(string category, int hour)
        {
            iPolicy policy = new BasePolicy(p => p.info.category.Equals(category), (Product p, aUser u) => DateTime.Now.Hour <= hour);

            this.purchasePolicies.Add(policy);
        }
Beispiel #13
0
        public void addDailyPolicyByProduct(string name, string category, string man, int maxHour)
        {
            iPolicy policy = new BasePolicy(p => p.info.Equals(ProductInfo.getProductInfo(name, category, man)), (Product p, aUser u) => DateTime.Now.Hour <= maxHour);

            this.purchasePolicies.Add(policy);
        }
Beispiel #14
0
        public static iPolicy generateDailyPolicyByCategory(string category, int hour)
        {
            iPolicy policy = new BasePolicy(p => p.info.category.Equals(category), (Product p, aUser u) => DateTime.Now.Hour <= hour);

            return(policy);
        }
Beispiel #15
0
        public void addAgePolicyByProduct(string name, string category, string man, int minAge)
        {
            iPolicy policy = new BasePolicy((Product p) => p.info.Equals(ProductInfo.getProductInfo(name, category, man)), (Product p, aUser u) => u.getAge() >= minAge);

            this.purchasePolicies.Add(policy);
        }
Beispiel #16
0
        // this is a class that has static methods
        // it provides services for generating buying policies

        public static iPolicy generateAgePolicyByProduct(string name, string category, string man, int minAge)
        {
            iPolicy policy = new BasePolicy((Product p) => p.info.Equals(ProductInfo.getProductInfo(name, category, man)), (Product p, aUser u) => u.getAge() >= minAge);

            return(policy);
        }
Beispiel #17
0
        public static iPolicy generateAgePolicyByCategory(string category, int minAge)
        {
            iPolicy policy = new BasePolicy(p => p.info.category.Equals(category), (Product p, aUser u) => u.getAge() >= minAge);

            return(policy);
        }
Beispiel #18
0
        public static iPolicy generateMinAmountPolicyByCategory(string category, int minAmount)
        {
            iPolicy policy = new BasePolicy(p => p.info.category.Equals(category), (Product p, aUser u) => p.amount >= minAmount);

            return(policy);
        }
Beispiel #19
0
        public static iPolicy generateMinAmountPolicyByProduct(string name, string category, string man, int minAmount)
        {
            iPolicy policy = new BasePolicy(p => p.info.Equals(ProductInfo.getProductInfo(name, category, man)), (Product p, aUser u) => p.amount >= minAmount);

            return(policy);
        }
Beispiel #20
0
        public void addAgePolicyByCategory(string category, int minAge)
        {
            iPolicy policy = new BasePolicy(p => p.info.category.Equals(category), (Product p, aUser u) => u.getAge() >= minAge);

            this.purchasePolicies.Add(policy);
        }
Beispiel #21
0
        public static iPolicy generateDailyPolicyByProduct(string name, string category, string man, int maxHour)
        {
            iPolicy policy = new BasePolicy(p => p.info.Equals(ProductInfo.getProductInfo(name, category, man)), (Product p, aUser u) => DateTime.Now.Hour <= maxHour);

            return(policy);
        }