public async Task <ServiceResult <CreatedForm> > Reply([FromBody] MakeReplyForm makeReplyForm)
        {
            CreatedForm created = new CreatedForm {
            };
            var user            = await AccountService.UserFromId(makeReplyForm.UserId);

            if (user.State != ServiceResultEnum.Exist)
            {
                return(Result(user.State, created, user.Detail));
            }
            var topic = await TopicService.TopicFromId(makeReplyForm.TopicId);

            if (topic.State != ServiceResultEnum.Exist)
            {
                return(Result(topic.State, created, topic.Detail));
            }
            Reply reply = null;

            if (makeReplyForm.ReferenceId != null)
            {
                var _reply = await TopicService.ReplyFromId(makeReplyForm.ReferenceId ?? 0);

                if (_reply.State == ServiceResultEnum.Exist)
                {
                    reply = _reply.ExtraData;
                }
            }
            var result = await TopicService.MakeReply(user.ExtraData, topic.ExtraData, reply, makeReplyForm.Content, makeReplyForm.Images);

            created.CreatedId = result.ExtraData?.Id;
            return(Result(result.State, created, result.Detail));
        }
        public async Task <ServiceResult <CreatedForm> > CreateTopic([FromBody] CreateTopicForm createTopicForm)
        {
            CreatedForm created = new CreatedForm {
            };
            var zone            = await TopicService.ZoneFromId(createTopicForm.ZoneId);

            if (zone.State != ServiceResultEnum.Exist)
            {
                return(Result(zone.State, created, zone.Detail));
            }
            var user = await AccountService.UserFromId(createTopicForm.UserId);

            if (user.State != ServiceResultEnum.Exist)
            {
                return(Result(user.State, created, user.Detail));
            }
            var tags = await TagService.TagsFromStrings(createTopicForm.Tags);

            if (tags.State != ServiceResultEnum.Exist)
            {
                return(Result(tags.State, created, tags.Detail));
            }
            var result = await TopicService.Create(createTopicForm.Title, user.ExtraData, zone.ExtraData, tags.ExtraData, createTopicForm.Content, createTopicForm.Images);

            created.CreatedId = result.ExtraData?.Id;
            return(Result(result.State, created, result.Detail));
        }