public async Task SendFriendRequest(FriendRequestVM friendRequest) { var loggedInUserHasAlreadySent = await _chatContext.FriendRequest .Where(p => p.FromUser == friendRequest.FromUser) .AnyAsync(e => e.ToUser == friendRequest.ToUser); var loggedInUserHasAlreadyReceived = await _chatContext.FriendRequest .Where(p => p.FromUser == friendRequest.ToUser) .AnyAsync(e => e.ToUser == friendRequest.FromUser); var sendFriendRequest = true ? !loggedInUserHasAlreadySent && !loggedInUserHasAlreadyReceived : false; if (sendFriendRequest) { var dbModel = new FriendRequest { FromUser = friendRequest.FromUser, ToUser = friendRequest.ToUser, FromUserName = friendRequest.FromUserName, ToUserName = friendRequest.ToUserName }; _chatContext.FriendRequest.Add(dbModel); await _chatContext.SaveChangesAsync(); } }
public async Task <IActionResult> GetAccepted() { User user = await _userManager.GetUserAsync(User); List <FriendRequest> requests = (await _unitOfWork.FriendRequests.GetAccepted(user.Id)).ToList(); List <FriendRequestVM> response = new List <FriendRequestVM>(); foreach (FriendRequest request in requests) { FriendRequestVM model = new FriendRequestVM { Id = request.Id, UserId = request.UserId, UserName = request.User.UserName, SenderId = request.SenderId, SenderName = request.Sender.UserName, SendTime = request.SendTime, Status = request.Status }; response.Add(model); } return(Ok(response)); }
public async Task DeclineFriendRequest(FriendRequestVM friendRequest) { var update = await _chatContext.FriendRequest .Where(p => p.FromUser == friendRequest.FromUser && p.ToUser == friendRequest.ToUser) .FirstOrDefaultAsync(); update.HasAccepted = false; await _chatContext.SaveChangesAsync(); }
public async Task SendToOtherUser(FriendRequestVM response) { var toUser = await _userService.GetUserByUserName(response.FromUserName); var toUserhistory = await CheckFriendRequests(toUser); var toUserHasRequests = toUserhistory.Length == 0 ? false : true; var toUserFriends = await _friendService.GetFriends(toUser); await Clients.User(response.FromUser).ReceiveFriendRequest(toUserHasRequests, toUserhistory, toUserFriends, response.HasAccepted); }
public async Task SendToLoggedinUser(FriendRequestVM response) { var user = await _userService.GetloggedinUser(); var userHistory = await CheckFriendRequests(user); var userHasRequests = userHistory.Length == 0 ? false : true; var userFriends = await _friendService.GetFriends(user); await Clients.Caller.ReceiveFriendRequest(userHasRequests, userHistory, userFriends, response.HasAccepted); }
public async Task SaveToDb(FriendRequestVM response) { if (response.HasAccepted == true) { await _friendRequestService.AcceptFriendRequest(response); await _friendService.AddNewFriend(response); } else if (response.HasAccepted == false) { await _friendRequestService.DeclineFriendRequest(response); } }
public async Task AddNewFriend(FriendRequestVM friendRequest) { var dbModelFirstFriend = new Friends { IdentityId = friendRequest.FromUser, FriendId = friendRequest.ToUser, }; var dbModelSecondFriend = new Friends { IdentityId = friendRequest.ToUser, FriendId = friendRequest.FromUser, }; _chatContext.Friends.Add(dbModelFirstFriend); _chatContext.Friends.Add(dbModelSecondFriend); await _chatContext.SaveChangesAsync(); }
public ActionResult FriendRequest(int Id) { if (Session["loggedUser"] == null) { return(RedirectToAction("Login", "Home")); } Service1Client service = new Service1Client(); UserDTO friend = service.GetUserById(Id); FriendRequestVM model = new FriendRequestVM() { FriendId = Id, Name = friend.Username }; return(View(model)); }
public async Task PostSearchResult([FromBody] TypeaheadUsersVM person) { var loggedinUser = await _userService.GetloggedinUser(); var user = await _userService.GetUserByUserName(person.UserName); var friendRequestVM = new FriendRequestVM { FromUser = loggedinUser.Id, ToUser = person.Id, FromUserName = loggedinUser.UserName, ToUserName = person.UserName }; await _friendRequestService.SendFriendRequest(friendRequestVM); var friendRequests = await _friendRequestService.CheckFriendRequest(user); //var signalRModel = new FriendRequestVM[] { friendRequestVM }; await _friendRequestHubContext.Clients.User(friendRequestVM.ToUser) .ReceiveFriendRequest(true, friendRequests); }
public ActionResult FriendRequest(FriendRequestVM item) { if (Session["loggedUser"] == null) { return(RedirectToAction("Login", "Home")); } UserDTO current = (UserDTO)Session["loggedUser"]; Service1Client service = new Service1Client(); FriendRequestDTO request = new FriendRequestDTO() { Sender = service.GetUserById(current.Id), Receiver = service.GetUserById(item.FriendId), Message = item.Message, SentOn = DateTime.UtcNow }; service.PostFriendRequest(request); return(RedirectToAction("Index", "User")); }
public async Task SendUserResponse(FriendRequestVM response) { await SaveToDb(response); await SendToLoggedinUser(response); await SendToOtherUser(response); }