Exemple #1
0
        public async Task <FriendRequestDto> UpdateFriendRequestStateAsync(
            FriendRequestStateUpdateModel model,
            int receiverId)
        {
            FriendRequest friendRequest =
                await friendRequestRepository.GetByIdAsync(model.SenderId, receiverId);

            FriendRequestState tmp;

            if (friendRequest is null ||
                !friendRequest.RequestToId.Equals(receiverId) ||
                !Enum.TryParse(model.State, true, out tmp))
            {
                return(null);
            }

            friendRequest.State = tmp;

            friendRequest = await friendRequestRepository.UpdateAsync(friendRequest);

            await friendRequestRepository.SaveChangesAsync();

            bool makeFriendResult = false;

            if (friendRequest.State is FriendRequestState.Accepted)
            {
                makeFriendResult =
                    await friendService.MakeFriendsAsync(friendRequest.RequestFromId, friendRequest.RequestToId);
            }

            if (!makeFriendResult)
            {
                return(null);
            }

            await followingService.RemoveFollowingAsync(friendRequest.RequestToId, friendRequest.RequestFromId);

            await followingService.RemoveFollowingAsync(friendRequest.RequestFromId, friendRequest.RequestToId);

            return(mapper.Map <FriendRequest, FriendRequestDto>(friendRequest));
        }
 public async Task <IActionResult> UpdateFriendRequestStateAsync([FromBody] FriendRequestStateUpdateModel model)
 {
     return(this.ConvertResult(
                await friendRequestService.UpdateFriendRequestStateAsync(model, userResolverService.GetUserId())));
 }