public async Task <ActionResult <BoolResult> > Submit([FromBody] SubmitRequest request)
        {
            if (!await _authManager.HasSitePermissionsAsync(request.SiteId,
                                                            MenuUtils.SitePermissions.SettingsContentTag))
            {
                return(Unauthorized());
            }

            var tagNames = await _contentTagRepository.GetTagNamesAsync(request.SiteId);

            foreach (var tagName in ListUtils.GetStringListByReturnAndNewline(request.TagNames))
            {
                if (ListUtils.Contains(tagNames, tagName))
                {
                    continue;
                }
                await _contentTagRepository.InsertAsync(request.SiteId, tagName);
            }

            await _authManager.AddSiteLogAsync(request.SiteId, "新增内容标签");

            return(new BoolResult
            {
                Value = true
            });
        }
        private async Task <(bool Success, string ErrorMessage)> InsertTableStyleAsync(SubmitRequest request)
        {
            var relatedIdentities = ListUtils.GetIntList(request.RelatedIdentities);
            var relatedIdentity   = relatedIdentities[0];

            if (string.IsNullOrEmpty(request.AttributeName))
            {
                return(false, "操作失败,字段名不能为空!");
            }

            if (await _tableStyleRepository.IsExistsAsync(relatedIdentity, request.TableName, request.AttributeName))
            {
                return(false, $@"显示样式添加失败:字段名""{request.AttributeName}""已存在");
            }

            var style = await _databaseManager.IsAttributeNameExistsAsync(request.TableName, request.AttributeName) ? await _tableStyleRepository.GetTableStyleAsync(request.TableName, request.AttributeName, relatedIdentities) : new Models.TableStyle();

            style.RelatedIdentity = relatedIdentity;
            style.TableName       = request.TableName;
            style.AttributeName   = request.AttributeName;
            style.DisplayName     = request.DisplayName;
            style.HelpText        = request.HelpText;
            style.Taxis           = request.Taxis;
            style.InputType       = request.InputType;
            style.DefaultValue    = request.DefaultValue;
            style.Horizontal      = request.Horizontal;
            style.Items           = new List <InputStyleItem>();

            if (request.InputType == InputType.CheckBox || request.InputType == InputType.Radio || request.InputType == InputType.SelectMultiple || request.InputType == InputType.SelectOne)
            {
                if (request.IsRapid)
                {
                    foreach (var rapidValue in ListUtils.GetStringListByReturnAndNewline(request.RapidValues))
                    {
                        var itemInfo = new InputStyleItem
                        {
                            Label    = rapidValue,
                            Value    = rapidValue,
                            Selected = false
                        };
                        style.Items.Add(itemInfo);
                    }
                }
                else
                {
                    var isHasSelected = false;
                    foreach (var styleItem in request.Items)
                    {
                        if (request.InputType != InputType.SelectMultiple && request.InputType != InputType.CheckBox && isHasSelected && styleItem.Selected)
                        {
                            return(false, "操作失败,只能有一个初始化时选定项!");
                        }
                        if (styleItem.Selected)
                        {
                            isHasSelected = true;
                        }

                        var itemInfo = new InputStyleItem
                        {
                            Label    = styleItem.Label,
                            Value    = styleItem.Value,
                            Selected = styleItem.Selected
                        };
                        style.Items.Add(itemInfo);
                    }
                }
            }
            else if (request.InputType == InputType.TextArea || request.InputType == InputType.TextEditor)
            {
                style.Height = request.Height;
            }
            else if (request.InputType == InputType.Customize)
            {
                style.CustomizeCode = request.CustomizeCode;
            }

            await _tableStyleRepository.InsertAsync(relatedIdentities, style);

            return(true, string.Empty);
        }
        private async Task <(bool Success, string ErrorMessage)> UpdateTableStyleAsync(Models.TableStyle style, SubmitRequest request)
        {
            style.AttributeName = request.AttributeName;
            style.DisplayName   = request.DisplayName;
            style.HelpText      = request.HelpText;
            style.Taxis         = request.Taxis;
            style.InputType     = request.InputType;
            style.DefaultValue  = request.DefaultValue;
            style.Horizontal    = request.Horizontal;
            style.Items         = new List <InputStyleItem>();

            if (request.InputType == InputType.CheckBox || request.InputType == InputType.Radio || request.InputType == InputType.SelectMultiple || request.InputType == InputType.SelectOne)
            {
                if (request.IsRapid)
                {
                    foreach (var rapidValue in ListUtils.GetStringListByReturnAndNewline(request.RapidValues))
                    {
                        var itemInfo = new InputStyleItem
                        {
                            Label    = rapidValue,
                            Value    = rapidValue,
                            Selected = false
                        };
                        style.Items.Add(itemInfo);
                    }
                }
                else
                {
                    var isHasSelected = false;
                    foreach (var styleItem in request.Items)
                    {
                        if (request.InputType != InputType.SelectMultiple && request.InputType != InputType.CheckBox && isHasSelected && styleItem.Selected)
                        {
                            return(false, "操作失败,只能有一个初始化时选定项!");
                        }
                        if (styleItem.Selected)
                        {
                            isHasSelected = true;
                        }

                        var itemInfo = new InputStyleItem
                        {
                            Label    = styleItem.Label,
                            Value    = styleItem.Value,
                            Selected = styleItem.Selected
                        };
                        style.Items.Add(itemInfo);
                    }
                }
            }
            else if (request.InputType == InputType.TextArea || request.InputType == InputType.TextEditor)
            {
                style.Height = request.Height;
            }
            else if (request.InputType == InputType.Customize)
            {
                style.CustomizeCode = request.CustomizeCode;
            }

            await _tableStyleRepository.UpdateAsync(style);

            return(true, string.Empty);
        }
        public async Task <ActionResult <ObjectResult <List <int> > > > Submit([FromBody] SubmitRequest request)
        {
            if (!await _authManager.HasSitePermissionsAsync(request.SiteId,
                                                            MenuUtils.SitePermissions.Contents) ||
                !await _authManager.HasContentPermissionsAsync(request.SiteId, request.ChannelId, MenuUtils.ContentPermissions.Add))
            {
                return(Unauthorized());
            }

            var site = await _siteRepository.GetAsync(request.SiteId);

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

            var channel = await _channelRepository.GetAsync(request.ChannelId);

            if (channel == null)
            {
                return(this.Error("无法确定内容对应的栏目"));
            }

            var isChecked = request.CheckedLevel >= site.CheckContentLevel;

            var adminId       = _authManager.AdminId;
            var contentIdList = new List <int>();

            var titles = ListUtils.GetStringListByReturnAndNewline(request.Titles);

            titles.Reverse();

            foreach (var title in titles)
            {
                if (string.IsNullOrWhiteSpace(title))
                {
                    continue;
                }

                var contentInfo = new Content
                {
                    ChannelId       = channel.Id,
                    SiteId          = request.SiteId,
                    AdminId         = adminId,
                    LastEditAdminId = adminId,
                    AddDate         = DateTime.Now,
                    Checked         = isChecked,
                    CheckedLevel    = request.CheckedLevel,
                    Title           = StringUtils.Trim(title),
                    ImageUrl        = string.Empty,
                    Body            = string.Empty
                };

                await _contentRepository.InsertAsync(site, channel, contentInfo);

                contentIdList.Add(contentInfo.Id);
            }

            if (isChecked)
            {
                foreach (var contentId in contentIdList)
                {
                    await _createManager.CreateContentAsync(request.SiteId, channel.Id, contentId);
                }
                await _createManager.TriggerContentChangedEventAsync(request.SiteId, channel.Id);
            }

            return(new ObjectResult <List <int> >
            {
                Value = contentIdList
            });
        }