Пример #1
0
        public ActionResult Edit(RulesModel model, Table table)
        {
            string result = "";

            switch (table)
            {
            case Table.ApprovedRules:
                result = rules.EditRule(model.ApprovedRule.RuleID, model.ApprovedRule.Question, model.ApprovedRule.Answer, User.Identity.Name, model.ApprovedRule.Lookup, Table.ApprovedRules);
                break;

            case Table.RejectedRules:
                result = rules.EditRule(model.RejectedRule.RuleID, model.RejectedRule.Question, model.RejectedRule.Answer, User.Identity.Name, model.RejectedRule.Lookup, Table.RejectedRules);
                break;

            case Table.PendingRules:
                result = rules.EditRule(model.PendingRule.RuleID, model.PendingRule.Question, model.PendingRule.Answer, User.Identity.Name, model.PendingRule.Lookup, Table.PendingRules);
                break;

            default:
                System.Diagnostics.Debug.WriteLine("Unknown table");
                break;
            }

            if (result == null)
            {
                return(RedirectToAction("RulesList"));
            }
            else
            {
                ViewBag.DuplicateError = result;
                return(View(model));
            }
        }
        public IActionResult Index(RulesModel ruleModel)
        {
            if (HttpContext.Session.Get("CustomerID") == null)
            {
                return(RedirectToAction("Index", "Login"));
            }

            return(View(GenerateRulesModel(ruleModel.curAccount)));
        }
Пример #3
0
        public async Task <RulesModel> ListRules(string wit)
        {
            string src = _appSettings.Value.SourceForRules;

            var json = await _httpClient.GetStringAsync(src + "/rules." + wit.ToLower() + ".json");

            RulesModel rules = JsonConvert.DeserializeObject <RulesModel>(json);

            return(rules);
        }
 /// <summary>
 /// Конвертирование модели правила в DTO для типа операции
 /// </summary>
 /// <param name="ruleToConvert">Объект модели правила</param>
 /// <returns>DTO правила для типа операции</returns>
 public RuleDto ConvertRuleModelToDTO(RulesModel ruleToConvert) => new RuleDto
 {
     RuleId             = ruleToConvert.Id,
     SourceAccount      = ruleToConvert.SourceAccount,
     DestinationAccount = ruleToConvert.DestinationAccount,
     RuleOrderNumber    = ruleToConvert.RuleOrderNumber,
     Description        = ruleToConvert.Description,
     Formula            = ruleToConvert.Formula,
     DateFrom           = ruleToConvert.DateFrom,
     OperationTypeId    = ruleToConvert.OperationTypeId
 };
        public RulesModel ListRules(string wit)
        {
            string src = _appSettings.Value.SourceForRules;

            using (WebClient wc = new WebClient())
            {
                var        json  = wc.DownloadString(src + "/rules." + wit.ToLower() + ".json");
                RulesModel rules = JsonConvert.DeserializeObject <RulesModel>(json);

                return(rules);
            }
        }
Пример #6
0
 public ActionResult Index([Bind(Include = "Question,Answer")] RulesModel model)
 {
     if (ModelState.IsValidField("Question"))
     {
         EFRules Rules = new EFRules();
         model.Answer = Rules.GetAnswer(model.Question);
     }
     else
     {
         ViewBag.EmptyError = "The Question field cannot be empty.";
     }
     return(View(model));
 }
 /// <summary>
 /// Add columns and create templates for them using variable's term.
 /// </summary>
 /// <param name="rules"></param>
 /// <param name="inputVariables"></param>
 /// <param name="ourputVariables"></param>
 private void AddColumnsAndCreateItsCellTemplatesIntoDataGrid(RulesModel rules, ICollection <FuzzyVariableModel> inputVariables, ICollection <FuzzyVariableModel> ourputVariables)
 {
     foreach (var variable in inputVariables.Concat(ourputVariables))
     {
         var col = new DataGridViewComboBoxColumn        // TODO: here could be call an interface method
         {
             Name       = variable.Name,
             DataSource = variable.Terms.Select(t => t.Name).ToList(),
             ValueType  = typeof(string)
         };
         this.dataGridViewRules.Columns.Add(col);
     }
     this.dataGridViewRules.Columns[inputVariables.Count - 1].DividerWidth = 3;  // width = 3px
 }
Пример #8
0
        public string MarkovAlgorithm(List <RulesModel> rules, string cypher)
        {
            RulesModel rule = rules.FirstOrDefault(R => cypher.Contains(R.Source));

            if (rule == null)
            {
                return(cypher);
            }
            cypher = cypher.Replace(rule.Source, rule.Replacement);
            if (rule.IsTermination)
            {
                return(cypher);
            }
            return(MarkovAlgorithm(rules, cypher));
        }
        private void SetRulesToDataGrid(RulesModel rules)
        {
            if (rules.Rules.Any(r => r.Value.Count > this.dataGridViewRules.RowCount))
            {
                this.dataGridViewRules.Rows.Add(rules.Rules.Select(r => r.Value.Count).FirstOrDefault());
            }

            foreach (var ruleItem in rules.Rules) // dictionary <string, List<string>>
            {
                for (int i = 0; i < ruleItem.Value.Count; i++)
                {
                    this.dataGridViewRules[ruleItem.Key, i].Value = ruleItem.Value[i];
                }
            }
        }
        public IActionResult Edit(RulesModel ruleModel)
        {
            if (HttpContext.Session.Get("CustomerID") == null)
            {
                return(RedirectToAction("Index", "Login"));
            }

            if (ruleModel.rules.startTrans < new DateTime(1900, 1, 1) ||
                ruleModel.rules.startTrans > new DateTime(9999, 12, 31))
            {
                ModelState.AddModelError("startTrans", "The field Start date must be between 1/1/1900 and 12/31/9999.");
            }
            if (ruleModel.rules.endTrans < new DateTime(1900, 1, 1) ||
                ruleModel.rules.endTrans > new DateTime(9999, 12, 31))
            {
                ModelState.AddModelError("endTrans", "The field End date must be between 1/1/1900 and 12/31/9999.");
            }

            if (ruleModel.rules.startTrans > ruleModel.rules.endTrans)
            {
                ModelState.AddModelError("startTrans", "The Start date must be before End date.");
            }

            Int32 customerID = (Int32)HttpContext.Session.GetInt32("CustomerID");

            if (!ModelState.IsValid)
            {
                ruleModel.curAccount = ruleModel.rules.accountID;
                ruleModel.accounts   = DatabaseHandler.getAccounts(customerID);
                return(View("Index", ruleModel));
            }

            if (ruleModel.rules.OutStateTrans == false && ruleModel.rules.rangeTrans == false &&
                ruleModel.rules.catTrans == false && ruleModel.rules.greatTrans == false &&
                ruleModel.rules.greatDepo == false && ruleModel.rules.greatWithdraw == false &&
                ruleModel.rules.greatBal == false && ruleModel.rules.lessBal == false)
            {
                DatabaseHandler.deleteRules(customerID, ruleModel.rules.accountID);
            }
            else
            {
                DatabaseHandler.setRules(customerID, ruleModel.rules);
            }

            ViewBag.Success = true;

            return(View("Index", GenerateRulesModel(ruleModel.rules.accountID)));
        }
Пример #11
0
        public async Task <RulesModel> ListRules(string wit)
        {
            string src = _appSettings.Value.SourceForRules;

            // set baseUrl to current context if SourceForRule is a relative path, i.e, not starting with http
            if (!src.ToLower().StartsWith("http"))
            {
                src = $"{_httpContextAccessor.HttpContext.Request.Scheme}://{_httpContextAccessor.HttpContext.Request.Host}/{src}";
            }

            var json = await _httpClient.GetStringAsync($"{src}/rules.{wit.ToLower()}.json");

            RulesModel rules = JsonConvert.DeserializeObject <RulesModel>(json);

            return(rules);
        }
        public RulesWizardDialog(RuleBlockModel ruleBlock)
        {
            InitializeComponent();

            this.ruleBlock = ruleBlock;

            if (this.ruleBlock.Rules == null)
            {
                rules = new RulesModel();
            }
            else
            {
                rules = this.ruleBlock.Rules;
            }

            this.AddColumnsAndCreateItsCellTemplatesIntoDataGrid(this.rules, this.ruleBlock.InputFuzzyVariables, this.ruleBlock.OutputFuzzyVariables);

            this.SetRulesToDataGrid(this.rules);
        }
Пример #13
0
 public ActionResult Add([Bind(Include = "Question,Answer,Lookup")] RulesModel model)
 {
     if (ModelState.IsValid)
     {
         string result;
         if ((result = rules.AddRule(model.Question, model.Answer, User.Identity.Name, User.Identity.Name, User.Identity.Name, model.Lookup, Table.PendingRules)) == null)
         {
             return(RedirectToAction("RulesList"));
         }
         else
         {
             ViewBag.DuplicateError = result;
             return(View());
         }
     }
     else
     {
         return(View());
     }
 }
        private RulesModel GenerateRulesModel(int account = 0)
        {
            RulesModel   rulesModel = new RulesModel();
            Int32        customerID = (Int32)HttpContext.Session.GetInt32("CustomerID");
            List <Int32> accountIDs = DatabaseHandler.getAccounts(customerID);

            rulesModel.accounts = accountIDs;
            if (accountIDs.Count > 0)
            {
                if (account > 0)
                {
                    rulesModel.curAccount = account;
                    rulesModel.rules      = DatabaseHandler.getRules(customerID, account);
                }
                else
                {
                    rulesModel.curAccount = accountIDs[0];
                    rulesModel.rules      = DatabaseHandler.getRules(customerID, accountIDs[0]);
                }
            }
            return(rulesModel);
        }
        private void GetRulesFromDataGrid(RulesModel rules)
        {
            List <string> values = null;

            for (int i = 0; i < this.dataGridViewRules.ColumnCount; i++)
            {
                values = new List <string>();
                for (int j = 0; j < this.dataGridViewRules.RowCount - 1; j++)
                {
                    values.Add(this.dataGridViewRules[i, j].Value?.ToString());
                }
                // rewrites values or creates new one.
                if (this.rules.Rules.ContainsKey(this.dataGridViewRules.Columns[i].Name))
                {
                    rules.Rules[this.dataGridViewRules.Columns[i].Name] = values;
                }
                else
                {
                    rules.Rules.Add(this.dataGridViewRules.Columns[i].Name.ToString(), values);
                }
            }
        }
Пример #16
0
        public void HomeController_GetAnswer_AnswerNotFound()
        {
            // add and approve the rule
            efrules.AddRule("Test Question?", "Test Answer", "User", "User", "User", null, Table.PendingRules);
            efrules.ApproveRule("Test Question?", "User", "User", "User");
            Assert.IsFalse(efrules.GetAnswerFromPending("Test Question?").Contains("Test Answer"));

            // create the home controller and mock rules model
            var controller = new HomeController();
            var model      = new RulesModel {
                Question = "Not a Test Question?"
            };

            // get the answer
            var result   = controller.Index(model) as ViewResult;
            var response = (RulesModel)result.ViewData.Model;

            // answer is not found
            Assert.AreEqual("Sorry, no result was found for that query", response.Answer);

            // delete the rule
            efrules.DeleteRule("Test Question?", Table.ApprovedRules);
        }
Пример #17
0
        public ActionResult Index()
        {
            RulesModel model = new RulesModel();

            return(View(model));
        }
Пример #18
0
 /// <summary>
 /// Initializes a new instance of the <see cref="RuleBlockModel"/> class.
 /// </summary>
 /// <param name="name">The name.</param>
 /// <param name="inputFuzzyVariables">The input fuzzy variables.</param>
 /// <param name="outputFuzzyVariables">The output fuzzy variables.</param>
 /// <param name="rules">The rules.</param>
 public RuleBlockModel(string name, ObservableCollection <FuzzyVariableModel> inputFuzzyVariables, ObservableCollection <FuzzyVariableModel> outputFuzzyVariables, RulesModel rules)
 {
     this.Name = name;
     this.InputFuzzyVariables  = inputFuzzyVariables;
     this.OutputFuzzyVariables = outputFuzzyVariables;
     this.Rules = rules;
 }
Пример #19
0
 /// <summary>
 /// Изменение правил для типа операции
 /// </summary>
 /// <param name="rule">Правило с изменениями</param>
 public void UpdateRule(RulesModel rule) => _context.Rules.Update(rule);
Пример #20
0
 /// <summary>
 /// Удаление правил для типа операций
 /// </summary>
 /// <param name="rules">Список правил</param>
 public void DeleteRule(RulesModel rule) => _context.Rules.Remove(rule);
Пример #21
0
        public async Task <IActionResult> Post([FromBody] JObject payload)
        {
            PayloadViewModel vm = BuildPayloadViewModel(payload);

            //make sure pat is not empty, if it is, pull from appsettings
            vm.pat = _appSettings.Value.PersonalAccessToken;

            //if the event type is something other the updated, then lets just return an ok
            if (vm.eventType != "workitem.updated")
            {
                return(new OkResult());
            }

            // create our azure devops connection
            Uri baseUri = new Uri("https://dev.azure.com/" + vm.organization);

            VssCredentials clientCredentials = new VssCredentials(new VssBasicCredential("username", vm.pat));
            VssConnection  vssConnection     = new VssConnection(baseUri, clientCredentials);

            // load the work item posted
            WorkItem workItem = await _workItemRepo.GetWorkItem(vssConnection, vm.workItemId);

            // this should never happen, but if we can't load the work item from the id, then exit with error
            if (workItem == null)
            {
                return(new StandardResponseObjectResult("Error loading workitem '" + vm.workItemId + "'", StatusCodes.Status500InternalServerError));
            }

            // get the related parent
            WorkItemRelation parentRelation = workItem.Relations.Where <WorkItemRelation>(x => x.Rel.Equals("System.LinkTypes.Hierarchy-Reverse")).FirstOrDefault();

            // if we don't have any parents to worry about, then just abort
            if (parentRelation == null)
            {
                return(new OkResult());
            }

            Int32    parentId       = _helper.GetWorkItemIdFromUrl(parentRelation.Url);
            WorkItem parentWorkItem = await _workItemRepo.GetWorkItem(vssConnection, parentId);

            if (parentWorkItem == null)
            {
                return(new StandardResponseObjectResult("Error loading parent work item '" + parentId.ToString() + "'", StatusCodes.Status500InternalServerError));
            }

            string parentState = parentWorkItem.Fields["System.State"] == null ? string.Empty : parentWorkItem.Fields["System.State"].ToString();

            // load rules for updated work item
            RulesModel rulesModel = _rulesRepo.ListRules(vm.workItemType);

            //loop through each rule
            foreach (var rule in rulesModel.Rules)
            {
                if (rule.IfChildState.Equals(vm.state))
                {
                    if (!rule.AllChildren)
                    {
                        if (!rule.NotParentStates.Contains(parentState))
                        {
                            await _workItemRepo.UpdateWorkItemState(vssConnection, parentWorkItem, rule.SetParentStateTo);

                            return(new OkResult());
                        }
                    }
                    else
                    {
                        // get a list of all the child items to see if they are all closed or not
                        List <WorkItem> childWorkItems = await _workItemRepo.ListChildWorkItemsForParent(vssConnection, parentWorkItem);

                        // check to see if any of the child items are not closed, if so, we will get a count > 0
                        int count = childWorkItems.Where(x => !x.Fields["System.State"].ToString().Equals(rule.IfChildState)).ToList().Count;

                        if (count.Equals(0))
                        {
                            await _workItemRepo.UpdateWorkItemState(vssConnection, parentWorkItem, rule.SetParentStateTo);
                        }

                        return(new OkResult());
                    }
                }
            }

            return(new StandardResponseObjectResult("success", StatusCodes.Status200OK));
        }
Пример #22
0
 /// <summary>
 /// Добавление правила  к типу операции
 /// </summary>
 /// <param name="rule">Правило</param>
 /// <param name="ct">Токен отмены</param>
 /// <returns></returns>
 public async Task AddRule(RulesModel rule, CancellationToken ct) => await _context.Rules.AddAsync(rule, ct);