예제 #1
0
        /// <summary>
        ///     Updates the status of a follow request.
        /// </summary>
        /// <remarks>
        ///     This throws a <see cref="NotAllowedException"/>
        ///     if the current user id is not equal to either
        ///     the requester or the receiver id.
        /// </remarks>
        /// <param name="id">The follow request id.</param>
        /// <param name="status">The new status.</param>
        public async Task UpdateStatusAsync(FollowRequestId id, FollowRequestStatus status)
        {
            if (id is null)
            {
                throw new ArgumentNullException(nameof(id));
            }
            if (!AppContext.HasUser || (!AppContext.IsUser(id.RequesterId) && !AppContext.IsUser(id.ReceiverId)))
            {
                throw new NotAllowedException();
            }

            var sql = @"
                    UPDATE  application.follow_request AS fr
                    SET     follow_request_status = @follow_request_status
                    WHERE   fr.receiver_id = @receiver_id
                    AND     fr.requester_id = @requester_id";

            await using var context = await CreateNewDatabaseContext(sql);

            context.AddParameterWithValue("follow_request_status", status);
            context.AddParameterWithValue("receiver_id", id.ReceiverId);
            context.AddParameterWithValue("requester_id", id.RequesterId);

            await context.NonQueryAsync(hasRowGuard : false); // No-op
        }
예제 #2
0
파일: FriendDto.cs 프로젝트: edmeta/Meetup
 public FriendDto(int frienderId, int friendeeId)
 {
     FrienderId          = frienderId;
     FriendeeId          = friendeeId;
     FriendRequestStatus = FriendRequestStatus.Pending;
     FollowRequestStatus = FollowRequestStatus.Uninitiated;
 }
예제 #3
0
파일: FriendDto.cs 프로젝트: edmeta/Meetup
 public FriendDto(Friend friend)
 {
     this.Id                  = friend.Id;
     this.FriendeeId          = friend.Friendee.Id;
     this.FrienderId          = friend.Friender.Id;
     this.FriendRequestStatus = friend.FriendRequestStatus;
     this.FollowRequestStatus = friend.FollowRequestStatus;
 }
예제 #4
0
 public Friend()
 {
     FriendRequestStatus = FriendRequestStatus.Pending;
     FollowRequestStatus = FollowRequestStatus.Uninitiated;
 }
 public Task UpdateStatusAsync(FollowRequestId id, FollowRequestStatus status) => throw new NotImplementedException();