Beispiel #1
0
        private void FormTest_Load(object sender, EventArgs e)
        {
            List <RuleDTO>  listRule = RulesBLL.FindAll();
            List <RuleDEMO> rules1   = new List <RuleDEMO>();

            int count = 1;

            listRule.ForEach(rule => {
                RuleDEMO ruleTMP = new RuleDEMO();
                ruleTMP.STT      = count++;
                ruleTMP.Id       = rule.Id;
                ruleTMP.Rule     = string.Join("^", rule.Left) + " -> " + rule.Right;
                rules1.Add(ruleTMP);
            });



            dgvRule.DataSource = rules1;
            dgvRule.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            List <RuleDEMO> rules = new List <RuleDEMO>();

            count = 1;
            ForwardChainingUtil.OptimizeRule(listRule).ForEach(rule => {
                RuleDEMO ruleTMP = new RuleDEMO();
                ruleTMP.STT      = count++;
                ruleTMP.Id       = rule.Id;
                ruleTMP.Rule     = string.Join("^", rule.Left) + " -> " + rule.Right;
                rules.Add(ruleTMP);
            });

            dgvTest.DataSource = rules;
            dgvTest.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
        }
        private void btnCounselling_Click(object sender, EventArgs e)
        {
            dgvResult.DataSource = null;
            var            assumptions = new List <string>();
            PurposeDTO     purpose     = (PurposeDTO)cbbPurpose.SelectedItem;
            BrandDTO       brand       = (BrandDTO)cbbBrand.SelectedItem;
            PriceDTO       price       = (PriceDTO)cbbPrice.SelectedItem;
            ColorDTO       color       = (ColorDTO)cbbColor.SelectedItem;
            ObjectUsingDTO objectUsing = (ObjectUsingDTO)cbbObjectUsing.SelectedItem;
            GenderDTO      gender      = (GenderDTO)cbbGender.SelectedItem;

            if (color.Id.Equals("CL0"))
            {
                assumptions.Add(gender.Id.Trim());
            }
            else
            {
                assumptions.Add(color.Id.Trim());
            }
            if (brand.Id.Equals("BR0"))
            {
                assumptions.Add(purpose.Id.Trim());
            }
            else
            {
                assumptions.Add(brand.Id.Trim());
            }
            if (price.Id.Equals("PR0"))
            {
                assumptions.Add(objectUsing.Id.Trim());
            }
            else
            {
                assumptions.Add(price.Id.Trim());
            }


            if (assumptions.Count < 3)
            {
                MessageBox.Show("Bạn cần trả lời thêm câu hỏi để chúng tôi tư vấn!", "Cảnh báo",
                                MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }



            /*if (assumptions.Contains("OS1") && assumptions.Contains("BR4"))
             * {
             *  MessageBox.Show("Bạn cần nhập lại hãng điện thoại hoặc hệ điều hành vì Apple không phải là hệ điều hành Android!", "Lỗi",
             *      MessageBoxButtons.OK, MessageBoxIcon.Error);
             *  return;
             * }*/
            if (assumptions.Contains("OS2") && !assumptions.Contains("BR4"))
            {
                MessageBox.Show("Bạn cần nhập lại hãng điện thoại hặc hệ điều hành!", "Lỗi",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            var mobiles = ForwardChainingUtil.Result(assumptions);

            if (mobiles.Count == 0)
            {
                MessageBox.Show("Chúng tôi xin lỗi vì không có loại điện thoại theo mô tả của bạn!", "Thông tin",
                                MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            this.dgvResult.Visible               = true;
            pnResult.Visible                     = true;
            this.dgvResult.DataSource            = mobiles;
            this.dgvResult.Columns["Id"].Visible = false;
        }