public async Task <bool> UpdateCreditPaymentAsync(UpdateCreditPaymentRequest request, int creditPaymentId)
        {
            var paymentDto = new UpdateCreditPaymentDto
            {
                Id           = creditPaymentId,
                PaymentDate  = request.PaymentDate,
                PaymentValue = request.PaymentValue
            };

            var payment = _mapper.Map <CreditPayment>(paymentDto);

            return(await _baseRepository.UpdateEntityAsync(payment));
        }
        public async Task <IActionResult> UpdateCreditPayment([FromRoute] int creditId, int creditPaymentId, [FromBody] UpdateCreditPaymentRequest 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 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());
            }

            var creditPaymentInDb = await _creditPaymentService.GetCreditPaymentAsync(creditPaymentId);

            if (creditPaymentInDb == null)
            {
                return(NotFound(new ErrorResponse(new ErrorModel {
                    Message = $"There is no creditPayment with id: {creditPaymentId} for credit id: {creditId}"
                })));
            }

            var updateCredit = await _creditPaymentService.UpdateCreditPaymentAsync(request, creditPaymentId);

            if (!updateCredit)
            {
                return(BadRequest(new ErrorResponse(new ErrorModel {
                    Message = $"Could not update credit payment with id:{creditPaymentId}"
                })));
            }

            var updatedCreditPayment = await _creditPaymentService.GetCreditPaymentAsync(creditPaymentId);

            return(Ok(new Response <CreditPaymentResponse>(_mapper.Map <CreditPaymentResponse>(updatedCreditPayment))));
        }