Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class SendMailClass extends Runbase
- {
- EventInbox inbox;
- EventRule rule;
- EventInboxId inboxId;
- EventInboxData data;
- EventType eventType;
- str subject, message, reason;
- SysClientSessions sessions;
- NoYesId sendEmail;
- }
- void cleanUp()
- {
- EventRule localRule =
- EventRule::find(rule.RuleId, true);
- ;
- localRule.delete();
- }
- void createData()
- {
- ;
- data.InboxId = inboxId;
- data.DataType = EventInboxDataType::Context;
- data.Data = rule.contextInfo();
- data.insert();
- data.clear();
- data.InboxId = inboxId;
- data.DataType = EventInboxDataType::TypeData;
- data.Data = eventType.pack();
- data.insert();
- }
- EventRule createEventRule()
- {
- EventRule localRule;
- ;
- localRule.initValue();
- localRule.Subject = "";
- localRule.Message = "";
- localRule.TypeId = 1527;
- localRule.AlertTableId = 65579;
- localRule.PrimTableId = 65531;
- localRule.Until = EventUntil::Always;
- localRule.Enabled = NoYes::Yes;
- localRule.AlertQbdsNo = 1;
- localRule.FormName = "SysUserInfo";
- localRule.TypeTrigger =
- EventTypeTrigger::FieldChanged;
- localRule.RuleCondition = EventRuleCondition::Current;
- localRule.AlertFieldLabel = "Alias";
- localRule.ShowPopup = NoYes::Yes;
- localRule.insert();
- return localRule;
- }
- void createInbox()
- {
- ;
- inboxId = EventInbox::nextEventId();
- inbox.initValue();
- inbox.initFromEventRule(rule);
- inbox.ShowPopup = NoYes::Yes;
- inbox.SendEmail = false;
- inbox.AlertTableId = 1;
- inbox.AlertFieldId = 1;
- inbox.RuleId = rule.RuleId;
- inbox.UserId = sessions.userId;
- inbox.InboxId = inboxId;
- inbox.TypeTrigger = EventTypeTrigger::RecordDelete;
- inbox.EmailRecipient = "";
- inbox.Subject = subject;
- inbox.Message = message;
- inbox.AlertCreatedDateTime = dateTimeutil::newDateTime(systemdateget(),timeNow());
- inbox.AlertedFor = reason;
- inbox.insert();
- }
- void infoLogMessage(SysClientSessions _sessions)
- {
- SysUserInfo sys;
- UserInfo userInfo;
- ;
- select * from sys
- where sys.id == _sessions.userId;
- select * from userInfo
- where userInfo.id == _sessions.userId;
- if(userInfo)
- {
- info(strFmt("Employee: %1",_sessions.userId));
- info(strFmt("Name: %1", userInfo.name));
- if(sys.Email && sendEmail)
- {
- if(this.sendMail(sys.Email))
- {
- info("Email has been sent to user.");
- }
- }
- else if(!sys.Email)
- {
- info("No email has been sent.");
- }
- }
- }
- public container pack()
- {
- container ret;
- ret = super();
- return ret;
- }
- boolean promptMessage()
- {
- dialog dlg;
- dialoggroup dlgg;
- dialogfield subjectField, messageField,
- reasonField, emailField;
- boolean ret;
- ;
- dlg = new dialog("Send message to online users.");
- dlgg = dlg.addGroup("Message");
- reasonField = dlg.addField(
- TypeID(Name), "Reason");
- subjectField = dlg.addField(
- TypeID(Name), "Subject");
- messageField = dlg.addField(
- TypeID(ItemFreeTxt), "Message");
- messagefield.displayHeight(10);
- messagefield.displayLength(50);
- emailField = dlg.addField(
- TypeId(NoYesId), "Send email");
- dlgg.columns(1);
- if(dlg.run())
- {
- subject = subjectField.value();
- message = messageField.value();
- reason = reasonField.value();
- sendEmail = emailField.value();
- ret = true;
- }
- return ret;
- }
- void run()
- {
- ;
- this.setEventRule();
- if(rule)
- {
- this.setEventType();
- try
- {
- ttsbegin;
- setPrefix("Users notified.");
- while select * from sessions
- where sessions.Status == SessionState::Running
- {
- {
- setPrefix(strFmt("UserName: %1",
- sessions.userId));
- this.createInbox();
- this.createData();
- this.infoLogMessage(sessions);
- }
- }
- this.cleanUp();
- ttscommit;
- }
- catch(Exception::Error)
- {
- ttsabort;
- info("Error occured, process aborted.");
- }
- }
- else
- {
- error("Event rule could not be found. " +
- "This class requires " +
- "that atleast one event rule " +
- "exists before it can be used.");
- }
- }
- boolean sendMail(Email _email)
- {
- boolean ret;
- SysMailer mail;
- SysEmailParameters emailParams =
- SysEmailParameters::find();
- ;
- try
- {
- if(!emailParams)
- throw error("No valid email parameters.");
- mail = new SysMailer();
- mail.SMTPRelayServer(Server IP Address); //Sever IP Address here
- mail.fromAddress("Manish","manish.singh@ilfstechnologies.com");
- mail.subject(reason + " - " + subject);
- mail.htmlBody(Message);
- mail.tos().appendAddress(_email);
- mail.sendMail();
- ret = true;
- }
- catch(Exception::Error)
- {
- ret = false;
- }
- return ret;
- }
- void setEventRule()
- {
- ;
- rule = this.createEventRule();
- }
- void setEventType()
- {
- ;
- eventType = EventType::construct(2195,
- EventTypeTrigger::FieldChanged);
- }
- public boolean unpack(container packedClass)
- {
- boolean ret;
- ret = super(packedClass);
- return ret;
- }
- static void main(Args args)
- {
- SendMailClass send
- ;
- send = new SendMailClass();
- if(send.promptMessage())
- {
- send.run();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement