public ActionResult List(string eventName)
        {
            var slot = EventSlotManager.Instance.GetSlot(eventName);
            var availableActivities = _activityProvider.FindBindableTo(slot.EventType)
                                      .Select(x => new
            {
                x.Name,
                x.DisplayName
            })
                                      .ToList();

            ViewBag.EventName           = slot.EventType.Name;
            ViewBag.EventTypeName       = slot.EventType.AssemblyQualifiedNameWithoutVersion();
            ViewBag.AvailableActivities = availableActivities;
            ViewBag.AvailableParameters = RuleParameterProviders.Providers.GetParameters(slot.EventType).ToList();

            var manager = RuleManager.GetManager(CurrentInstance.Name);
            var rules   = manager.GetRules(eventName);

            var models = new List <RuleModelBase>();

            foreach (var rule in rules)
            {
                models.Add(RuleModelBase.FromRule(rule));
            }

            return(View(models));
        }
        public ActionResult Index()
        {
            var slotManager = EventSlotManager.Instance;
            var ruleManager = RuleManager.GetManager(CurrentInstance.Name);
            var models      = new List <EventSlotModel>();

            foreach (var group in slotManager.GetGroups())
            {
                var slots = slotManager.GetSlots(group);
                foreach (var slot in slots)
                {
                    var rules = ruleManager.GetRules(slot.EventType.Name);
                    if (rules.Any())
                    {
                        var model = new EventSlotModel
                        {
                            EventName = slot.EventType.Name
                        };

                        foreach (var rule in rules)
                        {
                            model.Rules.Add(RuleModelBase.FromRule(rule));
                        }

                        models.Add(model);
                    }
                }
            }

            return(View(models));
        }
        public void Save(string eventName, string json)
        {
            var slot   = EventSlotManager.Instance.GetSlot(eventName);
            var models = JsonConvert.DeserializeObject <List <RuleModelBase> >(json, new JsonSerializerSettings {
                TypeNameHandling = TypeNameHandling.Auto
            });
            var rules = new List <Rule>();

            foreach (var model in models)
            {
                rules.Add(model.ToRule(slot));
            }

            var manager = RuleManager.GetManager(CurrentInstance.Name);

            manager.SaveRules(eventName, rules);
        }