Example #1
0
        public async Task <IActionResult> ReportHim(ReportHimAddressModel model)
        {
            var currentUser = await GetKahlaUser();

            var targetUser = await _dbContext.Users.SingleOrDefaultAsync(t => t.Id == model.TargetUserId);

            if (targetUser == null)
            {
                return(this.Protocol(ErrorType.NotFound, $"Could not find target user with id `{model.TargetUserId}`!"));
            }
            if (currentUser.Id == targetUser.Id)
            {
                return(this.Protocol(ErrorType.HasDoneAlready, "You can not report yourself!"));
            }
            var exists = await _dbContext
                         .Reports
                         .AnyAsync((t) => t.TriggerId == currentUser.Id && t.TargetId == targetUser.Id && t.Status == ReportStatus.Pending);

            if (exists)
            {
                return(this.Protocol(ErrorType.HasDoneAlready, "You have already reported the target user!"));
            }
            // All check passed. Report him now!
            _dbContext.Reports.Add(new Report
            {
                TargetId  = targetUser.Id,
                TriggerId = currentUser.Id,
                Reason    = model.Reason
            });
            await _dbContext.SaveChangesAsync();

            return(this.Protocol(ErrorType.Success, "Successfully reported target user!"));
        }
        public async Task <IActionResult> ReportHim(ReportHimAddressModel model)
        {
            var cuser = await _userManager.GetUserAsync(User);

            var targetUser = await _dbContext.Users.SingleOrDefaultAsync(t => t.Id == model.TargetUserId);

            if (targetUser == null)
            {
                return(this.Protocol(ErrorType.NotFound, $"无法找到对应的用户 `{model.TargetUserId}`!"));
            }
            if (cuser.Id == targetUser.Id)
            {
                return(this.Protocol(ErrorType.HasDoneAlready, "您不可以给您自己发送留言!"));
            }
            var exists = await _dbContext
                         .Reports
                         .AnyAsync((t) => t.TriggerId == cuser.Id && t.TargetId == targetUser.Id && t.Status == ReportStatus.Pending);

            _dbContext.Reports.Add(new Report
            {
                TargetId  = targetUser.Id,
                TriggerId = cuser.Id,
                Reason    = model.Reason
            });
            await _dbContext.SaveChangesAsync();

            return(this.Protocol(ErrorType.Success, $"成功的给这个用户发送了留言: {targetUser.Email}!"));
        }