public ActionResult ConfirmFriendRequest(FriendRequestViewModel friendRequest)
        {
            var rrequestid = EncryptionHelper.Unprotect(friendRequest.request);
            var fRequest   = unitOfWork.FriendshipRequestRepository.GetByID(rrequestid);

            if (fRequest.requestReceiverID == WebSecurity.CurrentUserId)
            {
                Friendship newFriendship = new Friendship();
                newFriendship.userID         = fRequest.requestSenderID;
                newFriendship.friendID       = fRequest.requestReceiverID;
                newFriendship.friendshipDate = DateTime.UtcNow;
                unitOfWork.FriendshipRepository.Insert(newFriendship);
                unitOfWork.FriendshipRequestRepository.Delete(fRequest.requestID);

                unitOfWork.Save();
                NotificationHelper.NotificationInsert(NotificationType.FriendRequestAccept,
                                                      recId: fRequest.requestSenderID,
                                                      elemId: newFriendship.frendshipId,
                                                      data: fRequest.requestReceiverID.ToString());
                unitOfWork.Save();
                return(Json(new {
                    Result = RenderPartialViewHelper.RenderPartialView(this, "AreFriends", null),
                    Message = Resource.Resource.friendRequestConfirmed
                }));
            }
            throw new JsonCustomException(ControllerError.ajaxErrorFriendRequest);
        }
예제 #2
0
        public async void AcceptRequest(FriendRequestViewModel model, FriendRequest request)
        {
            _repository.UpdateRequest(request, model.ReceiverID, model.SenderID, RequestStatus.ACCEPTED);
            _notificationRepository.AddFriendRequestNotification(model.ReceiverID, model.SenderID, "Accepted your friend request.");

            await _context.SaveChangesAsync();
        }
예제 #3
0
        public async void CancelRequest(FriendRequestViewModel model, FriendRequest request)
        {
            _repository.UpdateRequest(request, model.SenderID, model.ReceiverID, RequestStatus.CANCELED);
            _notificationRepository.RemoveFriendRequestNotification(model.ReceiverID, model.SenderID);

            await _context.SaveChangesAsync();
        }
예제 #4
0
        public ActionResult SendFriendRequest(User recipient)
        {
            var request = new FriendRequestViewModel();

            request.Recipient = recipient;
            return(View(request));
        }
        public ActionResult AddFriend(FriendRequestViewModel friendRequest)
        {
            var  onlineUser      = WebSecurity.CurrentUserId;
            var  requesteruserid = (int)EncryptionHelper.Unprotect(friendRequest.user);
            var  formerRequests  = unitOfWork.FriendshipRequestRepository.Get();
            bool isFormerRequest = formerRequests.Any(u => (u.requestReceiverID == requesteruserid && u.requestSenderID == onlineUser) ||
                                                      (u.requestSenderID == requesteruserid && u.requestReceiverID == onlineUser));

            if (ModelState.IsValid)
            {
                if (!isFormerRequest)
                {
                    FriendRequest newFriendRequest = new FriendRequest();
                    newFriendRequest.message           = friendRequest.message;
                    newFriendRequest.requestSenderID   = onlineUser;
                    newFriendRequest.requestReceiverID = requesteruserid;
                    newFriendRequest.requestDate       = DateTime.UtcNow;

                    unitOfWork.FriendshipRequestRepository.Insert(newFriendRequest);
                    unitOfWork.Save();

                    friendRequest.request = EncryptionHelper.Protect(newFriendRequest.requestID);
                    return(Json(new {
                        Result = RenderPartialViewHelper.RenderPartialView(this, "FRSentBefore", friendRequest),
                        Message = Resource.Resource.friendRequestSent
                    }));
                }
            }
            throw new JsonCustomException(ControllerError.ajaxErrorFriendRequestAdd);
        }
예제 #6
0
        public void FriendRequest_CancelRequest_NotFound()
        {
            FriendRequestViewModel model = GetInverseModel();
            var result = _controller.Cancel(model);

            Assert.IsTrue(result.GetType().Equals(typeof(NotFoundObjectResult)));
        }
예제 #7
0
        public ActionResult ViewFriendRequest(int profileId)
        {
            var ctx = new AppDbContext();

            try
            {
                FriendRequestViewModel viewModel = new FriendRequestViewModel();

                var result = (from FriendRequest in ctx.FriendRequests
                              join Profile in ctx.Profiles on FriendRequest.SenderId equals Profile.ProfileId
                              where FriendRequest.RecieverId == profileId
                              select new FriendRequestViewModel
                {
                    ProfileId = Profile.ProfileId,
                    ImagePath = Profile.ImagePath,
                    Förnamn = Profile.Förnamn,
                    Efternamn = Profile.Efternamn,
                }).ToList();


                return(View(result));
            }
            catch (Exception)
            {
                return(RedirectToAction("GenericError", "ErrorHandler"));
            }
        }
예제 #8
0
        public async Task <IActionResult> UpdateRequest(FriendRequestViewModel model)
        {
            var friendRequestDTO = _mapper.Map <FriendRequestDTO>(model);

            await _service.Update(friendRequestDTO);

            return(RedirectToAction(nameof(Index)));
        }
예제 #9
0
        public void FriendRequest_RemoveRequest_NotFound()
        {
            FriendRequestViewModel model = GetModel();
            var result = _controller.Remove(model);


            Assert.IsTrue(result.GetType().Equals(typeof(NotFoundObjectResult)));
        }
예제 #10
0
        public void SendFriendRequest(string endUserId, string loggedInUserId)
        {
            var model = new FriendRequestViewModel()
            {
                UserId    = loggedInUserId,
                EndUserId = endUserId
            };

            _httpClient.PostData("User/SendFriendRequest", model);
        }
예제 #11
0
        public IHttpActionResult GetFriendRequests()
        {
            var currentUserId = this.UserIdProvider.GetUserId();
            var currentUser   = this.Data.Users.Find(currentUserId);
            var requests      = currentUser.FriendRequests
                                .Where(r => r.FriendRequestStatus == FriendRequestStatus.AwaitingApproval)
                                .AsQueryable()
                                .Select(FriendRequestViewModel.Create(currentUser));

            return(this.Ok(requests));
        }
        protected async override void OnAppearing()
        {
            base.OnAppearing();
            IsBusy = true;


            newFriendsRequestRelationship = await App.RelationshipManager.GetNewFriendsRequest(App.mUser.ID);

            BindingContext = new FriendRequestViewModel(newFriendsRequestRelationship, this.Navigation);
            IsBusy         = false;
        }
예제 #13
0
        public IActionResult Cancel([FromBody] FriendRequestViewModel model)
        {
            var request = _repository.GetRequest(model.SenderID, model.ReceiverID);

            if (request == null)
            {
                return(NotFound("Friend request has not been found!"));
            }

            _service.CancelRequest(model, request);
            return(Ok("Friend request has been canceled."));
        }
예제 #14
0
        public void FriendRequest_SendRequest_Sucess()
        {
            FriendRequestViewModel model = GetModel();
            var result = _controller.Send(model);

            Assert.IsTrue(result.GetType().Equals(typeof(OkObjectResult)));

            var status = _repository.GetStatus(model.ReceiverID, model.SenderID);

            Assert.IsNotNull(status);
            // If request has been succesfully added, then it's status should be PENDING
            Assert.AreEqual(status, RequestStatus.PENDING);
        }
예제 #15
0
 public IActionResult FriendRequests(FriendRequest friendRequest)
 {
     if (HttpContext.Session.GetInt32("Id") == null)
     {
         return(RedirectToAction("Login", "Account"));
     }
     else
     {
         friendRequest.RecieverId = (int)HttpContext.Session.GetInt32("Id");
         FriendRequestViewModel friendRequestViewModel = new FriendRequestViewModel();
         friendRequestViewModel.friendRequests = new List <FriendRequest>();
         friendRequestViewModel.friendRequests.AddRange(_friendRequestLogic.GetFriendRequests(friendRequest));
         return(View(friendRequestViewModel));
     }
 }
        public ActionResult IgnoreFriendRequest(FriendRequestViewModel friendRequest)
        {
            var requestid      = EncryptionHelper.Unprotect(friendRequest.request);
            var requstToIgnore = unitOfWork.FriendshipRequestRepository.GetByID(requestid);

            requstToIgnore.ignore = true;
            unitOfWork.FriendshipRequestRepository.Update(requstToIgnore);
            unitOfWork.Save();
            return(Json(new
            {
                Success = true,
                Result = RenderPartialViewHelper.RenderPartialView(this, "AreFriends", null),
                Message = Resource.Resource.friendRequestIgnore
            }));
        }
예제 #17
0
        public IActionResult GetStatus([FromBody] FriendRequestViewModel model)
        {
            RequestStatus status = _repository.GetStatus(model.ReceiverID, model.SenderID);

            switch (status)
            {
            case RequestStatus.NO_REQUEST:
                return(Ok(-1));

            case RequestStatus.PENDING_INCOMING:
                return(Ok(200));

            default:
                return(Ok(status));
            }
        }
        public ActionResult DenyFriendRequest(FriendRequestViewModel friendRequest)
        {
            var requestid = EncryptionHelper.Unprotect(friendRequest.request);

            unitOfWork.FriendshipRequestRepository.Delete(requestid);
            unitOfWork.Save();

            friendRequest.message = null;
            friendRequest.request = null;
            return(Json(new
            {
                Success = true,
                Result = RenderPartialViewHelper.RenderPartialView(this, "NoFRBefore", friendRequest),
                Message = Resource.Resource.friendRequestDenied
            }));
        }
        public ActionResult FriendsRequest(string UId)
        {
            NullChecker.NullCheck(new object[] { UId });
            var userid = EncryptionHelper.Unprotect(UId);

            if (WebSecurity.CurrentUserId == userid)
            {
                return(new EmptyResult());
            }
            var  onlineUserID = WebSecurity.CurrentUserId;
            bool areFriends   = unitOfWork.FriendshipRepository.Get().Any(t => (t.userID == userid && t.friendID == onlineUserID) ||
                                                                          (t.friendID == userid && t.userID == onlineUserID));

            if (areFriends)
            {
                ViewData["userToUnfriend"] = UId;
                return(PartialView("AreFriends"));
            }
            else
            {
                FriendRequestViewModel viewmodel = new FriendRequestViewModel();
                var requestIsSent     = unitOfWork.FriendshipRequestRepository.Get(t => t.requestSenderID == userid && t.requestReceiverID == onlineUserID).SingleOrDefault();
                var requestISReceived = unitOfWork.FriendshipRequestRepository.Get(t => t.requestReceiverID == userid && t.requestSenderID == onlineUserID).SingleOrDefault();
                var ignored           = unitOfWork.FriendshipRequestRepository.Get(t => t.requestReceiverID == userid && t.requestSenderID == onlineUserID && t.ignore).SingleOrDefault();
                if (ignored != null)
                {
                    return(new EmptyResult());
                }
                if (requestIsSent != null)
                {
                    viewmodel.request = EncryptionHelper.Protect(requestIsSent.requestID);
                    viewmodel.user    = UId;
                    return(PartialView("FRRecievedBefore", viewmodel));
                }
                else if (requestISReceived != null)
                {
                    viewmodel.request = EncryptionHelper.Protect(requestISReceived.requestID);
                    viewmodel.user    = UId;
                    return(PartialView("FRSentBefore", viewmodel));
                }
                else
                {
                    viewmodel.user = UId;
                    return(PartialView("NoFRBefore", viewmodel));
                }
            }
        }
예제 #20
0
        public IActionResult Remove([FromBody] FriendRequestViewModel model)
        {
            var request = _repository.GetRequest(model.SenderID, model.ReceiverID);

            if (request == null)
            {
                request = _repository.GetRequest(model.ReceiverID, model.SenderID);
            }

            if (request == null)
            {
                return(NotFound("Users are not friends!"));
            }

            _service.RemoveRequest(model, request);
            return(Ok("Friend has been removed successfully."));
        }
예제 #21
0
        public void SendRequest(FriendRequestViewModel model)
        {
            var request = _repository.GetRequest(model.SenderID, model.ReceiverID);

            if (request == null)
            {
                request = _repository.GetRequest(model.ReceiverID, model.SenderID);
            }

            if (request == null)
            {
                _repository.CreateRequest(model.SenderID, model.ReceiverID, RequestStatus.PENDING);
            }
            else
            {
                _repository.UpdateRequest(request, model.SenderID, model.ReceiverID, RequestStatus.PENDING);
            }
        }
        public ActionResult CancelFriendRequest(FriendRequestViewModel friendRequest)
        {
            var requestid         = EncryptionHelper.Unprotect(friendRequest.request);
            var sentFriendRequest = unitOfWork.FriendshipRequestRepository.GetByID(requestid);

            if (sentFriendRequest.requestSenderID == WebSecurity.CurrentUserId)
            {
                unitOfWork.FriendshipRequestRepository.Delete(requestid);
                unitOfWork.Save();
                friendRequest.message = null;
                friendRequest.request = null;
                return(Json(new {
                    Result = RenderPartialViewHelper.RenderPartialView(this, "NoFRBefore", friendRequest),
                    Message = Resource.Resource.friendRequestCanceled
                }));
            }
            throw new JsonCustomException(ControllerError.ajaxErrorFriendRequest);
        }
        public IActionResult AddFriend([FromBody] FriendRequestViewModel friendRequestVieModel)
        {
            try
            {
                var checkSuccess = _friendshipRepo.AddFriend(friendRequestVieModel.FromUserId, friendRequestVieModel.ToUserId);
                if (checkSuccess)
                {
                    //get the UserName of the request sender and create a notification
                    var RequestSender = _userRepo.Find(u => u.Id == friendRequestVieModel.FromUserId).SingleOrDefault();
                    var notification  = new Notification
                    {
                        NotificationTypeId       = (int)NotificationTypeConstants.FriendRequestSent,
                        NotificationDetails      = $"{RequestSender.FirstName + ' ' + RequestSender.LastName} sent you a friend request",
                        NotificationAcknowledged = false,
                        CreatedBy       = friendRequestVieModel.FromUserId,
                        CreatedDateTime = DateTime.UtcNow
                    };
                    _notificationRespository.Add(notification);
                    _notificationRespository.SaveChanges();

                    //get the notification id and save it in the UserNotificationRefTable
                    int NotificationId      = notification.NotificationId;
                    var userNotificationRef = new UserNotificationRef
                    {
                        NotificationId  = NotificationId,
                        RecipientUserId = friendRequestVieModel.ToUserId
                    };
                    _userNotificationRef.Add(userNotificationRef);
                    _userNotificationRef.SaveChanges();

                    return(Ok(true));
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (Exception e)
            {
                return(BadRequest());
            }
        }
        public ActionResult UnFriend(string UTU)
        {
            var onlineUserID       = WebSecurity.CurrentUserId;
            var utuid              = EncryptionHelper.Unprotect(UTU);
            var frienshtipToDelete = unitOfWork.FriendshipRepository.Get(f => (f.userID == onlineUserID && f.friendID == utuid) ||
                                                                         (f.friendID == onlineUserID && f.userID == utuid)).Single();

            //delete notifications
            //frienshtipToDelete.Notifications.Select(n => n.notificationID as object).ToList().ForEach(unitOfWork.NotificationRepository.Delete);
            unitOfWork.FriendshipRepository.Delete(frienshtipToDelete.frendshipId);
            unitOfWork.Save();

            FriendRequestViewModel viewmodel = new FriendRequestViewModel();

            viewmodel.user = UTU;
            return(Json(new
            {
                Result = RenderPartialViewHelper.RenderPartialView(this, "NoFRBefore", viewmodel),
                Message = Resource.Resource.friendRemoved
            }));
        }
예제 #25
0
        public async void SendRequest(FriendRequestViewModel model)
        {
            var request = _repository.GetRequest(model.SenderID, model.ReceiverID);

            if (request == null)
            {
                request = _repository.GetRequest(model.ReceiverID, model.SenderID);
            }

            if (request == null)
            {
                _repository.CreateRequest(model.SenderID, model.ReceiverID, RequestStatus.PENDING);
            }
            else
            {
                _repository.UpdateRequest(request, model.SenderID, model.ReceiverID, RequestStatus.PENDING);
            }

            _notificationRepository.AddFriendRequestNotification(model.ReceiverID, model.SenderID, "Sent you a friend request.");

            await _context.SaveChangesAsync();
        }
        // GET : /api/friendrequests
        public IEnumerable <FriendRequestViewModel> GetFriendRequests()
        {
            var currentUser             = userManager.FindById(User.Identity.GetUserId());
            var friendRequests          = _context.FriendRequests.ToList().FindAll(x => (x.TargetId == currentUser.Id) && (x.Waiting == true));
            var friendRequestViewModels = new List <FriendRequestViewModel>();

            foreach (var request in friendRequests)
            {
                //var user = userManager.FindById(request.InitiatorId);

                var friendRequestViewModel = new FriendRequestViewModel
                {
                    InitiatorId   = request.InitiatorId,
                    TargetId      = request.TargetId,
                    InitiatorName = userManager.FindById(request.InitiatorId).Name
                };
                friendRequestViewModels.Add(friendRequestViewModel);
            }


            return(friendRequestViewModels);
        }
예제 #27
0
        private List <FriendRequestViewModel> BuildFriendRequestModel(List <FriendRequest> friendRequestEntities)
        {
            var model = new List <FriendRequestViewModel>();

            friendRequestEntities.ForEach(fr =>
            {
                var requester = db.Profiles.Find(fr.RequesterProfileId);

                var friendRequestModel = new FriendRequestViewModel()
                {
                    RequesterId               = requester.Id,
                    RequesterFirstName        = requester.FirstName,
                    RequesterLastName         = requester.LastName,
                    CreatedOn                 = fr.CreatedOn,
                    RequesterProfilePictureId = requester.ProfilePhotoId
                };

                model.Add(friendRequestModel);
            });

            return(model);
        }
예제 #28
0
        private void MessageHandler(Message tempMessage)
        {
            switch (tempMessage.Code)
            {
            case MessageCode.C002:     // Implement Later
                Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() {
                    _handler.DisplayName = tempMessage.MessageString;
                    RaisePropertyChanged("ScreenDisplayName");
                }));
                break;

            case MessageCode.C003:     // Message from another User
                Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() {
                    _messageCollections.Add(tempMessage, _handler.myID);
                }));
                break;

            case MessageCode.C004:     // Implement Later
                break;

            case MessageCode.C005:     // Message sending fail
                Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() {
                    _messageCollections.RemoveByTimeStamp(tempMessage);
                }));
                break;

            case MessageCode.C006:     // Implement Later
                break;

            case MessageCode.C007:     // Connection Closing / Connection Test Fail
                Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() {
                    Handler.CloseConnection();
                }));
                break;

            case MessageCode.C009:
                Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() {
                    FriendRequestCollection.Add(new FriendRequestViewModel(tempMessage.senderID, _handler.myID,
                                                                           tempMessage.MessageString, false));
                }));
                break;

            case MessageCode.C010:
                Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() {
                    SelectedUser = null;
                    MTObservableCollection <User> allFriends = Handler.ParseC010Message(tempMessage.MessageString);
                    Users.Clear();
                    foreach (User friend in allFriends)
                    {
                        if (friend.IsOnline)
                        {
                            Users.Add(friend);
                        }
                    }
                }));
                break;

            case MessageCode.C011:     // Implement Later
                break;

            case MessageCode.C012:     // Implement Later
                break;

            case MessageCode.C013:     // Implement Later
                break;

            case MessageCode.C016:     // Implement Later
                break;

            case MessageCode.C017:     // Implement Later
                break;

            case MessageCode.C018:     // Friend Request Was Accepted
                Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() {
                    FriendRequestViewModel tempFR = FriendRequestCollection.Single(s => s.IDnumeric == tempMessage.senderID);
                    FriendRequestCollection.Remove(tempFR);
                    RaisePropertyChanged("FriendRequestCollection");
                    Users.Add(new User(tempFR.IDnumeric, tempFR.DisplayName));
                    SelectedFriendRequest = null;
                }));
                break;

            case MessageCode.C020:
                Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate() {
                    for (int i = 0; i < FriendRequestCollection.Count; i++)
                    {
                        if (FriendRequestCollection[i].IsSent &&
                            FriendRequestCollection[i].DisplayName == "_" &&
                            FriendRequestCollection[i].IDnumeric == tempMessage.senderID)
                        {
                            FriendRequestCollection[i].DisplayName = tempMessage.MessageString;
                            break;
                        }
                    }
                }));
                break;

            default:
                throw new Exception("Invalid Message Code");
            }
        }
예제 #29
0
 public void AcceptRequest(FriendRequestViewModel model, FriendRequest request)
 {
     _repository.UpdateRequest(request, model.ReceiverID, model.SenderID, RequestStatus.ACCEPTED);
 }
예제 #30
0
 public void RemoveRequest(FriendRequestViewModel model, FriendRequest request)
 {
     _repository.UpdateRequest(request, model.SenderID, model.ReceiverID, RequestStatus.CANCELED);
 }