public async Task <DebtPayment> NewDebtPaymentAsync(DebtPaymentRequest request, int debtId, string userId) { var debtPaymentDto = new DebtPaymentDto { UserId = userId, CreatedAt = DateTime.UtcNow, PaymentDate = request.PaymentDate, Description = request.Description, DebtPaymentValue = request.DebtPaymentValue, CurrencyId = request.CurrencyId, PeriodId = request.PeriodId, DebtId = debtId }; var debtPayment = _mapper.Map <DebtPayment>(debtPaymentDto); return(await _baseRepository.CreateEntityAsync(debtPayment)); }
public async Task <IActionResult> CreateDebtPayment([FromRoute] int debtId, [FromBody] DebtPaymentRequest 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}" }))); } // check if new debt budgetId is correct var debt = await _debtService.GetDebtAsync(debtId); if (debt == null) { return(NotFound(new ErrorResponse(new ErrorModel { Message = $"There is no budget with id: {debtId}" }))); } if (debt.UserId != userId) { return(Forbid()); } // create debtPayment var newDebtPayment = await _debtPaymentService.NewDebtPaymentAsync(request, debtId, userId); if (newDebtPayment == null) { return(BadRequest(new ErrorResponse(new ErrorModel { Message = "Could not create new debt payment" }))); } var locationUri = _uriService.GetDebtPaymentUri(debtId, newDebtPayment.Id); return(Created(locationUri, new Response <DebtPaymentResponse>(_mapper.Map <DebtPaymentResponse>(newDebtPayment)))); }