public ActionResult Create(FilterFormModel model)
        {
            var filter = FilterService.FilterNew();

            Csla.Data.DataMapper.Map(model, filter, true);

            filter = FilterService.FilterSave(filter);

            if (filter.IsValid)
            {
                return new JsonResult { Data = this.Url.Action("Edit", new { id = filter.FilterId, message = Resources.SaveSuccessfulMessage }) };
            }

            this.Map(filter, model, false);

            return this.View(model);
        }
        public ActionResult Edit(int id, string message)
        {
            var model = new FilterFormModel();

            try
            {
                var filter = FilterService.FilterFetch(id);

                model.Message = message;

                this.Map(filter, model, true);
            }
            catch (Exception ex)
            {
                this.ModelState.AddModelError(string.Empty, ex.Message);
            }

            return this.View(model);
        }
        public ActionResult Create(string target, string query)
        {
            var model = new FilterFormModel();

            try
            {
                var filter = FilterService.FilterNew();

                filter.Target = target;
                filter.Query = query;

                this.Map(filter, model, true);
            }
            catch (Exception ex)
            {
                this.ModelState.AddModelError(string.Empty, ex.Message);
            }

            return this.View(model);
        }
        public ActionResult Edit(int id, FilterFormModel model)
        {
            var filter = FilterService.FilterFetch(id);

            Csla.Data.DataMapper.Map(model, filter, true);

            filter = FilterService.FilterSave(filter);

            if (filter.IsValid)
            {
                model.Message = Resources.SaveSuccessfulMessage;
            }

            this.Map(filter, model, true);

            return this.View(model);
        }
        public FilterFormModel Map(Business.Filter filter, FilterFormModel model, bool ignoreBrokenRules)
        {
            Csla.Data.DataMapper.Map(filter, model, true);

            model.Tab = filter.Target;
            model.IsNew = filter.IsNew;
            model.IsValid = filter.IsValid;

            if (!ignoreBrokenRules)
            {
                foreach (var brokenRule in filter.BrokenRulesCollection)
                {
                    this.ModelState.AddModelError(string.Empty, brokenRule.Description);
                }
            }

            return model;
        }