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> UpdateExpense(BaseModifyExpenseDto editExpenseDto, int expenseId, string userId) { if (!(editExpenseDto is ModifyExpenseDto expenseDto)) { throw new ArgumentException(); } var expense = await _expenseRepository.GetExpense(expenseId); if (expense == null) { return(Result.Failure()); } var hasUserPermission = await _walletPermissionService.HasUserAccess(expense.WalletId, userId); if (!hasUserPermission) { return(Result <BaseExpenseDto> .Failure()); } expense.Date = expenseDto.Date; expense.Category = expenseDto.Category; expense.Type = expenseDto.Type; expense.Name = expenseDto.Name; expense.Place = expenseDto.Place; expense.Price = expenseDto.Price; expense.ModifiedById = userId; var result = _expenseRepository.UpdateExpense(expense); return(result != default ? Result.Success() : Result.Failure()); }
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))); }