Example #1
0
        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));
        }
Example #3
0
        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();
        }
Example #4
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
            }
        }
Example #7
0
        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();
        }
Example #8
0
        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));
        }
Example #9
0
        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);
        }
Example #10
0
        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"));
        }
Example #11
0
 public async Task SendUserResponse(FriendRequestVM response)
 {
     await SaveToDb(response);
     await SendToLoggedinUser(response);
     await SendToOtherUser(response);
 }