This commit is contained in:
2022-03-08 15:08:42 +00:00
parent c6ee47bb62
commit a96a005977

View File

@@ -169,6 +169,33 @@ namespace AyaNova.Biz
}
break;
case AyaType.WorkOrder:
{
var wo = await ct.WorkOrder.AsNoTracking().FirstOrDefaultAsync(z => z.Id == ne.ObjectId);
if (wo == null)
{
//maybe deleted, this can't proceed
throw new ApplicationException($"Unable to make delivery for customer notify event as WorkOrder {ne.Name} was not found during delivery, deleted?");
}
var CustomerName = await ct.Customer.AsNoTracking().Where(x => x.Id == wo.CustomerId).Select(x => x.Name).FirstOrDefaultAsync();
var StatusName = await ct.WorkOrderStatus.AsNoTracking().Where(x => x.Id == wo.LastStatusId).Select(x => x.Name).FirstOrDefaultAsync();
Subject = SetWorkOrderTokens(Subject, wo, CustomerName, StatusName);
Body = SetWorkOrderTokens(Body, wo, CustomerName, StatusName);
}
break;
case AyaType.CustomerServiceRequest:
{
var csr = await ct.CustomerServiceRequest.AsNoTracking().FirstOrDefaultAsync(z => z.Id == ne.ObjectId);
if (csr == null)
{
//maybe deleted, this can't proceed
throw new ApplicationException($"Unable to make delivery for customer notify event as CustomerServiceRequest {ne.Name} was not found during delivery, deleted?");
}
var CustomerName = await ct.Customer.AsNoTracking().Where(x => x.Id == csr.CustomerId).Select(x => x.Name).FirstOrDefaultAsync();
Subject = SetCSRTokens(Subject, csr, CustomerName);
Body = SetCSRTokens(Body, csr, CustomerName);
}
break;
}
@@ -297,6 +324,74 @@ namespace AyaNova.Biz
return TheField;
}
private static string SetWorkOrderTokens(string TheField, WorkOrder wo, string CustomerName, string statusName)
{
MatchCollection matches = Regex.Matches(TheField, @"\{{(.|\n)*?\}}", RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled);
//{{.*?}}
foreach (Match KeyMatch in matches)
{
switch (KeyMatch.Value)
{
case "{{Customer}}":
TheField = TheField.Replace(KeyMatch.Value, CustomerName);
break;
case "{{WorkOrderStatus}}":
TheField = TheField.Replace(KeyMatch.Value, statusName);
break;
case "{{WorkOrderCustomerContactName}}":
TheField = TheField.Replace(KeyMatch.Value, wo.CustomerContactName);
break;
case "{{WorkOrderCustomerReferenceNumber}}":
TheField = TheField.Replace(KeyMatch.Value, wo.CustomerReferenceNumber);
break;
case "{{WorkOrderSummary}}":
TheField = TheField.Replace(KeyMatch.Value, wo.Notes);
break;
case "{{WorkOrderSerialNumber}}":
TheField = TheField.Replace(KeyMatch.Value, wo.Serial.ToString());
break;
}
}
return TheField;
}
private static string SetCSRTokens(string TheField, CustomerServiceRequest csr, string CustomerName)
{
MatchCollection matches = Regex.Matches(TheField, @"\{{(.|\n)*?\}}", RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled);
//{{.*?}}
foreach (Match KeyMatch in matches)
{
switch (KeyMatch.Value)
{
case "{{Customer}}":
TheField = TheField.Replace(KeyMatch.Value, CustomerName);
break;
case "{{QuoteIntroduction}}":
TheField = TheField.Replace(KeyMatch.Value, csr.Introduction);
break;
case "{{WorkOrderCustomerContactName}}":
TheField = TheField.Replace(KeyMatch.Value, csr.CustomerContactName);
break;
case "{{WorkOrderCustomerReferenceNumber}}":
TheField = TheField.Replace(KeyMatch.Value, csr.CustomerReferenceNumber);
break;
case "{{WorkOrderSummary}}":
TheField = TheField.Replace(KeyMatch.Value, csr.Notes);
break;
case "{{QuoteSerialNumber}}":
TheField = TheField.Replace(KeyMatch.Value, csr.Serial.ToString());
break;
}
}
return TheField;
}
//===