Пример #1
0
        public async Task <IActionResult> AddFriendRequest(string requestedToId)
        {
            if (await _userService.GetUserByIdAsync(requestedToId) == null)
            {
                return(NotFound());
            }

            var requestedById = await _userService.GetCurrentUserIdAsync();


            var requestedTo = await _userService.GetUserByIdAsync(requestedToId);

            if (requestedTo == null)
            {
                return(NotFound());
            }

            if (await _friendService.FriendRequestExistsAsync(requestedById, requestedToId))
            {
                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }


            await _friendService.AddFriendRequestAsync(requestedById,
                                                       (await _userService.GetUserByIdAsync(requestedToId)).Id);

            var userSetting = await _userService.GetUserSettingUserIdAsync(requestedTo.Id);

            if (!userSetting.NotifyWhenUserSendFriendRequest)
            {
                return(RedirectToAction(nameof(HomeController.Index), "Home"));
            }

            var attributes = new List <NotificationAttribute>
            {
                new NotificationAttribute
                {
                    Name  = "Link",
                    Value = Url.Action(nameof(FriendController.FriendRequests), "Friend")
                }
            };

            var notification =
                new Notification(requestedTo, requestedById, NotificationType.SentFriendRequest, attributes);

            requestedTo.CreateNotification(notification);

            await _unitOfWork.CompleteAsync();

            await _notificationService.PushNotification(requestedTo.Id, notification.Id);

            return(RedirectToAction(nameof(HomeController.Index), "Home"));
        }