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); }
public static BonusIssuedEventDataEntity Create(IBonusIssued model) { return(new BonusIssuedEventDataEntity { CustomerId = model.CustomerId, OperationId = model.OperationId, Amount = model.Amount, PartnerId = model.PartnerId, LocationId = model.LocationId, UnitLocationCode = model.UnitLocationCode, CampaignId = model.CampaignId, ConditionId = model.ConditionId, TimeStamp = model.TimeStamp, BonusType = model.BonusType, ReferralId = model.ReferralId }); }
public async Task AddAsync(IBonusIssued model) { using (var context = _contextFactory.CreateDataContext()) { var entity = BonusIssuedEventDataEntity.Create(model); await context.BonusIssuedEventsData.AddAsync(entity); try { await context.SaveChangesAsync(); } catch (DbUpdateException e) { if (e.InnerException is SqlException sqlException && sqlException.Number == MsSqlErrorCodes.PrimaryKeyConstraintViolation) { _log.Warning("Error on bonus issued event context saving", e); }
public async Task AddAsync(IBonusIssued model) { using (var context = _contextFactory.CreateDataContext()) { var entity = BonusIssuedEventDataEntity.Create(model); await context.BonusIssuedEventsData.AddAsync(entity); try { await context.SaveChangesAsync(); } catch (DbUpdateException e) { if (e.InnerException is PostgresException sqlException && sqlException.SqlState == PostgresErrorCodes.UniqueViolation) { _log.Warning("Error on bonus issued event context saving", e); }