This commit is contained in:
2022-03-08 20:33:40 +00:00
parent 97d3455292
commit 082484c7a2

View File

@@ -1315,7 +1315,7 @@ namespace AyaNova.Biz
#endregion
#region CustomerServiceImminent "Service Reminder"
#region Customer centric notifications
if (ayaEvent == AyaEvent.Created && oProposed.ServiceDate != null && oProposed.ServiceDate > DateTime.UtcNow)
{
@@ -1499,15 +1499,109 @@ namespace AyaNova.Biz
}
}//WorkorderCreatedForCustomer
#endregion
#endregion regular user notifications
}//end of process notifications
#region CUSTOMER "PROXY" NOTIFICATIONS
var custInfo = await ct.Customer.AsNoTracking().Where(x => x.Id == oProposed.CustomerId).Select(x => new { x.Active, x.Tags, x.EmailAddress }).FirstOrDefaultAsync();
if (custInfo != null && custInfo.Active && !string.IsNullOrWhiteSpace(custInfo.EmailAddress))//can this customer receive *any* customer notifications?
{
//-------- Customer is notifiable ------
if (ayaEvent == AyaEvent.Created && oProposed.ServiceDate != null && oProposed.ServiceDate > DateTime.UtcNow)
{
var subs = await ct.CustomerNotifySubscription.AsNoTracking().Where(z => z.EventType == NotifyEventType.CustomerServiceImminent).OrderBy(z => z.Id).ToListAsync();
foreach (var sub in subs)
{
//Object tags must match and Customer tags must match
if (NotifyEventHelper.ObjectHasAllSubscriptionTags(oProposed.Tags, sub.Tags) && NotifyEventHelper.ObjectHasAllSubscriptionTags(custInfo.Tags, sub.CustomerTags))
{
CustomerNotifyEvent n = new CustomerNotifyEvent()
{
EventType = NotifyEventType.CustomerServiceImminent,
CustomerId = oProposed.CustomerId,
AyaType = proposedObj.AyaType,
ObjectId = oProposed.Id,
CustomerNotifySubscriptionId = sub.Id,
Name = oProposed.Serial.ToString(),
EventDate = (DateTime)oProposed.ServiceDate
};
await ct.CustomerNotifyEvent.AddAsync(n);
log.LogDebug($"Adding CustomerNotifyEvent: [{n.ToString()}]");
await ct.SaveChangesAsync();
break;//we have a match no need to process any further subs for this event
}
}
#endregion workorder level
}//CustomerServiceImminent "Service Reminder"
if (ayaEvent == AyaEvent.Modified && oProposed.ServiceDate != oCurrent.ServiceDate)
{// CustomerServiceImminent "Service Reminder"
//differences requiring re-processing of notification
await NotifyEventHelper.ClearPriorCustomerNotifyEventsForObject(ct, proposedObj.AyaType, proposedObj.Id, NotifyEventType.CustomerServiceImminent);
//new has date?
if (oProposed.ServiceDate != null && oProposed.ServiceDate > DateTime.UtcNow)
{
var subs = await ct.CustomerNotifySubscription.AsNoTracking().Where(z => z.EventType == NotifyEventType.CustomerServiceImminent).OrderBy(z => z.Id).ToListAsync();
foreach (var sub in subs)
{
//Object tags must match and Customer tags must match
if (NotifyEventHelper.ObjectHasAllSubscriptionTags(oProposed.Tags, sub.Tags) && NotifyEventHelper.ObjectHasAllSubscriptionTags(custInfo.Tags, sub.CustomerTags))
{
CustomerNotifyEvent n = new CustomerNotifyEvent()
{
EventType = NotifyEventType.CustomerServiceImminent,
CustomerId = oProposed.CustomerId,
AyaType = proposedObj.AyaType,
ObjectId = oProposed.Id,
CustomerNotifySubscriptionId = sub.Id,
Name = oProposed.Serial.ToString(),
EventDate = (DateTime)oProposed.ServiceDate
};
await ct.CustomerNotifyEvent.AddAsync(n);
log.LogDebug($"Adding CustomerNotifyEvent: [{n.ToString()}]");
await ct.SaveChangesAsync();
break;//we have a match no need to process any further subs for this event
}
}
}
}//CustomerServiceImminent "Service Reminder"
//# WorkorderCreatedForCustomer
if (oProposed.CustomerId != 0 && (ayaEvent == AyaEvent.Created || (ayaEvent == AyaEvent.Modified && oCurrent.CustomerId != oProposed.CustomerId)))
{
//look for potential subscribers
var subs = await ct.CustomerNotifySubscription.AsNoTracking().Where(z => z.EventType == NotifyEventType.WorkorderCreatedForCustomer).OrderBy(z => z.Id).ToListAsync();
foreach (var sub in subs)
{
//Object tags must match and Customer tags must match
if (NotifyEventHelper.ObjectHasAllSubscriptionTags(oProposed.Tags, sub.Tags) && NotifyEventHelper.ObjectHasAllSubscriptionTags(custInfo.Tags, sub.CustomerTags))
{
CustomerNotifyEvent n = new CustomerNotifyEvent()
{
EventType = NotifyEventType.WorkorderCreatedForCustomer,
CustomerId = oProposed.CustomerId,
AyaType = proposedObj.AyaType,
ObjectId = oProposed.Id,
CustomerNotifySubscriptionId = sub.Id,
Name = oProposed.Serial.ToString()
};
await ct.CustomerNotifyEvent.AddAsync(n);
log.LogDebug($"Adding CustomerNotifyEvent: [{n.ToString()}]");
await ct.SaveChangesAsync();
break;//we have a match no need to process any further subs for this event
}
}
}//WorkorderCreatedForCustomer
//-----------------------
}//all customer proxy if notifiable
#endregion customer proxy notifications
}//end of process WORKORDER HEADER notifications
#endregion workorder level
/*
@@ -1891,7 +1985,7 @@ namespace AyaNova.Biz
if (custInfo != null && custInfo.Active && !string.IsNullOrWhiteSpace(custInfo.EmailAddress))//can this customer receive *any* customer notifications?
{
//-------- Customer is notifiable ------
//# STATUS CHANGE (create new status)
{
//Conditions: must match specific status id value and also tags below