public async Task <JsonResult> PostAsync([FromBody] CreateStatusVM vm)
        {
            if (vm == null)
            {
                return(this.JsonFormat(false, JsonStatus.BodyFormIsNull));
            }

            var user = this.GetUser();

            if (user.UUID == null)
            {
                return(this.JsonFormat(false, JsonStatus.UserNotLogin));
            }
            if (user.UUID != vm.UserID)
            {
                return(this.JsonFormat(false, JsonStatus.UserNotMatched));
            }

            if (vm.UserName == null)
            {
                vm.UserName = user.UserName;
            }

            var md = default(Status);

            var(status, succeed, error) = await this.status.InsertOneAsync(md = ModelCreator.CreateStatus(vm, user.AvatarUrl));

            if (!succeed)
            {
                return(this.JsonFormat(false, JsonStatus.StatusInsertFailed, error.Read()));
            }

            await this.logger.Info(
                new Agent(user.UUID, user.UserName, user.AvatarUrl),
                new Target(md.ID, vm.Content, $"image_count : {vm.Images.Count}"),
                ModelType.Status,
                LogAction.Insert,
                this.GetRole());

            return(this.JsonFormat(true, content: status.ID));
        }
Пример #2
0
        public static Model.Models.BsonModels.Status CreateStatus(CreateStatusVM vm, string avatar = null)
        {
            var entry = new Model.Models.BsonModels.Status {
                Content = vm.Content,
                State   = EntryState.Published,
                Creator = new BaseCreator {
                    UUID      = vm.UserID,
                    UserName  = vm.UserName,
                    AvatarUrl = avatar
                },
                Images = vm.Images.Where(i => i != null).Select(i => new BaseImage {
                    OriginUrl = i.OriginURL,
                    Thumbnail = i.ThumbnailURL,
                    Width     = i.Width,
                    Height    = i.Height,
                    IsFile    = false,
                }).ToList()
            };

            return(entry);
        }