Advertisement
ramkesheoran

Send Mail Class

Oct 13th, 2011
3,074
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XPP 6.03 KB | None | 0 0
  1. class SendMailClass extends Runbase
  2. {
  3.     EventInbox              inbox;
  4.     EventRule               rule;
  5.     EventInboxId            inboxId;
  6.     EventInboxData          data;
  7.     EventType               eventType;
  8.     str                     subject, message, reason;
  9.     SysClientSessions       sessions;
  10.     NoYesId                 sendEmail;
  11. }
  12. void cleanUp()
  13. {
  14.     EventRule   localRule =
  15.                 EventRule::find(rule.RuleId, true);
  16.     ;
  17.     localRule.delete();
  18. }
  19. void createData()
  20. {
  21.     ;
  22.     data.InboxId     =   inboxId;
  23.     data.DataType    =   EventInboxDataType::Context;
  24.     data.Data        =   rule.contextInfo();
  25.     data.insert();
  26.     data.clear();
  27.     data.InboxId     =   inboxId;
  28.     data.DataType    =   EventInboxDataType::TypeData;
  29.     data.Data        =   eventType.pack();
  30.     data.insert();
  31. }
  32. EventRule createEventRule()
  33. {
  34.     EventRule   localRule;
  35.     ;
  36.     localRule.initValue();
  37.     localRule.Subject         = "";
  38.     localRule.Message         = "";
  39.     localRule.TypeId          = 1527;
  40.     localRule.AlertTableId    = 65579;
  41.     localRule.PrimTableId     = 65531;
  42.     localRule.Until           = EventUntil::Always;
  43.     localRule.Enabled         = NoYes::Yes;
  44.     localRule.AlertQbdsNo     = 1;
  45.     localRule.FormName        = "SysUserInfo";
  46.     localRule.TypeTrigger     =
  47.     EventTypeTrigger::FieldChanged;
  48.     localRule.RuleCondition   = EventRuleCondition::Current;
  49.     localRule.AlertFieldLabel = "Alias";
  50.     localRule.ShowPopup       = NoYes::Yes;
  51.     localRule.insert();
  52.     return localRule;
  53. }
  54. void createInbox()
  55. {
  56.     ;
  57.     inboxId = EventInbox::nextEventId();
  58.     inbox.initValue();
  59.     inbox.initFromEventRule(rule);
  60.     inbox.ShowPopup = NoYes::Yes;
  61.     inbox.SendEmail = false;
  62.     inbox.AlertTableId = 1;
  63.     inbox.AlertFieldId = 1;
  64.     inbox.RuleId    = rule.RuleId;
  65.     inbox.UserId = sessions.userId;
  66.     inbox.InboxId = inboxId;
  67.     inbox.TypeTrigger = EventTypeTrigger::RecordDelete;
  68.     inbox.EmailRecipient = "";
  69.     inbox.Subject = subject;
  70.     inbox.Message = message;
  71.     inbox.AlertCreatedDateTime = dateTimeutil::newDateTime(systemdateget(),timeNow());
  72.     inbox.AlertedFor = reason;
  73.     inbox.insert();
  74. }
  75. void infoLogMessage(SysClientSessions _sessions)
  76. {
  77.     SysUserInfo sys;
  78.     UserInfo userInfo;
  79.     ;
  80.     select * from sys
  81.     where sys.id == _sessions.userId;
  82.     select * from userInfo
  83.     where userInfo.id == _sessions.userId;
  84.     if(userInfo)
  85.     {
  86.     info(strFmt("Employee: %1",_sessions.userId));
  87.     info(strFmt("Name: %1", userInfo.name));
  88.     if(sys.Email && sendEmail)
  89.     {
  90.     if(this.sendMail(sys.Email))
  91.     {
  92.     info("Email has been sent to user.");
  93.     }
  94.     }
  95.     else if(!sys.Email)
  96.     {
  97.     info("No email has been sent.");
  98.     }
  99.     }
  100. }
  101. public container pack()
  102. {
  103.     container ret;
  104.     ret = super();
  105.     return ret;
  106. }
  107. boolean promptMessage()
  108. {
  109.     dialog          dlg;
  110.     dialoggroup     dlgg;
  111.     dialogfield     subjectField, messageField,
  112.                     reasonField, emailField;
  113.     boolean         ret;
  114.     ;
  115.     dlg = new dialog("Send message to online users.");
  116.     dlgg  = dlg.addGroup("Message");
  117.     reasonField     = dlg.addField(
  118.                       TypeID(Name), "Reason");
  119.     subjectField    = dlg.addField(
  120.                       TypeID(Name), "Subject");
  121.     messageField    = dlg.addField(
  122.                       TypeID(ItemFreeTxt), "Message");
  123.     messagefield.displayHeight(10);
  124.     messagefield.displayLength(50);
  125.     emailField      = dlg.addField(
  126.                       TypeId(NoYesId), "Send email");
  127.     dlgg.columns(1);
  128.  
  129.     if(dlg.run())
  130.     {
  131.         subject     = subjectField.value();
  132.         message     = messageField.value();
  133.         reason      = reasonField.value();
  134.         sendEmail   = emailField.value();
  135.         ret = true;
  136.     }
  137.     return ret;
  138. }
  139. void run()
  140. {
  141.     ;
  142.     this.setEventRule();
  143.     if(rule)
  144.     {
  145.         this.setEventType();
  146.         try
  147.         {
  148.             ttsbegin;
  149.             setPrefix("Users notified.");
  150.             while select * from sessions
  151.             where sessions.Status  == SessionState::Running
  152.             {
  153.                 {
  154.                     setPrefix(strFmt("UserName: %1",
  155.                                       sessions.userId));
  156.                     this.createInbox();
  157.                     this.createData();
  158.                     this.infoLogMessage(sessions);
  159.                  }
  160.             }
  161.             this.cleanUp();
  162.             ttscommit;
  163.         }
  164.         catch(Exception::Error)
  165.         {
  166.             ttsabort;
  167.             info("Error occured, process aborted.");
  168.         }
  169.     }
  170.     else
  171.     {
  172.         error("Event rule could not be found. " +
  173.               "This class requires " +
  174.               "that atleast one event rule " +
  175.               "exists before it can be used.");
  176.     }
  177. }
  178. boolean sendMail(Email _email)
  179. {
  180.     boolean                 ret;
  181.     SysMailer               mail;
  182.     SysEmailParameters      emailParams =
  183.     SysEmailParameters::find();
  184.     ;
  185.     try
  186.     {
  187.         if(!emailParams)
  188.             throw error("No valid email parameters.");
  189.         mail = new SysMailer();
  190.         mail.SMTPRelayServer(Server IP Address);   //Sever IP Address here
  191.         mail.fromAddress("Manish","manish.singh@ilfstechnologies.com");
  192.         mail.subject(reason + " - " + subject);
  193.         mail.htmlBody(Message);
  194.         mail.tos().appendAddress(_email);
  195.         mail.sendMail();
  196.         ret = true;
  197.     }
  198.     catch(Exception::Error)
  199.     {
  200.         ret = false;
  201.     }
  202.     return ret;
  203.  
  204. }
  205. void setEventRule()
  206. {
  207.     ;
  208.     rule = this.createEventRule();
  209. }
  210. void setEventType()
  211. {
  212.     ;
  213.  
  214.     eventType = EventType::construct(2195,
  215.                 EventTypeTrigger::FieldChanged);
  216. }
  217. public boolean unpack(container packedClass)
  218. {
  219.     boolean ret;
  220.  
  221.     ret = super(packedClass);
  222.  
  223.     return ret;
  224. }
  225. static void main(Args args)
  226. {
  227.     SendMailClass  send
  228.     ;
  229.     send = new SendMailClass();
  230.     if(send.promptMessage())
  231.     {
  232.         send.run();
  233.     }
  234.  
  235. }
  236.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement