public ActionResult Index()
 {
     ViewBag.Title = Resources.Resources.Rules;
     var repo = new Orm.OrmLiteRepository<Rule>();
     IEnumerable<Rule> rules = repo.List.OrderBy(rule => rule.Priority);
     return View(rules);
 }
        public ActionResult Edit(string id)
        {
            var serializer = ProcessingEngine.Instance.Container.Resolve<ISerializer>();

            //Получение правила
            var ruleRepository = new Orm.OrmLiteRepository<Rule>();
            ProcessingRule rule = ruleRepository.GetById(new Guid(id)).Cast();

            RuleEditViewModel model = GetEditViewModel();
            model.ProcessingRule = rule;

            return View(model);
        }
        public ActionResult Index()
        {
            var model = new ComponentsViewModel();

            var validationsRepository = new Orm.OrmLiteRepository<ValidationLookup>();
            var conditionsRepository = new Orm.OrmLiteRepository<RuleConditionLookup>();
            var localActionsRepository = new Orm.OrmLiteRepository<LocalActionLookup>();
            var localRestrictionRepository = new Orm.OrmLiteRepository<LocalRestrictionsLookup>();
            var globalActionsRepository = new Orm.OrmLiteRepository<GlobalActionLookup>();
            var globalRestrictionsRepository = new Orm.OrmLiteRepository<GlobalRestrictionsLookup>();
            var postprocessingRepository = new Orm.OrmLiteRepository<PostProcessingLookup>();

            model.ValidationLookups = validationsRepository.List.ToList();
            model.RuleConditionLookups = conditionsRepository.List.ToList();
            model.LocalActionLookups = localActionsRepository.List.ToList();
            model.LocalRestrictionsLookups = localRestrictionRepository.List.ToList();
            model.GlobalActionLookups = globalActionsRepository.List.ToList();
            model.GlobalRestrictionsLookups = globalRestrictionsRepository.List.ToList();
            model.PostProcessingLookups = postprocessingRepository.List.ToList();

            return View(model);
        }
        public JsonResult Save([ModelBinder(typeof(SaveRuleResponseBinder))] SaveRuleResponse response)
        {
            RuleEditMode mode = RuleEditMode.Edit;
            if (response.RuleId == Guid.Empty)
                mode = RuleEditMode.Create;

            //var serializer = ProcessingEngine.Instance.Container.Resolve<ISerializer>();

            Rule rule;
            var ruleRepository = new Orm.OrmLiteRepository<Rule>();

            switch (mode)
            {
                case RuleEditMode.Create:
                    rule = new Rule();
                    break;
                case RuleEditMode.Edit:
                    rule = ruleRepository.GetById(response.RuleId);
                    break;
                default:
                    rule = new Rule();
                    break;
            }

            //TODO Можно было бы биндить напрямую в Rule, если бы не RuleId
            rule.Name = response.Name;
            rule.ActivateBonusInDays = response.ActivateInDays;
            if(!response.ActivateInDate.Equals(DateTime.MinValue))
            {
                rule.ActivateInDate = response.ActivateInDate;
            }

            rule.ActivateOnCharge = response.ActivateOnCharge;
            rule.BonusLifeTime = response.BonusLifeTime;

            if (!response.LifeTimeFrom.Equals(DateTime.MinValue))
            {
                rule.LifeTimeFrom = response.LifeTimeFrom;
            }

            if (!response.LifeTimeTo.Equals(DateTime.MinValue))
            {
                rule.LifeTimeTo = response.LifeTimeTo;
            }

            rule.Priority = response.Priority;
            rule.Production = response.Production;
            rule.Sandbox = response.Sandbox;

            rule.Conditions = response.Conditions;
            rule.LocalActions = response.LocalActions;
            rule.LocalRestrictions = response.LocalRestrictions;

            switch (mode)
            {
                case RuleEditMode.Edit:
                    ruleRepository.Update(rule);
                    break;
                default:
                    ruleRepository.Add(rule);
                    break;
            }

            return Json("Success save");
        }
 // GET: Rules/Delete/5
 public ActionResult Delete(Guid id)
 {
     var ruleRepository = new Orm.OrmLiteRepository<Rule>();
     ruleRepository.Delete(ruleRepository.GetById(id));
     return RedirectToAction("Index");
 }
        private RuleEditViewModel GetEditViewModel()
        {
            var serializer = ProcessingEngine.Instance.Container.Resolve<ISerializer>();
            //Получение справочника условий
            var lookupsRepository = new Orm.OrmLiteRepository<RuleConditionLookup>();
            List<RuleConditionLookup> lookupsList = lookupsRepository.List.ToList();
            //Преобразуем в объект, пригодный для сериализации и передачи в javascript как объект
            List<ProcessingRuleConditionLookup> processingLookupsList = new List<ProcessingRuleConditionLookup>();

            foreach (var item in lookupsList)
            {
                processingLookupsList.Add(item.Cast());
            }

            var lookupsJson = serializer.Serialize(processingLookupsList);

            //Получение справочника локальных акций
            var localActionsLookupsRepository = new Orm.OrmLiteRepository<LocalActionLookup>();
            List<LocalActionLookup> localActionslookupsList = localActionsLookupsRepository.List.ToList();

            List<ProcessingPipelineLookup> processingLocalActionslookupsList = new List<ProcessingPipelineLookup>();
            foreach (var item in localActionslookupsList)
            {
                processingLocalActionslookupsList.Add(item.Cast());
            }

            var localActionsLookupsJson = serializer.Serialize(processingLocalActionslookupsList);

            //Получение справочника локальных ограничений
            var localRestrictionsRepository = new Orm.OrmLiteRepository<LocalRestrictionsLookup>();
            List<LocalRestrictionsLookup> localRestrictionslookupsList = localRestrictionsRepository.List.ToList();

            List<ProcessingPipelineLookup> processingLocalRestrictionslookupsList = new List<ProcessingPipelineLookup>();
            foreach (var item in localRestrictionslookupsList)
            {
                processingLocalRestrictionslookupsList.Add(item.Cast());
            }

            var localRestrictionsLookupsJson = serializer.Serialize(processingLocalActionslookupsList);

            RuleEditViewModel model = new RuleEditViewModel();
            model.Lookups = lookupsJson;
            model.LocalActions = localActionsLookupsJson;
            model.LocalRestrictions = localRestrictionsLookupsJson;

            return model;
        }