public IActionResult GetMembershipRequests([FromBody] MembershipRequestFilter filter)
 {
     try
     {
         var email = User.Claims.SingleOrDefault(c => c.Type == "email")?.Value;
         if (string.IsNullOrEmpty(email))
         {
             return(BadRequest("Authorization failed."));
         }
         return(Ok(_service.GetClubMembershipRequests(filter, email)));
     }
     catch (Exception e)
     {
         return(BadRequest(e.Message));
     }
 }
 public Page <MembershipRequestDto> GetClubMembershipRequests(MembershipRequestFilter filter, string email)
 {
     try
     {
         var existingMember = _unitOfWork.Users.Get(t => t.Email == email).FirstOrDefault();
         if (existingMember == null)
         {
             throw new ArgumentException("User not found");
         }
         var club = _unitOfWork.Clubs.GetAsQueryable(t => t.Id == filter.EntityId).Include(t => t.MembershipRequests).ThenInclude(t => t.User).FirstOrDefault();
         if (club == null)
         {
             throw new ArgumentException("Club not found");
         }
         var allRequests = string.IsNullOrEmpty(filter.SearchBy) ?
                           club.MembershipRequests.Where(t => t.Status == filter.Status).ToList() :
                           club.MembershipRequests.Where(t => t.Nickname.ToLower().Contains(filter.SearchBy.ToLower()) && t.Status == filter.Status).ToList();
         var skip         = filter.Page == 0 ? 0 : (filter.Page - 1) * (filter.PageSize ?? 25);
         var take         = filter.PageSize ?? 25;
         var orderByField = string.IsNullOrEmpty(filter.OrderBy) ? nameof(MembershipRequest.Created) : filter.OrderBy;
         var allCount     = allRequests.Count;
         var slice        = (filter.Asc ?
                             allRequests.OrderBy(t => typeof(MembershipRequest).GetProperty(orderByField).GetValue(t)) :
                             allRequests.OrderByDescending(t => typeof(MembershipRequest).GetProperty(orderByField).GetValue(t)))
                            .Skip(skip)
                            .Take(take);
         var page = new Page <MembershipRequestDto>(filter.Page, filter.PageSize ?? 25, allCount, slice.Select(t => t.ToDto()));
         return(page);
     }
     catch (ArgumentException)
     {
         throw;
     }
     catch (Exception e)
     {
         _logger.LogError(e.Message);
         throw new Exception("Error while fetching club membership requests. Please try a bit later");
     }
 }