public async Task<HttpResponseMessage> SendFriendRequest([FromUri] string username) { var targetUser = this.Data.Users.FirstOrDefault(u => u.UserName == username); if (targetUser == null) { return await this.NotFound().ExecuteAsync(new CancellationToken()); } var currentUserId = User.Identity.GetUserId(); var currentUser = this.Data.Users.FirstOrDefault(x => x.Id == currentUserId); if (currentUser == null) { return await this.BadRequest("Invalid user token! Please login again!").ExecuteAsync(new CancellationToken()); } if (currentUser == targetUser) { return await this.BadRequest("You cannot send friendship request to yourself.").ExecuteAsync(new CancellationToken()); } if (targetUser.Friends.Contains(currentUser)) { return await this.BadRequest("User is already a friend.").ExecuteAsync(new CancellationToken()); } if (targetUser.Requests.Any(r => r.Sender == currentUser)) { return await this.BadRequest("A request already exists.").ExecuteAsync(new CancellationToken()); } var request = new FriendshipRequest() { Sender = currentUser, Recipient = targetUser, Status = FriendRequestStatus.Pending }; targetUser.Requests.Add(request); this.Data.SaveChanges(); return await this.Ok("Friend request sent.").ExecuteAsync(new CancellationToken()); }
private MessageViewModel DenyFriendRequest(FriendshipRequest request, ApplicationUser me) { request.Status = FriendRequestStatus.Rejected; this.Data.SaveChanges(); return new MessageViewModel("Friend request successfully declined."); }
private MessageViewModel ApproveFriendRequest(FriendshipRequest request, ApplicationUser me) { request.Status = (FriendRequestStatus)1; me.Friends.Add(request.Sender); this.Data.SaveChanges(); return new MessageViewModel("Friend request successfully approved."); }
private MessageViewModel ProcessCommand(bool isApproved, FriendshipRequest request, ApplicationUser me) { MessageViewModel message = null; if (request.Status == FriendRequestStatus.Pending) { if (isApproved == false) { message = DenyFriendRequest(request, me); } else { message = ApproveFriendRequest(request, me); } } else if (request.Status == FriendRequestStatus.Approved) { message = new MessageViewModel("Friend request has already been approved. " + request.Sender.UserName + " is among your friend list."); } else { message = new MessageViewModel("Friend request has already been denied."); } return message; }