public GetLeadScoreRuleByConditionResponse GetCampaignClickLeadScoreRule(GetLeadScoreRuleByConditionRequest request) { var leadScoreRule = leadScoreRuleRepository.GetLeadScoreRulesForLinkClicked(request.ConditionValue, request.AccountId, request.EntityID); return(new GetLeadScoreRuleByConditionResponse() { Rules = leadScoreRule }); }
public GetLeadScoreRuleByConditionResponse GetLeadScoreRule(GetLeadScoreRuleByConditionRequest request) { var leadScoreRule = leadScoreRuleRepository.GetLeadScoreRuleByCondition( (int)request.Condition, request.ConditionValue, request.AccountId); return(new GetLeadScoreRuleByConditionResponse() { Rule = leadScoreRule }); }
public GetLeadScoreRuleByConditionResponse GetLeadScoreRules(GetLeadScoreRuleByConditionRequest request) { var response = new GetLeadScoreRuleByConditionResponse(); if (request.Condition == LeadScoreConditionType.PageDuration) { response.Rules = leadScoreRuleRepository.GetPageDurationRules((int)request.Condition, request.ConditionValue, request.AccountId, request.EntityID); return(response); } response.Rules = leadScoreRuleRepository.GetLeadScoreRulesByCondition((int)request.Condition, request.ConditionValue, request.AccountId); return(response); }
protected override void ExecuteInternal(IJobExecutionContext context) { var messages = _messageService .GetLeadScoreMessages() .Messages .ToArray(); if (!messages.IsAny()) { return; } var auditedMessages = new List <LeadScoreMessage>(); Log.Informational($"Received messages count: {messages.Length}"); foreach (var message in messages) { try { Log.Informational($"Processing LeadScore Message message {message}"); GetLeadScoreRuleByConditionResponse leadScoreRuleResponse; string conditionValue; int entityId; SetCondtionValueAndEntityValue(message, out entityId, out conditionValue); var leadScoreRuleRequest = new GetLeadScoreRuleByConditionRequest { AccountId = message.AccountID, Condition = (LeadScoreConditionType)message.LeadScoreConditionType, ConditionValue = conditionValue, EntityID = entityId }; if (message.LeadScoreConditionType == (byte)LeadScoreConditionType.ContactClicksLink) { leadScoreRuleResponse = _leadScoreRuleService.GetCampaignClickLeadScoreRule(leadScoreRuleRequest); } else { leadScoreRuleResponse = _leadScoreRuleService.GetLeadScoreRules(leadScoreRuleRequest); } Log.Informational($"Audit leadscore, condtion value: {conditionValue}, entity id:{entityId}, message {message.ToString()}"); if (leadScoreRuleResponse.Rules != null && leadScoreRuleResponse.Rules.Any()) { Log.Informational(string.Format("Audit leadscore count, Rule ID: {0}", leadScoreRuleResponse.Rules.Count(), leadScoreRuleResponse.Rules.Select(s => s.Id))); var response = _leadScoreService.IsScoreAudited( new LeadScoreAuditCheckRequest { AccountId = message.AccountID, ContactId = message.ContactID, Condition = (LeadScoreConditionType)message.LeadScoreConditionType, ConditionValue = conditionValue, EntityId = entityId, Rules = leadScoreRuleResponse.Rules }); if (!response.IsAudited && (response.UnAuditedRules != null && response.UnAuditedRules.Any())) { Log.Informational($"Update leadscore, message {message.ToString()}"); Log.Informational(string.Format("while inserting Audit leadscore count, Rule ID: {0}", leadScoreRuleResponse.Rules.Count(), leadScoreRuleResponse.Rules.Select(s => s.Id))); _leadScoreService.InsertLeadScore(new InsertLeadScoreRequest() { Condition = (LeadScoreConditionType)message.LeadScoreConditionType, ConditionValue = conditionValue, ContactId = message.ContactID, AccountId = message.AccountID, RequestedBy = message.UserID, EntityId = entityId, Rules = response.UnAuditedRules }); message.Remarks = "Lead score applied"; message.LeadScoreProcessStatusID = (int)TrackMessageProcessStatus.Processed; auditedMessages.Add(message); } else if (response.IsAudited) { Log.Informational($"Leadscore already applied, message {message.ToString()}"); message.LeadScoreProcessStatusID = (int)TrackMessageProcessStatus.Processed; message.Remarks = "Lead score is already applied"; } } else if (leadScoreRuleResponse.Rules == null || !leadScoreRuleResponse.Rules.Any()) { Log.Informational($"No rule defined, message {message.ToString()}"); message.Remarks = "No rule defined"; message.LeadScoreProcessStatusID = (int)TrackMessageProcessStatus.Ignored; } message.ProcessedOn = DateTime.UtcNow; } catch (Exception ex) { Log.Informational($"Error occurred while processing leadscore {message} {ex}"); message.ProcessedOn = DateTime.MinValue; message.LeadScoreProcessStatusID = (int)TrackMessageProcessStatus.Error; message.Remarks = $"Lead score not processed, {ex}"; } } _messageService.UpdateLeadScoreMessage(new UpdateLeadScoreMessage() { Messages = messages }); //update all messages if (auditedMessages.Any()) { //index all contacts messages var indexingData = new IndexingData { EntityIDs = auditedMessages.Select(m => m.ContactID).ToList(), IndexType = (int)IndexType.Contacts }; _accountService.InsertIndexingData(new InsertIndexingDataRequest { IndexingData = indexingData }); } }
public MessageHandlerStatus Handle(MessageQueues.Message message) { try { if (message.LeadScoreConditionType != (int)LeadScoreConditionType.ContactSubmitsForm) { return(MessageHandlerStatus.InvalidMessageHandler); } //var leadScoreRuleResponse = leadScoreRuleService.GetLeadScoreRule( //new GetLeadScoreRuleByConditionRequest() //{ // AccountId = message.AccountId, // Condition = LeadScoreConditionType.ContactSubmitsForm, // ConditionValue = message.EntityId.ToString() //}); //LeadScoreRule rule = leadScoreRuleResponse.Rule; GetLeadScoreRuleByConditionRequest request = new GetLeadScoreRuleByConditionRequest() { AccountId = message.AccountId, Condition = LeadScoreConditionType.ContactSubmitsForm, ConditionValue = message.EntityId.ToString() }; GetLeadScoreRuleByConditionResponse response = leadScoreRuleService.GetLeadScoreRules(request); var rules = response.Rules; Logger.Current.Informational("Auditing the lead score for form submission for message:" + message.MessageId); var insertScoreResponse = leadScoreService.InsertLeadScore(new InsertLeadScoreRequest() { Condition = LeadScoreConditionType.ContactSubmitsForm, ContactId = message.ContactId, ConditionValue = message.EntityId.ToString(), AccountId = message.AccountId, RequestedBy = message.UserId, EntityId = message.EntityId, Rules = rules }); if (insertScoreResponse.Exception == null) { Logger.Current.Informational("Audited successfully." + message.MessageId); return(MessageHandlerStatus.LeadScoreAuditedSuccessfully); } else { Logger.Current.Error("Error occurred while auditing the lead score." + message.MessageId, insertScoreResponse.Exception); return(MessageHandlerStatus.FailedToAuditScore); } // return MessageHandlerStatus.LeadScoreAuditedSuccessfully; //var response = leadScoreService.IsScoreAudited( // new LeadScoreAuditCheckRequest() // { // AccountId = message.AccountId, // ContactId = message.ContactId, // Condition = LeadScoreConditionType.ContactSubmitsForm, // ConditionValue = message.EntityId.ToString(), // EntityId = message.EntityId // }); //if (response.IsAudited) // return MessageHandlerStatus.DuplicateLeadScoreRequest; } catch (Exception ex) { Logger.Current.Error("Exception occured while handling the Message.", ex); return(MessageHandlerStatus.FailedToAuditScore); } }