in src/Services/StatusHandlers/NotificationStatusHandler.cs [133:184]
public override void Process(Guid subscriptionID)
{
this.logger?.LogInformation("ResourceDeploymentStatusHandler Process...");
this.logger?.LogInformation("Get SubscriptionById");
var subscription = this.GetSubscriptionById(subscriptionID);
this.logger?.LogInformation("Get PlanById");
var planDetails = this.GetPlanById(subscription.AmpplanId);
this.logger?.LogInformation("Get User");
var userdetails = this.GetUserById(subscription.UserId);
string planEventName = "Activate";
if (subscription.SubscriptionStatus == SubscriptionStatusEnumExtension.Unsubscribed.ToString() ||
subscription.SubscriptionStatus == SubscriptionStatusEnumExtension.UnsubscribeFailed.ToString())
{
planEventName = "Unsubscribe";
}
string processStatus = "success";
if (subscription.SubscriptionStatus == SubscriptionStatusEnumExtension.ActivationFailed.ToString() ||
subscription.SubscriptionStatus == SubscriptionStatusEnumExtension.UnsubscribeFailed.ToString())
{
processStatus = "failure";
}
bool isEmailEnabledForUnsubscription = Convert.ToBoolean(this.applicationConfigRepository.GetValueByName("IsEmailEnabledForUnsubscription"));
bool isEmailEnabledForPendingActivation = Convert.ToBoolean(this.applicationConfigRepository.GetValueByName("IsEmailEnabledForPendingActivation"));
bool isEmailEnabledForSubscriptionActivation = Convert.ToBoolean(this.applicationConfigRepository.GetValueByName("IsEmailEnabledForSubscriptionActivation"));
bool triggerEmail = false;
if (planEventName == "Activate" && isEmailEnabledForPendingActivation && subscription.SubscriptionStatus == SubscriptionStatusEnumExtension.PendingActivation.ToString())
{
triggerEmail = true;
}else if (planEventName == "Activate" && isEmailEnabledForSubscriptionActivation && subscription.SubscriptionStatus != SubscriptionStatusEnumExtension.PendingActivation.ToString())
{
triggerEmail = true;
}else if (planEventName == "Unsubscribe" && isEmailEnabledForUnsubscription)
{
triggerEmail = true;
}
if (triggerEmail)
{
var emailContent = this.emailHelper.PrepareEmailContent(subscriptionID, planDetails.PlanGuid, processStatus, planEventName, subscription.SubscriptionStatus);
this.emailService.SendEmail(emailContent);
if (emailContent.CopyToCustomer && !string.IsNullOrEmpty(userdetails.EmailAddress))
{
emailContent.ToEmails = userdetails.EmailAddress;
this.emailService.SendEmail(emailContent);
}
}
}