public async Task <IActionResult> UpdateIncome([FromRoute] int incomeId, [FromBody] UpdateIncomeRequest request) { var userId = User.Claims.FirstOrDefault(c => c.Type == "id").Value; // check if user exists var userExists = await _identityService.CheckIfUserExists(userId); if (!userExists) { return(NotFound(new ErrorResponse(new ErrorModel { Message = $"There is no user with id: {userId}" }))); } var incomeInDb = await _incomeService.GetIncomeAsync(incomeId); if (incomeInDb == null) { return(NotFound(new ErrorResponse(new ErrorModel { Message = $"There is no income with id: {incomeId}" }))); } if (incomeInDb.UserId != userId) { return(Forbid()); } var updateIncome = await _incomeService.UpdateIncomeAsync(incomeId, request); if (!updateIncome) { return(BadRequest(new ErrorResponse(new ErrorModel { Message = $"Could not update income with id:{incomeId}" }))); } var updatedIncome = await _incomeService.GetIncomeAsync(incomeId); return(Ok(new Response <IncomeResponse>(_mapper.Map <IncomeResponse>(updatedIncome)))); }