public async Task <BonusRewardResponseModel> RewardAsync(BonusRewardRequestModel request) { var result = await _bonusService.RewardAsync( request.CustomerId.ToString(), request.Amount, request.RewardRequestId, request.BonusReason, request.CampaignId.ToString(), request.ConditionId != Guid.Empty ?request.ConditionId.ToString() : null); return(_mapper.Map <BonusRewardResponseModel>(result)); }
public async Task ProcessBonusIssuedEventAsync(IBonusIssued bonusIssued) { if (string.IsNullOrEmpty(bonusIssued.CustomerId) || bonusIssued.OperationId == Guid.Empty) { _log.Warning("Bonus Issued event would not be processed because it contains invalid data", context: bonusIssued); return; } BonusRewardResponseModel rewardRequestResult; var request = new BonusRewardRequestModel { CustomerId = Guid.Parse(bonusIssued.CustomerId), Amount = bonusIssued.Amount, RewardRequestId = bonusIssued.OperationId.ToString(), BonusReason = bonusIssued.BonusType, CampaignId = bonusIssued.CampaignId, ConditionId = bonusIssued.ConditionId }; try { rewardRequestResult = await _blockchainFacadeClient.BonusesApi.RewardAsync(request); } catch (ClientApiException e) { _log.Error(e, "Couldn't make reward request to PBF", new { e.HttpStatusCode, e.ErrorResponse?.ErrorMessage, ModelErrors = e.ErrorResponse?.ModelErrors?.ToJson(), request = request.ToJson() }); throw; } if (rewardRequestResult.Error != BonusRewardError.None) { _log.Error(message: "Error when trying to create reward operation in BC", context: bonusIssued); } await _bonusRewardsRepository.AddAsync(bonusIssued); }