public async Task <CreditPayment> CreateCreditPaymentAsync(CreditPaymentRequest request, int creditId, string userId) { var paymentDto = new CreditPaymentDto { CreatedDate = DateTime.UtcNow, PaymentDate = request.PaymentDate, PaymentValue = request.PaymentValue, CurrencyId = request.CurrencyId, CreditId = creditId, PeriodId = request.PeriodId, UserId = userId }; var payment = _mapper.Map <CreditPayment>(paymentDto); return(await _baseRepository.CreateEntityAsync(payment)); }
public async Task <IActionResult> CreateCreditPayment([FromRoute] int creditId, [FromBody] CreditPaymentRequest 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 credit budgetId is correct var credit = await _creditService.GetCreditAsync(creditId); if (credit == null) { return(NotFound(new ErrorResponse(new ErrorModel { Message = $"There is no budget with id: {creditId}" }))); } if (credit.UserId != userId) { return(Forbid()); } // create creditPayment var newCreditPayment = await _creditPaymentService.CreateCreditPaymentAsync(request, creditId, userId); if (newCreditPayment == null) { return(BadRequest(new ErrorResponse(new ErrorModel { Message = "Could not create new credit payment" }))); } var locationUri = _uriService.GetCreditPaymentUri(creditId, newCreditPayment.Id); return(Created(locationUri, new Response <CreditPaymentResponse>(_mapper.Map <CreditPaymentResponse>(newCreditPayment)))); }