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")); }