コード例 #1
0
        public async Task <JsonResult> LikeAsync(string id, [FromBody] LikeVM 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(user_id, status, error) = await this.status.LikeAsync(id, ModelCreator.CreateLike(vm, id, ModelType.Status, user.AvatarUrl));

            if (status != JsonStatus.Succeed)
            {
                return(this.JsonFormat(false, status, error.Read()));
            }

            // send message
            if (user_id != "deleted")
            {
                var(entry, status02, error02) = await this.status.GetStatusDetailsAsync(id);

                if (user.UUID != entry.Creator.UUID)
                {
                    var source = new MessageSource {
                        Type         = ModelType.Status,
                        HostID       = id,
                        TargetID     = id,
                        HostType     = ModelType.Status,
                        HostAbstract = status02 == JsonStatus.Succeed ? entry.Content : null,
                        Abstract     = entry.Content
                    };
                    await this.message.CreateMessageAsync(user, entry.Creator, MessageType.Like, null, source);
                }
            }

            return(this.JsonFormat(true, content: user_id));
        }