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)); }
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); }