public Task <CursorPagedList <Expense, int> > GetExpensesForBudgetAsync(int budgetId, CursorPaginationParameters searchParams)
        {
            IQueryable <Expense> query = context.Expenses
                                         .Where(expense => expense.BudgetId == budgetId);

            return(CursorPagedList <Expense, int> .CreateAsync(query, searchParams));
        }
        public async Task <ActionResult <CursorPaginatedResponse <ExpenseDto> > > GetExpensesForBudgetAsync(int id, [FromQuery] CursorPaginationParameters searchParams)
        {
            var budget = await budgetRepository.GetByIdAsync(id);

            if (budget == null)
            {
                return(NotFound($"No Budget with Id {id} found."));
            }

            if (!IsUserAuthorizedForResource(budget))
            {
                return(Unauthorized("You can only access your own budget."));
            }

            var expenses = await budgetRepository.GetExpensesForBudgetAsync(id, searchParams);

            var paginatedResponse = CursorPaginatedResponse <ExpenseDto> .CreateFrom(expenses, mapper.Map <IEnumerable <ExpenseDto> >, searchParams.IncludeNodes, searchParams.IncludeEdges);

            return(Ok(paginatedResponse));
        }
 public static Task <CursorPagedList <T> > CreateAsync(IQueryable <T> source, CursorPaginationParameters searchParams)
 {
     return(CreateAsync(source, searchParams.First, searchParams.After, searchParams.Last, searchParams.Before, searchParams.IncludeTotal));
 }
Exemple #4
0
        public async Task <ActionResult <CursorPaginatedResponse <IncomeDto> > > GetIncomesAsync([FromQuery] CursorPaginationParameters searchParams)
        {
            var expenses = await incomeRepository.SearchAsync(searchParams);

            var paginatedResponse = CursorPaginatedResponse <IncomeDto> .CreateFrom(expenses, mapper.Map <IEnumerable <IncomeDto> >, searchParams.IncludeNodes, searchParams.IncludeEdges);

            return(Ok(paginatedResponse));
        }
        public async Task <ActionResult <CursorPaginatedResponse <UserDto> > > GetUsersAsync([FromQuery] CursorPaginationParameters searchParams)
        {
            var users = await userRepository.SearchAsync(searchParams);

            var paginatedResponse = CursorPaginatedResponse <UserDto> .CreateFrom(users, mapper.Map <IEnumerable <UserDto> >, searchParams);

            return(Ok(paginatedResponse));
        }
 public static CursorPaginatedResponse <TDestination, int> CreateFrom <TSource, TDestination>(CursorPagedList <TSource, int> items, Func <IEnumerable <TSource>, IEnumerable <TDestination> > mappingFunction, CursorPaginationParameters searchParams)
     where TSource : class, IIdentifiable <int>
     where TDestination : class, IIdentifiable <int>
 {
     return(CursorPaginatedResponse <TDestination, int> .CreateFrom(items, mappingFunction, searchParams.IncludeNodes, searchParams.IncludeEdges));
 }
Exemple #7
0
 public static Task <CursorPagedList <T, R> > CreateAsync <T, R>(IQueryable <T> source, CursorPaginationParameters searchParams,
                                                                 Func <R, string> ConvertIdToBase64, Func <string, R> ConvertBase64ToIdType, Func <IQueryable <T>, R, IQueryable <T> > AddAfterExp, Func <IQueryable <T>, R, IQueryable <T> > AddBeforeExp)
     where T : class, IIdentifiable <R>
     where R : IEquatable <R>, IComparable <R>
 {
     return(CreateAsync(source, searchParams.First, searchParams.After, searchParams.Last, searchParams.Before, searchParams.IncludeTotal, ConvertIdToBase64, ConvertBase64ToIdType, AddAfterExp, AddBeforeExp));
 }
Exemple #8
0
 public static Task <CursorPagedList <T, int> > CreateAsync <T>(IQueryable <T> source, CursorPaginationParameters searchParams)
     where T : class, IIdentifiable <int>
 {
     return(CreateAsync(source, searchParams.First, searchParams.After, searchParams.Last, searchParams.Before, searchParams.IncludeTotal));
 }
        public async Task <ActionResult <CursorPaginatedResponse <MuscleForReturnDto> > > GetMusclesAsync([FromQuery] CursorPaginationParameters searchParams)
        {
            var muscles = await muscleRepository.SearchAsync(searchParams);

            var paginatedResponse = CursorPaginatedResponse <MuscleForReturnDto> .CreateFrom(muscles, mapper.Map <IEnumerable <MuscleForReturnDto> >);

            return(Ok(paginatedResponse));
        }
Exemple #10
0
        public async Task <ActionResult <CursorPaginatedResponse <BudgetDto> > > GetBudgetsForUserAsync([FromRoute] int userId, [FromQuery] CursorPaginationParameters searchParams)
        {
            if (!IsUserAuthorizedForResource(userId))
            {
                return(Unauthorized("You can only access your own budgets."));
            }

            var budgetParams = mapper.Map <BudgetQueryParameters>(searchParams);

            budgetParams.UserIds.Add(userId);

            var budgets = await budgetRepository.SearchAsync(budgetParams);

            var paginatedResponse = CursorPaginatedResponse <BudgetDto> .CreateFrom(budgets, mapper.Map <IEnumerable <BudgetDto> >, budgetParams);

            return(Ok(paginatedResponse));
        }
Exemple #11
0
        public async Task <ActionResult <CursorPaginatedResponse <GymForReturnDto> > > GetUserGymsAsync([FromRoute] int userId, [FromQuery] CursorPaginationParameters searchParams)
        {
            if (!IsUserAuthorizedForResource(userId))
            {
                return(Forbidden("You can only access your own gyms."));
            }

            var gymSearchParams = this.mapper.Map <GymSearchParameters>(searchParams);

            gymSearchParams.UserId = userId;

            var gyms = await gymRepository.SearchAsync(gymSearchParams);

            var paginatedResponse = CursorPaginatedResponse <GymForReturnDto> .CreateFrom(gyms, mapper.Map <IEnumerable <GymForReturnDto> >, gymSearchParams);

            return(Ok(paginatedResponse));
        }