예제 #1
0
        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))));
        }