public async Task <ActionResult <IncomeDto> > CreateIncomeAsync([FromBody] CreateIncomeDto incomeForCreateDto) { if (incomeForCreateDto.BudgetId == null) { return(BadRequest("BudgetId is required.")); } var budget = await budgetRepository.GetByIdAsync(incomeForCreateDto.BudgetId.Value); if (budget == null) { return(NotFound($"No budget with id {incomeForCreateDto.BudgetId.Value} found")); } if (!IsUserAuthorizedForResource(budget)) { return(Unauthorized($"You are not authorized to access budget with id {incomeForCreateDto.BudgetId.Value}")); } var newIncome = mapper.Map <Income>(incomeForCreateDto); incomeRepository.Add(newIncome); var saveResult = await incomeRepository.SaveAllAsync(); if (!saveResult) { return(BadRequest("Unable to create expense.")); } var incomeForReturn = mapper.Map <IncomeDto>(newIncome); return(CreatedAtRoute("GetIncomeAsync", new { id = incomeForReturn.Id }, incomeForReturn)); }