public void AddRuleDetail(BankingRuleDetails ruleDetails)
 {
     try
     {
         var thisorder = ruleDetails.Order;
         _ruleDetailsRepository.Add(ruleDetails);
         _ruleDetailsRepository.SaveChanges();
     }
     catch (Exception ex)
     {
         //log exception
     }
 }
        public void Update(BankingRuleDetails ruleDetails)
        {
            try
            {
                var thisorder = ruleDetails.Order;
                if (_ruleDetailsRepository.Find(p => p.Order > thisorder).Count() < 0)
                {
                    var oldLastRule = _ruleDetailsRepository.Find(p => p.IsLast == true && p.Id != ruleDetails.Id).FirstOrDefault();
                    if (oldLastRule != null)
                    {
                        ruleDetails.IsLast = true;
                        oldLastRule.IsLast = false;
                        _ruleDetailsRepository.Update(oldLastRule);
                        _ruleDetailsRepository.Update(ruleDetails);

                        _ruleDetailsRepository.SaveChanges();
                    }
                }
                if (_ruleDetailsRepository.Find(p => p.Order < thisorder).Count() < 0)
                {
                    var oldFirstRule = _ruleDetailsRepository.Find(p => p.IsFirst == true && p.Id != ruleDetails.Id).FirstOrDefault();
                    if (oldFirstRule != null)
                    {
                        ruleDetails.IsFirst  = true;
                        oldFirstRule.IsFirst = false;
                        _ruleDetailsRepository.Update(oldFirstRule);
                        _ruleDetailsRepository.Update(ruleDetails);

                        _ruleDetailsRepository.SaveChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                //log exception
            }
        }
        public ActionResult AddRuleDetail(AddRuleDetailViewModel model)
        {
            var response = new RuleMessage <AddRuleDetailViewModel>
            {
                Result = model
            };

            ViewBag.OperandList = new List <SelectListItem> {
                new SelectListItem {
                    Text = ">", Value = "greaterthan"
                },
                new SelectListItem {
                    Text = ">=", Value = "greaterthanorequalto"
                },
                new SelectListItem {
                    Text = "+", Value = "add"
                },
                new SelectListItem {
                    Text = "-", Value = "subtract"
                },
                new SelectListItem {
                    Text = "!=", Value = "notequal"
                },
                new SelectListItem {
                    Text = "&", Value = "and"
                },
                new SelectListItem {
                    Text = "=", Value = "equals"
                },
                new SelectListItem {
                    Text = "<", Value = "lessthan"
                },
                new SelectListItem {
                    Text = "<=", Value = "lessthanorequalto"
                },
                new SelectListItem {
                    Text = "!", Value = "or"
                },
            };
            if (model == null)
            {
                response.Message  = "";
                response.HasError = true;
                return(View(response));
            }
            try
            {
                var ruleDetail = new BankingRuleDetails
                {
                    BankingRuleId       = model.BankingRuleId,
                    LeftOperator        = model.LeftOperator,
                    RightOperator       = model.RightOperator,
                    ExpectedResult      = model.ExpectedResult,
                    ExpectedResultType  = model.ExpectedResultType,
                    IsChained           = model.IsChained,
                    LeftParameterString = model.LeftParameterString,
                    Operand             = model.Operand,
                    Order                = model.Order,
                    RuleType             = model.RuleType,
                    RightParamererString = model.RightParamererString,
                    Id = Guid.NewGuid(),
                };
                _ruleDetailsService.AddRuleDetail(ruleDetail);
                return(RedirectToAction("ConfigureRule", new { id = model.BankingRuleId }));
            }
            catch (Exception ex)
            {
                response.Message  = ex.Message;
                response.HasError = true;
                //log exception
                return(View(response));
            }
        }