Ejemplo n.º 1
0
        protected override void Define()
        {
            NewRule.Id(Guid.NewGuid())
            .Describe("钻石会员7折,如单次消费金额达到1万,则返现500")
            .NewTuple()
            .When(new FuncCondition <Account>(p => p.Type == MemberType.Diamond))
            .Then(new ActionHandler <Account>(p => p.SetDiscount(70)));

            NewRule.NewTuple()
            .When(p => p.Type == MemberType.Platinum)
            .Then(p =>
            {
                p.SetDiscount(80);
                Console.WriteLine("discount 80");
            });

            NewRule.NewTuple()
            .When(new FuncCondition <Account>(p => p.Type == MemberType.Gold))
            .Then(new ActionHandler <Account>(p =>
            {
                p.SetDiscount(90);
                Console.WriteLine("discount 90");
            }));

            NewRule.NewTuple()
            .When(new FuncCondition <Account>(p => p.Type == MemberType.Silver))
            .Then(new ActionHandler <Account>(p =>
            {
                p.SetDiscount(95);
                Console.WriteLine("discount 95");
            }));
        }
Ejemplo n.º 2
0
        protected override void Define()
        {
            NewRule
            .Priority(5)
            .Describe("test rule")
            .OnBeginRuleInvoke((sender, e) => Debug.WriteLine(sender.Description))
            .OnEndRuleInvoke((serder, e) => Debug.WriteLine("rule invoked"))
            .OnFailed((sender, e) => Debug.WriteLine("rule failed"))
            .OnPassed((sender, e) => Debug.WriteLine("rule passed."))
            .NewTuple()
            .When(new FuncCondition <Account>(p => p.TotalMoney > 100))
            .Then(new ActionHandler <Account>(p =>
            {
                p.Type = MemberType.Silver;
                Console.WriteLine("change member type to Silver.");
            }));

            NewRule
            .Priority(6)
            .NewTuple()
            .When(p => p.TotalMoney > 1000)
            .Then(p =>
            {
                p.Type = MemberType.Gold;
                Console.WriteLine("change member type to Gold.");
            });

            NewRule
            .Priority(7)
            .NewTuple()
            .When(p => p.TotalMoney > 10000)
            .Then(p =>
            {
                p.Type = MemberType.Platinum;
                Console.WriteLine("change member type to Platinum.");
            });

            NewRule
            .Priority(8)
            .NewTuple()
            .When(p => p.TotalMoney > 100000)
            .Then(p =>
            {
                p.Type = MemberType.Diamond;
                Console.WriteLine("change member type to Diamond.");
            });
        }
Ejemplo n.º 3
0
        /// <summary>
        /// The ButtonSave_Click method.
        /// </summary>
        /// <param name="sender">The <paramref name="sender"/> parameter.</param>
        /// <param name="args">The <paramref name="args"/> parameter.</param>
        private void ButtonSave_Click(object sender, EventArgs args)
        {
            var newRule = new NewRule
            {
                IsEnabled = chbxIsEnabled.Checked,
                Name      = tbxName.Text,
            };

            foreach (ListViewItem responseItem in lvRuleResponses.Items)
            {
                var response = responseItem.Tag as RuleResponse;
                if (response == null)
                {
                    continue;
                }

                newRule.RuleResponses.Add(response);
            }

            foreach (ListViewItem timeTableItem in lvTimeTables.CheckedItems)
            {
                var timeTable = timeTableItem.Tag as TimeTable;
                if (timeTable == null)
                {
                    continue;
                }

                newRule.TimeTables.Add(timeTable);
            }

            foreach (ListViewItem triggerItem in lvRuleTriggers.Items)
            {
                var trigger = triggerItem.Tag as RuleTrigger;
                if (trigger == null)
                {
                    continue;
                }

                newRule.RuleTriggers.Add(trigger);
            }

            MainForm.CurrentSystem.AddRule(newRule);
        }
Ejemplo n.º 4
0
        public void RefreshData()
        {
            Saved.Clear();
            Rules.Clear();
            NewTransaction.DefaultAll();
            NewRule.DefaultAll();

            foreach (var row in SqliteDataAccess.LoadTransactions())
            {
                Saved.Add(row);
            }

            foreach (var row in SqliteDataAccess.LoadRules())
            {
                Rules.Add(row);
            }

            // apply current rules to current transactions and calculate account balance
            var cb = Categorize.ApplyCategoriesAndBalances(Saved, Rules, SqliteDataAccess.GetStartingBalance());

            CurrentBalance = "$" + cb.ToString();
        }