public async Task <IActionResult> Post( int id, [FromQuery(Name = "token")] string token) { ModelResult <UserFollowInfo> result = TokenUtils.CheckToken <UserFollowInfo>(token, _context); if (result != null) { return(BadRequest(result)); } Session sessionResult = await _context.Sessions .FirstOrDefaultAsync(s => s.SessionToken == token); User follower = await _context.Users .FirstOrDefaultAsync(u => u.UserId == sessionResult.SessionUserId); UserFollow userFollowResult = await _context.UserFollows .FirstOrDefaultAsync(uf => uf.FollowingId == id && uf.FollowerId == sessionResult.SessionUserId); if (userFollowResult != null) { result = new ModelResult <UserFollowInfo>(400, null, "User Followed"); return(BadRequest(result)); } User following = await _context.Users .FirstOrDefaultAsync(u => u.UserId == id); if (following == null) { result = new ModelResult <UserFollowInfo>(404, null, "User Not Exists"); return(BadRequest(result)); } UserFollow userFollow = new UserFollow { Follower = follower, FollowerId = follower.UserId, Following = following, FollowingId = following.UserId }; _context.Add(userFollow); await _context.SaveChangesAsync(); await NoticeUtils.CreateFollowNotice(userFollow, _context); result = new ModelResult <UserFollowInfo>(201, null, "Add Follow Success"); return(Ok(result)); }