public override async Task <bool> ProcessMessageAsync(ReferralRealEstatePurchasePaymentEvent message) { if (string.IsNullOrWhiteSpace(message.CurrencyCode)) { Log.Error(null, "Currency is missing in Referral Property First Purchase Event", context: message, process: nameof(ProcessMessageAsync)); return(false); } var amount = message.NetPropertyAmount; if (amount < 0) { Log.Error(null, "NetPropertyAmount has invalid value in Referral Property First Purchase Event", context: message, process: nameof(ProcessMessageAsync)); return(false); } var response = await _currencyConverterClient.Converter .ConvertAsync(message.CurrencyCode, _assetName, amount); if (response.ErrorCode != ConverterErrorCode.None) { Log.Error(message: "An error occured while converting currency amount", context: $"from: {message.CurrencyCode}; to: {_assetName}; error: {response.ErrorCode}"); return(false); } var bonusTriggerEvent = new BonusTriggerEvent { CustomerId = message.CustomerId, TimeStamp = DateTime.UtcNow, Type = BonusTypes.ReferralPropertyFirstPurchase.EventName, Data = new Dictionary <string, string>() { { "Amount", response.Amount.ToString("G") }, { "IsDownPayment", message.IsDownPayment.ToString() }, { "PurchaseCompletionPercentage", message.PurchaseCompletionPercentage.ToString() }, { "PaymentId", message.ReferralId }, { "StakedCampaignId", message.CampaignId.ToString("D") }, { "UnitLocationCode", message.UnitLocationCode } } }; await _bonusTriggerEventPublisher.PublishAsync(bonusTriggerEvent); return(true); }
public override async Task <bool> ProcessMessageAsync(PropertyLeadApprovedReferralEvent message) { var bonusTriggerEvent = new BonusTriggerEvent { CustomerId = message.ReferrerId, TimeStamp = message.TimeStamp, Type = BonusTypes.PropertyLeadApprovedReferral.EventName, Data = new Dictionary <string, string>() { { "ReferralId", message.ReferralId } } }; if (message.StakedCampaignId.HasValue) { bonusTriggerEvent.Data.Add("StakedCampaignId", message.StakedCampaignId.Value.ToString()); } await _bonusTriggerEventPublisher.PublishAsync(bonusTriggerEvent); return(true); }
public override async Task <bool> ProcessMessageAsync(HotelReferralUsedEvent message) { var response = await _currencyConverterClient.Converter .ConvertAsync(message.CurrencyCode, _assetName, message.Amount); if (response.ErrorCode != ConverterErrorCode.None) { _log.Error(message: "An error occured while converting currency amount", context: $"from: {message.CurrencyCode}; to: {_assetName}; error: {response.ErrorCode}"); return(false); } var bonusTriggerEvent = new BonusTriggerEvent { CustomerId = message.CustomerId, TimeStamp = DateTime.UtcNow, Type = BonusTypes.HotelCheckoutReferral.EventName, PartnerId = message.PartnerId, LocationId = message.LocationId, Data = new Dictionary <string, string> { { "Amount", response.Amount.ToString("G") }, { "ReferralId", message.ReferralId } } }; if (message.StakedCampaignId.HasValue) { bonusTriggerEvent.Data.Add("StakedCampaignId", message.StakedCampaignId.Value.ToString()); } await _bonusTriggerEventPublisher.PublishAsync(bonusTriggerEvent); _log.Info("Hotel stay referral bonus event published", context: $"CustomerId: {message.CustomerId}"); return(true); }