public async Task <Result <BaseExpenseDto> > CreateExpense(BaseModifyExpenseDto modifyExpenseDto, string userId) { if (!(modifyExpenseDto is ModifyExpenseDto expenseDto)) { throw new ArgumentException(); } var hasUserPermission = await _walletPermissionService.HasUserAccess(modifyExpenseDto.WalletId, userId); if (!hasUserPermission) { return(Result <BaseExpenseDto> .Failure()); } var mapped = Mapper.Map <Expense>(expenseDto); mapped.ModifiedById = userId; mapped.CreatedById = userId; await _expenseRepository.CreateExpense(mapped); if (mapped.Id == default) { return(Result <BaseExpenseDto> .Failure()); } var addedExpense = await _expenseRepository.GetExpense(mapped.Id); var addedMapped = Mapper.Map <ExpenseDto>(addedExpense); return(Result <BaseExpenseDto> .Success(addedMapped)); }
public async Task <Result <BaseExpenseDto> > CreateExpense(BaseModifyExpenseDto modifyExpenseDto, string userId) { if (!(modifyExpenseDto is AddCyclicExpenseDto expenseDto)) { throw new ArgumentException(); } var hasUserPermission = await _walletPermissionService.HasUserAccess(modifyExpenseDto.WalletId, userId); if (!hasUserPermission) { return(Result <BaseExpenseDto> .Failure()); } var mapped = Mapper.Map <CyclicExpense>(expenseDto); mapped.ModifiedById = userId; mapped.CreatedById = userId; if (mapped.StartingFrom.Date == DateTime.UtcNow.Date) { mapped.LastApplied = DateTime.UtcNow.Date; } await _cyclicExpenseRepository.CreateExpense(mapped); if (mapped.Id == default) { return(Result <BaseExpenseDto> .Failure()); } return(Result <BaseExpenseDto> .Success(Mapper.Map <BaseExpenseDto>(mapped))); }
public async Task<List<BaseChartDataResponseDto>> GetData(BaseChartDataRequestDto request, ChartType type, string userId) { var hasPermission = await _permissionService.HasUserAccess(request.WalletId, userId); if (!hasPermission) { return new List<BaseChartDataResponseDto>(); } var provider = _providers[type]; return await provider.GetChartData(request); }
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 }); }