/// <summary> /// Inits this instance. /// </summary> public void Initialize() { NotificationManager nm = new NotificationManager(); cblNotificationTypes.DataSource = nm.LoadNotificationTypes(); cblNotificationTypes.DataTextField = "Name"; cblNotificationTypes.DataValueField = "Name"; cblNotificationTypes.DataBind(); string[] notificationTypes = HostSetting.GetHostSetting("EnabledNotificationTypes").Split(';'); foreach (string s in notificationTypes) { ListItem currentCheckBox = cblNotificationTypes.Items.FindByText(s); if (currentCheckBox != null) currentCheckBox.Selected = true; } AdminNotificationUser.DataSource = ITUser.GetAllUsers(); AdminNotificationUser.DataTextField = "DisplayName"; AdminNotificationUser.DataValueField = "UserName"; AdminNotificationUser.DataBind(); AdminNotificationUser.SelectedValue = HostSetting.GetHostSetting("AdminNotificationUsername"); }
protected void BulletedList4_Click1(object sender, BulletedListEventArgs e) { //Label1.Text = "The Index of Item you clicked: " + e.Index + "<br> The value of Item you clicked: " + BulletedList4.Items[e.Index].Text; foreach(ListItem li in BulletedList4.Items) li.Attributes.Add("class", "off"); BulletedList4.Items[e.Index].Attributes.Add("class", "on"); ProfileView.ActiveViewIndex = e.Index; switch (ProfileView.ActiveViewIndex) { case 3: lstAllProjects.Items.Clear(); lstSelectedProjects.Items.Clear(); lstAllProjects.DataSource = Project.GetProjectsByMemberUserName(Security.GetUserName()); lstAllProjects.DataTextField = "Name"; lstAllProjects.DataValueField = "Id"; lstAllProjects.DataBind(); // Copy selected users into Selected Users List Box List<ProjectNotification> projectNotifications = ProjectNotification.GetProjectNotificationsByUsername(Security.GetUserName()); foreach (ProjectNotification currentNotification in projectNotifications) { ListItem matchItem = lstAllProjects.Items.FindByValue(currentNotification.ProjectId.ToString()); if (matchItem != null) { lstSelectedProjects.Items.Add(matchItem); lstAllProjects.Items.Remove(matchItem); } } //ProjectNotification.GetProjectNotificationsByUsername(Security.GetUserName()); NotificationManager nm = new NotificationManager(); CheckBoxList1.DataSource = nm.LoadNotificationTypes().FindAll(delegate(INotificationType t) { return t.Enabled == true; }); CheckBoxList1.DataTextField = "Name"; CheckBoxList1.DataValueField = "Name"; CheckBoxList1.DataBind(); string[] notificationTypes = WebProfile.Current.NotificationTypes.Split(';'); foreach (string s in notificationTypes) { ListItem currentCheckBox = CheckBoxList1.Items.FindByText(s); if (currentCheckBox != null) currentCheckBox.Selected = true; } break; } }
/// <summary> /// Sends an email to the user that is assigned to the issue /// </summary> /// <param name="issueId">The issue id.</param> /// <param name="newAssigneeUserName">New name of the assignee user.</param> public static void SendNewAssigneeNotification(int issueId, string newAssigneeUserName) { if (issueId <= Globals.NewId) throw (new ArgumentOutOfRangeException("issueId")); Issue issue = DataProviderManager.Provider.GetIssueById(issueId); EmailFormatTypes type = (EmailFormatTypes)HostSetting.GetHostSetting("SMTPEMailFormat", (int)EmailFormatTypes.Text); //load notification plugins NotificationManager nm = new NotificationManager(type); nm.LoadNotificationTypes(); //load template and replace the tokens string template = nm.LoadEmailNotificationTemplate("NewAssignee"); Dictionary<string, object> data = new Dictionary<string, object>(); data.Add("Issue", issue); template = nm.GenerateNotificationContent(template, data); string subject = nm.LoadNotificationTemplate("NewAssigneeSubject"); string displayname = ITUser.GetUserDisplayName(Security.GetUserName()); string notificationUserDisplayName = ITUser.GetUserDisplayName(newAssigneeUserName); try { //send notifications to the new assignee nm.SendNotification(newAssigneeUserName, String.Format(subject, issue.FullId), template, notificationUserDisplayName); } catch (Exception ex) { ProcessException(ex); } }
/// <summary> /// Sends the new issue comment notification. /// </summary> /// <param name="issueId">The issue id.</param> /// <param name="newComment">The new comment.</param> public static void SendNewIssueCommentNotification(int issueId, IssueComment newComment) { if (issueId <= Globals.NewId) throw (new ArgumentOutOfRangeException("issueId")); if (newComment == null) throw new ArgumentNullException("newComment"); Issue issue = DataProviderManager.Provider.GetIssueById(issueId); List<IssueNotification> issNotifications = DataProviderManager.Provider.GetIssueNotificationsByIssueId(issueId); EmailFormatTypes type = (EmailFormatTypes)HostSetting.GetHostSetting("SMTPEMailFormat", (int)EmailFormatTypes.Text); //load notification plugins NotificationManager nm = new NotificationManager(type); nm.LoadNotificationTypes(); //load template and replace the tokens string template = nm.LoadEmailNotificationTemplate("NewIssueComment"); Dictionary<string, object> data = new Dictionary<string, object>(); data.Add("Issue", issue); data.Add("Comment", newComment); template = nm.GenerateNotificationContent(template, data); string subject = nm.LoadNotificationTemplate("NewIssueCommentSubject"); string userDisplayName = ITUser.GetUserDisplayName(Security.GetUserName()); foreach (IssueNotification notify in issNotifications) { try { string notificationUserDisplayName = ITUser.GetUserDisplayName(notify.NotificationUsername); nm.SendNotification(notify.NotificationUsername, String.Format(subject, issue.FullId, userDisplayName), template, notificationUserDisplayName); } catch (Exception ex) { ProcessException(ex); } } }
/// <summary> /// Sends the issue notifications. /// </summary> /// <param name="issueId">The issue id.</param> /// <param name="issueChanges">The issue changes.</param> public static void SendIssueNotifications(int issueId, List<IssueHistory> issueChanges) { // validate input if (issueId <= Globals.NewId) throw (new ArgumentOutOfRangeException("issueId")); Issue issue = DataProviderManager.Provider.GetIssueById(issueId); List<IssueNotification> issNotifications = DataProviderManager.Provider.GetIssueNotificationsByIssueId(issueId); EmailFormatTypes type = (EmailFormatTypes)HostSetting.GetHostSetting("SMTPEMailFormat", (int)EmailFormatTypes.Text); //load notification plugins NotificationManager nm = new NotificationManager(type); nm.LoadNotificationTypes(); //load template and replace the tokens string template = nm.LoadEmailNotificationTemplate("IssueUpdatedWithChanges"); Dictionary<string, object> data = new Dictionary<string, object>(); data.Add("Issue", issue); System.IO.StringWriter writer = new System.IO.StringWriter(); using (System.Xml.XmlWriter xml = new System.Xml.XmlTextWriter(writer)) { xml.WriteStartElement("IssueHistoryChanges"); foreach (IssueHistory issueHistory in issueChanges) { issueHistory.Save(); xml.WriteRaw(issueHistory.ToXml()); } xml.WriteEndElement(); data.Add("RawXml_Changes", writer.ToString()); } template = nm.GenerateNotificationContent(template, data); string subject = nm.LoadNotificationTemplate("IssueUpdatedSubject"); string displayname = ITUser.GetUserDisplayName(Security.GetUserName()); foreach (IssueNotification notify in issNotifications) { try { //send notifications to everyone except who changed it. //if (notify.NotificationUsername != Security.GetUserName()) string notificationUserDisplayName = ITUser.GetUserDisplayName(notify.NotificationDisplayName); nm.SendNotification(notify.NotificationUsername, String.Format(subject, issue.FullId, displayname), String.Format(template, issueChanges), notificationUserDisplayName); } catch (Exception ex) { ProcessException(ex); } } }
/// <summary> /// Sends an email to all users that are subscribed to a bug /// </summary> /// <param name="issueId">The bug id.</param> public static void SendIssueNotifications(int issueId) { if (issueId <= Globals.NewId) throw (new ArgumentOutOfRangeException("issueId")); Issue issue = DataProviderManager.Provider.GetIssueById(issueId); List<IssueNotification> issNotifications = DataProviderManager.Provider.GetIssueNotificationsByIssueId(issueId); //TODO: Move this internal to the notification manager ?? //pass in a notification type parameter to decide which notification to send and the issue. //load plugins EmailFormatTypes type = (EmailFormatTypes)HostSetting.GetHostSetting("SMTPEMailFormat", (int)EmailFormatTypes.Text); NotificationManager nm = new NotificationManager(type); nm.LoadNotificationTypes(); //load template and replace the tokens string template = nm.LoadEmailNotificationTemplate("IssueUpdated"); Dictionary<string, object> data = new Dictionary<string, object>(); data.Add("Issue", issue); template = nm.GenerateNotificationContent(template, data); string subject = nm.LoadNotificationTemplate("IssueUpdatedSubject"); string displayname = ITUser.GetUserDisplayName(Security.GetUserName()); foreach (IssueNotification notify in issNotifications) { try { //send notifications to everyone except who changed it. if (notify.NotificationUsername != Security.GetUserName()) { string notificationUserDisplayName = ITUser.GetUserDisplayName(notify.NotificationDisplayName); nm.SendNotification(notify.NotificationUsername, String.Format(subject, issue.FullId, displayname), template, notificationUserDisplayName); } } catch (Exception ex) { ProcessException(ex); } } }
/// <summary> /// Sends the user registered notification. /// </summary> /// <param name="user">The user.</param> public static void SendUserRegisteredNotification(string userName) { if (userName == "") throw new ArgumentNullException("user"); EmailFormatTypes type = (EmailFormatTypes)HostSetting.GetHostSetting("SMTPEMailFormat", (int)EmailFormatTypes.Text); MembershipUser user = ITUser.GetUser(userName); WebProfile profile = new WebProfile().GetProfile(user.UserName); //load notification plugins NotificationManager nm = new NotificationManager(type); nm.LoadNotificationTypes(); //load template and replace the tokens string template = nm.LoadEmailNotificationTemplate("UserRegistered"); string subject = nm.LoadNotificationTemplate("UserRegisteredSubject"); Dictionary<string, object> data = new Dictionary<string, object>(); ITUser u = new ITUser() { CreationDate = user.CreationDate, Email = user.Email, UserName = user.UserName, DisplayName = new WebProfile().GetProfile(user.UserName).DisplayName, IsApproved = user.IsApproved }; data.Add("User", u); template = nm.GenerateNotificationContent(template, data); //all admin notifications sent to admin user defined in host settings, string AdminNotificationUsername = HostSetting.GetHostSetting("AdminNotificationUsername"); nm.SendNotification(AdminNotificationUsername, subject, template); }
/// <summary> /// Sends the user password reminder. /// </summary> /// <param name="username">The username.</param> /// <returns></returns> public static void SendUserPasswordReminderNotification(MembershipUser user, string passwordAnswer) { if (user == null) throw new ArgumentNullException("user"); //load notification plugins NotificationManager nm = new NotificationManager(); nm.LoadNotificationTypes(); //load template and replace the tokens string template = nm.LoadNotificationTemplate("PasswordReminder"); string subject = nm.LoadNotificationTemplate("PasswordReminderSubject"); string displayname = ITUser.GetUserDisplayName(user.UserName); nm.SendNotification(user.UserName, subject, String.Format(template, HostSetting.GetHostSetting("ApplicationTitle"), user.GetPassword(passwordAnswer))); }
/// <summary> /// Sends the user new password notification. /// </summary> /// <param name="user">The user.</param> /// <param name="newPassword">The new password.</param> public static void SendUserNewPasswordNotification(MembershipUser user, string newPassword) { if (user == null) throw new ArgumentNullException("user"); EmailFormatTypes type = (EmailFormatTypes)HostSetting.GetHostSetting("SMTPEMailFormat", (int)EmailFormatTypes.Text); NotificationManager nm = new NotificationManager(type); nm.LoadNotificationTypes(); //load template and replace the tokens string template = nm.LoadEmailNotificationTemplate("PasswordReset"); string subject = nm.LoadNotificationTemplate("PasswordResetSubject"); string displayname = ITUser.GetUserDisplayName(user.UserName); Dictionary<string, object> data = new Dictionary<string, object>(); ITUser u = new ITUser() { CreationDate = user.CreationDate, Email = user.Email, UserName = user.UserName, DisplayName = new WebProfile().GetProfile(user.UserName).DisplayName, IsApproved = user.IsApproved }; data.Add("User", u); data.Add("Password", newPassword); template = nm.GenerateNotificationContent(template, data); nm.SendNotification(user.UserName, subject, template); }