public static Comment CreateComment(CommentAddVM vm, string parent_id, ModelType parent_type, string avatar = null) { return(new Comment { Creator = new BaseCreator { UserName = vm.UName, UUID = vm.UID, AvatarUrl = avatar }, Mentioned = (vm.MContent == null) ? null :new BaseCreator { UUID = vm.MContent.UUID, UserName = vm.MContent.UserName }, CommentContent = vm.Content, ParentID = parent_id, ParentType = parent_type }); }
public async Task <JsonResult> AddCommentAsync(string id, [FromBody] CommentAddVM vm) { if (vm == null) { return(this.JsonFormat(false, JsonStatus.BodyFormIsNull)); } var creator = this.GetUser(); if (creator.UUID == null) { return(this.JsonFormat(false, JsonStatus.UserNotLogin)); } if (creator.UUID != vm.UID) { return(this.JsonFormat(false, JsonStatus.UserNotMatched)); } if (vm.UName == null) { vm.UName = creator.UserName; } var model = default(Comment); var(status, error) = default((JsonStatus, Model.Utils.Error)); if (vm.IsReply) { (status, error) = await this.status.Comments.AddReplyForCommentAsync( vm.MContent.CommentID, model = ModelCreator.CreateComment(vm, vm.MContent.CommentID, ModelType.Comment, creator.AvatarUrl)); } else { (status, error) = await this.status.AddCommentAsync( id, model = ModelCreator.CreateComment(vm, id, ModelType.Status, creator.AvatarUrl)); } if (status != JsonStatus.Succeed) { return(this.JsonFormat(false, status, error.Read())); } // send message var(entry, status02, error02) = await this.status.GetStatusDetailsAsync(id); var target = default(BaseCreator); if (vm.IsReply) { target = new BaseCreator { UUID = vm?.MContent?.UUID, UserName = vm?.MContent?.UserName } } ; else { target = new BaseCreator { UUID = entry.Creator.UUID, UserName = entry.Creator.UserName } }; if (creator.UUID != target.UUID) { var source = new MessageSource { Type = ModelType.Comment, HostID = id, TargetID = model.ID, HostType = ModelType.Status, HostAbstract = status02 == JsonStatus.Succeed ? entry.Content : null, Abstract = model.CommentContent, ParentID = vm?.MContent?.CommentID, ParentAbstract = vm?.MContent?.Content }; if (vm.IsReply) { await this.message.CreateMessageAsync(creator, target, MessageType.Reply, null, source); } else { await this.message.CreateMessageAsync(creator, target, MessageType.Comment, null, source); } } return(this.JsonFormat(true, content: model)); }