コード例 #1
0
        public async Task <List <ExpenseSearchResult> > Search(ExpenseSearchOptionsDto searchOptions, string userId)
        {
            searchOptions.SearchTerm = string.IsNullOrEmpty(searchOptions.SearchTerm) ? string.Empty : searchOptions.SearchTerm;
            var searchTermParam    = new SqlParameter("searchTerm", searchOptions.SearchTerm);
            var walletIdParam      = new SqlParameter("walletId", searchOptions.WalletId.ToDeobfuscated());
            var dateFromParam      = new SqlParameter("dateFrom", searchOptions.DateFrom);
            var dateToParam        = new SqlParameter("dateTo", searchOptions.DateTo);
            var batchSizeParam     = new SqlParameter("batchSize", searchOptions.BatchSize);
            var toSkipParam        = new SqlParameter("toSkip", searchOptions.Page * searchOptions.BatchSize);
            var currentUserIdParam = new SqlParameter("currentUserId", userId);
            var categoryParam      = new SqlParameter("category", (int)searchOptions.Category);

            if (searchOptions.Category == ExpenseCategory.All)
            {
                categoryParam.Value = DBNull.Value;
            }
            var typeParam = new SqlParameter("type", (int)searchOptions.Type);

            if (searchOptions.Type == BalanceType.All)
            {
                typeParam.Value = DBNull.Value;
            }

            return(await Context.SearchExpenses
                   .FromSql(
                       "exec budget_SearchExpenses @searchTerm, @walletId, @dateFrom, @dateTo, @batchSize, @toSkip, @currentUserId, @category, @type",
                       searchTermParam, walletIdParam, dateFromParam, dateToParam, batchSizeParam, toSkipParam, currentUserIdParam,
                       categoryParam, typeParam).ToListAsync());
        }
コード例 #2
0
        public async Task <IActionResult> Search([FromQuery] ExpenseSearchOptionsDto searchOptions)
        {
            searchOptions.DateFrom = searchOptions.DateFrom.StartOfDay();
            searchOptions.DateTo   = searchOptions.DateTo.EndOfDay();
            var result = await _expenseSearchService.Search(searchOptions, UserId);

            return(Ok(result));
        }
コード例 #3
0
        public async Task <PagedSearchResults <ExpenseDto> > Search(ExpenseSearchOptionsDto searchOptions, string userId)
        {
            var hasUserAccess = await _walletPermissionService.HasUserAccess(searchOptions.WalletId.ToDeobfuscated(), userId);

            if (!hasUserAccess)
            {
                return(new PagedSearchResults <ExpenseDto>());
            }

            var resultsFromDb = await _expenseRepository.Search(searchOptions, userId);

            return(new PagedSearchResults <ExpenseDto>
            {
                Results = Mapper.Map <List <ExpenseDto> >(resultsFromDb),
                Total = resultsFromDb.FirstOrDefault()?.Total ?? 0
            });
        }