NotificationService.SendNotification
[[TOC]]
Reference
void SendNotification(Notification notification, bool sendIndividualNotification = false)
Use SendNotification to send Email notifications to selected recipients.
Parameters
Notification notification:Guid InstanceId: Required parameter.UserValue[] Recipients: Required parameter.UserValue[] CcRecipients: Optional parameter.UserValue[] BccRecipients: Optional parameter.string Subject:string Body:FileValue[] Attachments: Optional parameter.string MeetingLocation: Optional parameter.DateTime? MeetingStartTime: Optional parameter.DateTime? MeetingEndTime: Optional parameter.
bool sendIndividualNotification: Should be set to True to send individual email to each recipient. False by default.
- UserValue
- string UserEmail
- Guid UserId
- string UserName
Caveats
Usage
public void Run()
{
//create query to get Asset instances where the warrantyEndDate is less than 15 days from today
var instanceQuery = new InstanceQuery
{
InstanceTypeName = TYPE_ASSET,
Attributes = new string[] { ATTRIBUTE_WARRANTY_END_DATE },
Skip = 0,
Take = int.MaxValue,
AttributeFilterExpressions = new Prorigo.Protrak.API.Contracts.Filters.AttributeFilterExpression[]
{
new Prorigo.Protrak.API.Contracts.Filters.AttributeFilterExpression()
{
AttributeFilterConditions = new Prorigo.Protrak.API.Contracts.Filters.AttributeFilterCondition[]
{
new Prorigo.Protrak.API.Contracts.Filters.AttributeFilterCondition()
{
AttributeName = ATTRIBUTE_WARRANTY_END_DATE,
Condition = Prorigo.Protrak.API.Contracts.Enum.AttributeFilterOperator.LessThan,
FirstValue = System.DateTime.UtcNow.AddDays(15).ToString("yyyy-MM-ddTHH:mm:ss.fffZ")
}
},
Operator = Prorigo.Protrak.API.Contracts.Enum.LogicalOperator.And
}
}
};
//get such asset instances
var assetInstances = InstanceService.GetInstances(instanceQuery);
if(assetInstances.TotalCount > 0)
{
//send notification to IT admin users
var emailText = string.Format(
"Hello IT Admin" +
"There are {0} assets where warranty is either expired or expiring in next 15 days.",
assetInstances.TotalCount);
var ITAdminRoles = new string[] { "IT Team" };
var adminUsers = UserService.GetUsers("", ITAdminRoles, false, true);
var Recipients = adminUsers.Items.ToList();
var notificationMessage = new Notification()
{
InstanceId = assetInstances.Items.First().Id,
Subject = "Warranty expiring soon",
Body = emailText,
Recipients = GetRecipients(adminUsers.Items.ToList()),
};
NotificationService.SendNotification(notificationMessage);
}
}
private UserValue[] GetRecipients(List<User> users)
{
var recipients = new HashSet<UserValue>();
if (users != null && users.Any())
{
foreach (var user in users)
{
recipients.Add(new UserValue()
{
UserId = user.Id,
UserName = user.UserName
});
}
}
return recipients.ToArray();
}