public void execute(
EventRule eventRule,
EventType eventType,
Common buffer,
EventInbox inbox,
// note: for due date events, the time and date on which the alert
// is considered to be created is when the due date batch
// started to run
EventAlertCreatedDateTime alertCreatedDateTime = DateTimeUtil::newDateTime(systemDateGet(),timeNow(),DateTimeUtil::getUserPreferredTimeZone())
)
{
EventInboxId inboxId;
EventInboxData inboxData;
EventAlertField eventAlertField;
WorkflowRecordCaptionGenerator recordCaptionGenerator;
container c;
List list;
SysUserInfo userInfo1;
SysUserInfo userInfo = SysUserInfo::find(eventRule.UserId);
if(userInfo)
{
inboxId = EventInbox::nextEventId();
inbox.initValue();
inbox.initFromEventRule(eventRule);
inbox.InboxId = inboxId;
inbox.AlertCreatedDateTime = alertCreatedDateTime;
recordCaptionGenerator = WorkflowRecordCaptionGenerator::construct(buffer);
inbox.AlertedFor = recordCaptionGenerator.caption();
if (userInfo && ((userInfo.EventPopUpDisplayWhen == EventPopupShowDefineMode::AllRules) ||
(userInfo.EventPopUpDisplayWhen == EventPopupShowDefineMode::DefinedOnRule && eventRule.ShowPopup == true)))
inbox.Visible = false;
list = SysDictTable::getUniqueIndexFields(buffer.TableId);
if (list)
{
inbox.keyFieldList(list.pack());
inbox.keyFieldData(SysDictTable::mapFieldIds2Values(list,buffer).pack());
}
if (eventRule.alertField())
{
eventAlertField = eventRule.alertField();
if (eventAlertField != null && eventAlertField.parmAlertField().FieldRelationPath)
{
inbox.ExtendedDataType = eventAlertField.parmAlertField().FieldRelationPathExtendedDataType;
inbox.EnumType = eventAlertField.parmAlertField().FieldRelationPathEnumType;
}
}
if (userInfo)
{
// if email send settings are forced
if (userInfo.EventEmailAlertsWhen == EventEmailSendDefineMode::AllRules)
inbox.SendEmail = true;
else if (userInfo.EventEmailAlertsWhen == EventEmailSendDefineMode::NoRules)
inbox.SendEmail = false;
if (inbox.SendEmail)
inbox.EmailRecipient = eventRule.emailRecipient();
}
inbox.insert();
// insert packed EventType class
c = eventType.pack();
inboxData.InboxId = inboxId;
inboxData.DataType = EventInboxDataType::TypeData;
inboxData.Data = c;
inboxData.insert();
// insert packed context information for drill down
inboxData.InboxId = inboxId;
inboxData.DataType = EventInboxDataType::Context;
inboxData.Data = eventRule.contextInfo();
inboxData.insert();
}
eventRule.UserId = eventRule.UserId1;
userInfo1 = SysUserInfo::find(eventRule.UserId1);
if(userInfo1)
{
userInfo = userInfo1;
inboxId = EventInbox::nextEventId();
inbox.initValue();
inbox.initFromEventRule(eventRule);
inbox.InboxId = inboxId;
inbox.AlertCreatedDateTime = alertCreatedDateTime;
recordCaptionGenerator = WorkflowRecordCaptionGenerator::construct(buffer);
inbox.AlertedFor = recordCaptionGenerator.caption();
if (userInfo && ((userInfo.EventPopUpDisplayWhen == EventPopupShowDefineMode::AllRules) ||
(userInfo.EventPopUpDisplayWhen == EventPopupShowDefineMode::DefinedOnRule && eventRule.ShowPopup == true)))
inbox.Visible = false;
list = SysDictTable::getUniqueIndexFields(buffer.TableId);
if (list)
{
inbox.keyFieldList(list.pack());
inbox.keyFieldData(SysDictTable::mapFieldIds2Values(list,buffer).pack());
}
if (eventRule.alertField())
{
eventAlertField = eventRule.alertField();
if (eventAlertField != null && eventAlertField.parmAlertField().FieldRelationPath)
{
inbox.ExtendedDataType = eventAlertField.parmAlertField().FieldRelationPathExtendedDataType;
inbox.EnumType = eventAlertField.parmAlertField().FieldRelationPathEnumType;
}
}
if (userInfo)
{
// if email send settings are forced
if (userInfo.EventEmailAlertsWhen == EventEmailSendDefineMode::AllRules)
inbox.SendEmail = true;
else if (userInfo.EventEmailAlertsWhen == EventEmailSendDefineMode::NoRules)
inbox.SendEmail = false;
if (inbox.SendEmail)
inbox.EmailRecipient = eventRule.emailRecipient();
}
inbox.insert();
// insert packed EventType class
c = eventType.pack();
inboxData.InboxId = inboxId;
inboxData.DataType = EventInboxDataType::TypeData;
inboxData.Data = c;
inboxData.insert();
// insert packed context information for drill down
inboxData.InboxId = inboxId;
inboxData.DataType = EventInboxDataType::Context;
inboxData.Data = eventRule.contextInfo();
inboxData.insert();
}
}
EventRule eventRule,
EventType eventType,
Common buffer,
EventInbox inbox,
// note: for due date events, the time and date on which the alert
// is considered to be created is when the due date batch
// started to run
EventAlertCreatedDateTime alertCreatedDateTime = DateTimeUtil::newDateTime(systemDateGet(),timeNow(),DateTimeUtil::getUserPreferredTimeZone())
)
{
EventInboxId inboxId;
EventInboxData inboxData;
EventAlertField eventAlertField;
WorkflowRecordCaptionGenerator recordCaptionGenerator;
container c;
List list;
SysUserInfo userInfo1;
SysUserInfo userInfo = SysUserInfo::find(eventRule.UserId);
if(userInfo)
{
inboxId = EventInbox::nextEventId();
inbox.initValue();
inbox.initFromEventRule(eventRule);
inbox.InboxId = inboxId;
inbox.AlertCreatedDateTime = alertCreatedDateTime;
recordCaptionGenerator = WorkflowRecordCaptionGenerator::construct(buffer);
inbox.AlertedFor = recordCaptionGenerator.caption();
if (userInfo && ((userInfo.EventPopUpDisplayWhen == EventPopupShowDefineMode::AllRules) ||
(userInfo.EventPopUpDisplayWhen == EventPopupShowDefineMode::DefinedOnRule && eventRule.ShowPopup == true)))
inbox.Visible = false;
list = SysDictTable::getUniqueIndexFields(buffer.TableId);
if (list)
{
inbox.keyFieldList(list.pack());
inbox.keyFieldData(SysDictTable::mapFieldIds2Values(list,buffer).pack());
}
if (eventRule.alertField())
{
eventAlertField = eventRule.alertField();
if (eventAlertField != null && eventAlertField.parmAlertField().FieldRelationPath)
{
inbox.ExtendedDataType = eventAlertField.parmAlertField().FieldRelationPathExtendedDataType;
inbox.EnumType = eventAlertField.parmAlertField().FieldRelationPathEnumType;
}
}
if (userInfo)
{
// if email send settings are forced
if (userInfo.EventEmailAlertsWhen == EventEmailSendDefineMode::AllRules)
inbox.SendEmail = true;
else if (userInfo.EventEmailAlertsWhen == EventEmailSendDefineMode::NoRules)
inbox.SendEmail = false;
if (inbox.SendEmail)
inbox.EmailRecipient = eventRule.emailRecipient();
}
inbox.insert();
// insert packed EventType class
c = eventType.pack();
inboxData.InboxId = inboxId;
inboxData.DataType = EventInboxDataType::TypeData;
inboxData.Data = c;
inboxData.insert();
// insert packed context information for drill down
inboxData.InboxId = inboxId;
inboxData.DataType = EventInboxDataType::Context;
inboxData.Data = eventRule.contextInfo();
inboxData.insert();
}
eventRule.UserId = eventRule.UserId1;
userInfo1 = SysUserInfo::find(eventRule.UserId1);
if(userInfo1)
{
userInfo = userInfo1;
inboxId = EventInbox::nextEventId();
inbox.initValue();
inbox.initFromEventRule(eventRule);
inbox.InboxId = inboxId;
inbox.AlertCreatedDateTime = alertCreatedDateTime;
recordCaptionGenerator = WorkflowRecordCaptionGenerator::construct(buffer);
inbox.AlertedFor = recordCaptionGenerator.caption();
if (userInfo && ((userInfo.EventPopUpDisplayWhen == EventPopupShowDefineMode::AllRules) ||
(userInfo.EventPopUpDisplayWhen == EventPopupShowDefineMode::DefinedOnRule && eventRule.ShowPopup == true)))
inbox.Visible = false;
list = SysDictTable::getUniqueIndexFields(buffer.TableId);
if (list)
{
inbox.keyFieldList(list.pack());
inbox.keyFieldData(SysDictTable::mapFieldIds2Values(list,buffer).pack());
}
if (eventRule.alertField())
{
eventAlertField = eventRule.alertField();
if (eventAlertField != null && eventAlertField.parmAlertField().FieldRelationPath)
{
inbox.ExtendedDataType = eventAlertField.parmAlertField().FieldRelationPathExtendedDataType;
inbox.EnumType = eventAlertField.parmAlertField().FieldRelationPathEnumType;
}
}
if (userInfo)
{
// if email send settings are forced
if (userInfo.EventEmailAlertsWhen == EventEmailSendDefineMode::AllRules)
inbox.SendEmail = true;
else if (userInfo.EventEmailAlertsWhen == EventEmailSendDefineMode::NoRules)
inbox.SendEmail = false;
if (inbox.SendEmail)
inbox.EmailRecipient = eventRule.emailRecipient();
}
inbox.insert();
// insert packed EventType class
c = eventType.pack();
inboxData.InboxId = inboxId;
inboxData.DataType = EventInboxDataType::TypeData;
inboxData.Data = c;
inboxData.insert();
// insert packed context information for drill down
inboxData.InboxId = inboxId;
inboxData.DataType = EventInboxDataType::Context;
inboxData.Data = eventRule.contextInfo();
inboxData.insert();
}
}