Beispiel #1
0
        public async Task <IActionResult> Create(LayerRuleCreateViewModel model)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageLayers))
            {
                return(Forbid());
            }

            var layers = await _layerService.LoadLayersAsync();

            var layer = layers.Layers.FirstOrDefault(x => String.Equals(x.Name, model.Name));

            if (layer == null)
            {
                return(NotFound());
            }

            var conditionGroup = FindConditionGroup(layer.LayerRule, model.ConditionGroupId);

            if (conditionGroup == null)
            {
                return(NotFound());
            }

            var condition = _factories.FirstOrDefault(x => x.Name == model.ConditionType)?.Create();

            if (condition == null)
            {
                return(NotFound());
            }

            var editor = await _displayManager.UpdateEditorAsync(condition, updater : _updateModelAccessor.ModelUpdater, isNew : true);

            if (ModelState.IsValid)
            {
                _conditionIdGenerator.GenerateUniqueId(condition);
                conditionGroup.Conditions.Add(condition);
                await _layerService.UpdateAsync(layers);

                await _notifier.SuccessAsync(H["Condition added successfully."]);

                return(RedirectToAction(nameof(Edit), "Admin", new { name = model.Name }));
            }

            model.Editor = editor;

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Beispiel #2
0
        public async Task <IActionResult> Create(string queryType, string name, string type, string conditionGroupId)
        {
            if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageLayers))
            {
                return(Forbid());
            }

            var layers = await _layerService.GetLayersAsync();

            var layer = layers.Layers.FirstOrDefault(x => String.Equals(x.Name, name));

            if (layer == null)
            {
                return(NotFound());
            }

            var conditionGroup = FindConditionGroup(layer.LayerRule, conditionGroupId);

            if (conditionGroup == null)
            {
                return(NotFound());
            }

            var condition = _factories.FirstOrDefault(x => x.Name == type)?.Create();

            if (condition == null)
            {
                return(NotFound());
            }

            var model = new LayerRuleCreateViewModel
            {
                Name             = name,
                ConditionGroupId = conditionGroup.ConditionId,
                ConditionType    = type,
                Editor           = await _displayManager.BuildEditorAsync(condition, updater : _updateModelAccessor.ModelUpdater, isNew : true)
            };

            return(View(model));
        }