// Emails //ITIL Customization - send email requester when ticket is resolved #region NotifyRequesterTicketResolved private void NotifyRequesterTicketResolved(string TaskID) { ServiceDeskDALDataContext objServiceDeskDALDataContext = new ServiceDeskDALDataContext(); ITILServiceDesk_Task objITILServiceDesk_Tasks = (from ITILServiceDesk_Tasks in objServiceDeskDALDataContext.ITILServiceDesk_Tasks where ITILServiceDesk_Tasks.TaskID == Convert.ToInt32(TaskID) select ITILServiceDesk_Tasks).FirstOrDefault(); string strDomainServerUrl = DotNetNuke.Common.Globals.AddHTTP(Request.Url.Host); // ITIL Customization - get DomainServerUrl for use in Utility.FixURLLink string strPasswordLinkUrl = Utility.FixURLLink(DotNetNuke.Common.Globals.NavigateURL(PortalSettings.ActiveTab.TabID, "EditTask", "mid=" + ModuleId.ToString(), String.Format(@"&TaskID={0}&TP={1}", TaskID, objITILServiceDesk_Tasks.TicketPassword)), strDomainServerUrl); string strSubject = String.Format(Localization.GetString("TicketIsResolved.Text", LocalResourceFile), TaskID); string strEmail = objITILServiceDesk_Tasks.RequesterEmail; // If userId is not -1 then get the Email if (objITILServiceDesk_Tasks.RequesterUserID > -1) { strEmail = UserController.GetUserById(PortalId, objITILServiceDesk_Tasks.RequesterUserID).Email; } string strBody = Localization.GetString("HTMLTicketEmailRequester.Text", LocalResourceFile); strBody = Utility.ReplaceTicketToken(strBody, strPasswordLinkUrl, objITILServiceDesk_Tasks); DotNetNuke.Services.Mail.Mail.SendMail(PortalSettings.Email, strEmail, "", strSubject, strBody, "", "HTML", "", "", "", ""); }
private void NotifyGroupAssignTicket(string TaskID) { // ITIL Customization - email notifies the Admins of a new ticket and also includes the ticket details ServiceDeskDALDataContext objServiceDeskDALDataContext = new ServiceDeskDALDataContext(); ITILServiceDesk_Task objITILServiceDesk_Tasks = (from ITILServiceDesk_Tasks in objServiceDeskDALDataContext.ITILServiceDesk_Tasks where ITILServiceDesk_Tasks.TaskID == Convert.ToInt32(TaskID) select ITILServiceDesk_Tasks).FirstOrDefault(); string strDomainServerUrl = DotNetNuke.Common.Globals.AddHTTP(Request.Url.Host); // ITIL Customization - get DomainServerUrl for use in Utility.FixURLLink string strPasswordLinkUrl = Utility.FixURLLink(DotNetNuke.Common.Globals.NavigateURL(PortalSettings.ActiveTab.TabID, "EditTask", "mid=" + ModuleId.ToString(), String.Format(@"&TaskID={0}&TP={1}", TaskID, objITILServiceDesk_Tasks.TicketPassword)), strDomainServerUrl); RoleController objRoleController = new RoleController(); //string strAssignedRole = String.Format("{0}", objRoleController.GetRoleById(Convert.ToInt32(ddlAssigned.SelectedValue), PortalId).RoleName); string strAssignedRole = ddlAssigned.SelectedItem.Text; string strLinkUrl = Utility.FixURLLink(DotNetNuke.Common.Globals.NavigateURL(PortalSettings.ActiveTab.TabID, "EditTask", "mid=" + ModuleId.ToString(), String.Format(@"&TaskID={0}", TaskID)), PortalSettings.PortalAlias.HTTPAlias); string strSubject = String.Format(Localization.GetString("HelpDeskTicketAtHasBeenAssigned.Text", LocalResourceFile), TaskID, strAssignedRole); string strBody = Localization.GetString("HTMLTicketEmailAssignee.Text", LocalResourceFile); strBody = Utility.ReplaceTicketToken(strBody, strPasswordLinkUrl, objITILServiceDesk_Tasks); strBody = strBody + Environment.NewLine; strBody = strBody + String.Format(Localization.GetString("YouMaySeeStatusHere.Text", LocalResourceFile), strLinkUrl); // Get all users in the AssignedRole Role // ArrayList colAssignedRoleUsers = objRoleController.GetUsersByRoleName(PortalId, strAssignedRole); IList <UserInfo> colAssignedRoleUsers = RoleController.Instance.GetUsersByRole(PortalId, strAssignedRole); foreach (UserInfo objUserInfo in colAssignedRoleUsers) { DotNetNuke.Services.Mail.Mail.SendMail(PortalSettings.Email, objUserInfo.Email, "", strSubject, strBody, "", "HTML", "", "", "", ""); } Log.InsertLog(Convert.ToInt32(TaskID), UserId, String.Format(Localization.GetString("AssignedTicketTo.Text", LocalResourceFile), UserInfo.DisplayName, strAssignedRole)); }
// Tags #region DisplayCategoryTree private void DisplayCategoryTree() { bool boolUserAssignedToTask = false; ServiceDeskDALDataContext objServiceDeskDALDataContext = new ServiceDeskDALDataContext(); ITILServiceDesk_Task objITILServiceDesk_Tasks = (from ITILServiceDesk_Tasks in objServiceDeskDALDataContext.ITILServiceDesk_Tasks where ITILServiceDesk_Tasks.TaskID == Convert.ToInt32(Request.QueryString["TaskID"]) select ITILServiceDesk_Tasks).FirstOrDefault(); //Is user in the Assigned Role? RoleController objRoleController = new RoleController(); RoleInfo objRoleInfo = objRoleController.GetRole(objITILServiceDesk_Tasks.AssignedRoleID, PortalId); if (objRoleInfo != null) { if (UserInfo.IsInRole(objRoleInfo.RoleName)) { boolUserAssignedToTask = true; } } if (boolUserAssignedToTask || UserInfo.IsInRole(GetAdminRole()) || UserInfo.IsInRole(PortalSettings.AdministratorRoleName) || UserInfo.IsSuperUser) { // Show all Tags TagsTreeExistingTasks.Visible = true; TagsTreeExistingTasks.TagID = Convert.ToInt32(Request.QueryString["TaskID"]); TagsTreeExistingTasks.DisplayType = Utility.DisplayTypeAdministrator; TagsTreeExistingTasks.Expand = false; } else { // Show only Visible Tags TagsTreeExistingTasks.Visible = true; TagsTreeExistingTasks.TagID = Convert.ToInt32(Request.QueryString["TaskID"]); TagsTreeExistingTasks.DisplayType = Utility.DisplayTypeRequestor; TagsTreeExistingTasks.Expand = false; } // Select Existing values if (objITILServiceDesk_Tasks.ITILServiceDesk_TaskCategories.Select(x => x.CategoryID).ToArray <int>().Count() > 0) { int[] ArrStrCategories = objITILServiceDesk_Tasks.ITILServiceDesk_TaskCategories.Select(x => x.CategoryID).ToArray <int>(); int?[] ArrIntCatagories = Array.ConvertAll <int, int?>(ArrStrCategories, new Converter <int, int?>(ConvertToNullableInt)); TagsTreeExistingTasks.SelectedCategories = ArrIntCatagories; } // Set visibility of Tags bool RequestorCatagories = (TagsTreeExistingTasks.DisplayType == Utility.DisplayTypeAdministrator) ? false : true; int CountOfCatagories = (from ServiceDeskCategories in CategoriesTable.GetCategoriesTable(PortalId, RequestorCatagories) where ServiceDeskCategories.PortalID == PortalId where ServiceDeskCategories.Level == 1 select ServiceDeskCategories).Count(); imgTags.Visible = (CountOfCatagories > 0); lbltxtTags.Visible = (CountOfCatagories > 0); }
private int SaveTicketForm() { ServiceDeskDALDataContext objServiceDeskDALDataContext = new ServiceDeskDALDataContext(); ITILServiceDesk_Task objITILServiceDesk_Task = (from ITILServiceDesk_Tasks in objServiceDeskDALDataContext.ITILServiceDesk_Tasks where ITILServiceDesk_Tasks.TaskID == Convert.ToInt32(Request.QueryString["TaskID"]) select ITILServiceDesk_Tasks).FirstOrDefault(); // Save original Assigned Group int intOriginalAssignedGroup = objITILServiceDesk_Task.AssignedRoleID; // Save Task objITILServiceDesk_Task.Status = ddlStatus.SelectedValue; objITILServiceDesk_Task.Description = txtDescription.Text; objITILServiceDesk_Task.PortalID = PortalId; objITILServiceDesk_Task.Priority = ddlPriority.SelectedValue; objITILServiceDesk_Task.RequesterPhone = txtPhone.Text; objITILServiceDesk_Task.AssignedRoleID = Convert.ToInt32(ddlAssigned.SelectedValue); // Only validate Name and email if Ticket is not for a DNN user // lblName will be hidden if it is not a DNN user // not a DNN user objITILServiceDesk_Task.RequesterEmail = txtEmail.Text; objITILServiceDesk_Task.RequesterName = txtName.Text; //objITILServiceDesk_Task.RequesterUserID = -1; // DueDate if (txtDueDate.Text.Trim().Length > 1) { objITILServiceDesk_Task.DueDate = Convert.ToDateTime(txtDueDate.Text.Trim()); } else { objITILServiceDesk_Task.DueDate = null; } // EstimatedStart if (txtStart.Text.Trim().Length > 1) { objITILServiceDesk_Task.EstimatedStart = Convert.ToDateTime(txtStart.Text.Trim()); } else { objITILServiceDesk_Task.EstimatedStart = null; } // EstimatedCompletion if (txtComplete.Text.Trim().Length > 1) { objITILServiceDesk_Task.EstimatedCompletion = Convert.ToDateTime(txtComplete.Text.Trim()); } else { objITILServiceDesk_Task.EstimatedCompletion = null; } // EstimatedHours if (txtEstimate.Text.Trim().Length > 0) { objITILServiceDesk_Task.EstimatedHours = Convert.ToInt32(txtEstimate.Text.Trim()); } else { objITILServiceDesk_Task.EstimatedHours = null; } objServiceDeskDALDataContext.SubmitChanges(); //ITIL Customization - notify requester when ticket is resolved if (ddlStatus.SelectedValue == "Resolved") { if (Status != "Resolved") { NotifyRequesterTicketResolved(objITILServiceDesk_Task.TaskID.ToString()); Status = ddlStatus.SelectedValue; } } // Notify Assigned Group if (Convert.ToInt32(ddlAssigned.SelectedValue) > -1) { // Only notify if Assigned group has changed if (intOriginalAssignedGroup != Convert.ToInt32(ddlAssigned.SelectedValue)) { //NotifyAssignedGroupOfAssignment(objITILServiceDesk_Task.TaskID.ToString()); NotifyGroupAssignTicket(objITILServiceDesk_Task.TaskID.ToString()); } } // Insert Log Log.InsertLog(objITILServiceDesk_Task.TaskID, UserId, String.Format(Localization.GetString("UpdatedTicket.Text", LocalResourceFile), UserInfo.DisplayName)); return(objITILServiceDesk_Task.TaskID); }
// Display Ticket Data #region DisplayTicketData private void DisplayTicketData() { ServiceDeskDALDataContext objServiceDeskDALDataContext = new ServiceDeskDALDataContext(); ITILServiceDesk_Task objITILServiceDesk_Tasks = (from ITILServiceDesk_Tasks in objServiceDeskDALDataContext.ITILServiceDesk_Tasks where ITILServiceDesk_Tasks.TaskID == Convert.ToInt32(Request.QueryString["TaskID"]) select ITILServiceDesk_Tasks).FirstOrDefault(); // Name is editable only if user is Anonymous if (objITILServiceDesk_Tasks.RequesterUserID == -1) { txtEmail.Visible = true; txtName.Visible = true; //lblEmail.Visible = false; //lblName.Visible = false; txtEmail.Text = objITILServiceDesk_Tasks.RequesterEmail; txtName.Text = objITILServiceDesk_Tasks.RequesterName; //ITIL Customization - assigning (txtEmail.Text to RequesterEmail) and (txtName.Text to RequesterName) in case user is anonymous RequesterEmail = txtEmail.Text; RequesterName = txtName.Text; } else { //txtEmail.Visible = false; //txtName.Visible = false; //lblEmail.Visible = true; //lblName.Visible = true; UserInfo objRequester = UserController.GetUser(PortalId, objITILServiceDesk_Tasks.RequesterUserID, false); if (objRequester != null) { //lblEmail.Text = UserController.GetUser(PortalId, objITILServiceDesk_Tasks.RequesterUserID, false).Email; //lblName.Text = UserController.GetUser(PortalId, objITILServiceDesk_Tasks.RequesterUserID, false).DisplayName; txtEmail.Text = UserController.GetUser(PortalId, objITILServiceDesk_Tasks.RequesterUserID, false).Email; txtName.Text = UserController.GetUser(PortalId, objITILServiceDesk_Tasks.RequesterUserID, false).DisplayName; //ITIL Customization - assigning (lblEmail.Text to RequesterEmail) and (lblName.Text to RequesterName) in case user is anonymous RequesterEmail = txtEmail.Text; RequesterName = txtName.Text; } else { txtName.Text = "[User Deleted]"; } } lblTask.Text = objITILServiceDesk_Tasks.TaskID.ToString(); lblCreatedData.Text = String.Format(objITILServiceDesk_Tasks.CreatedDate.ToShortDateString(), objITILServiceDesk_Tasks.CreatedDate.ToShortTimeString()); ddlStatus.SelectedValue = objITILServiceDesk_Tasks.Status; //ITIL Customization - assign objITILServiceDesk_Tasks.Status to Status for the purpose of preventing multiple email notifications Status = objITILServiceDesk_Tasks.Status; ddlPriority.SelectedValue = objITILServiceDesk_Tasks.Priority; txtDescription.Text = objITILServiceDesk_Tasks.Description; txtPhone.Text = objITILServiceDesk_Tasks.RequesterPhone; txtDueDate.Text = (objITILServiceDesk_Tasks.DueDate.HasValue) ? objITILServiceDesk_Tasks.DueDate.Value.ToShortDateString() : ""; txtStart.Text = (objITILServiceDesk_Tasks.EstimatedStart.HasValue) ? objITILServiceDesk_Tasks.EstimatedStart.Value.ToShortDateString() : ""; txtComplete.Text = (objITILServiceDesk_Tasks.EstimatedCompletion.HasValue) ? objITILServiceDesk_Tasks.EstimatedCompletion.Value.ToShortDateString() : ""; txtEstimate.Text = (objITILServiceDesk_Tasks.EstimatedHours.HasValue) ? objITILServiceDesk_Tasks.EstimatedHours.Value.ToString() : ""; ListItem TmpRoleListItem = ddlAssigned.Items.FindByValue(objITILServiceDesk_Tasks.AssignedRoleID.ToString()); if (TmpRoleListItem == null) { // Value was not found so add it RoleController objRoleController = new RoleController(); RoleInfo objRoleInfo = objRoleController.GetRole(objITILServiceDesk_Tasks.AssignedRoleID, PortalId); if (objRoleInfo != null) { ListItem RoleListItem = new ListItem(); RoleListItem.Text = objRoleInfo.RoleName; RoleListItem.Value = objITILServiceDesk_Tasks.AssignedRoleID.ToString(); ddlAssigned.Items.Add(RoleListItem); ddlAssigned.SelectedValue = objITILServiceDesk_Tasks.AssignedRoleID.ToString(); } else { // Role no longer exists in Portal ddlAssigned.SelectedValue = "-1"; } } else { // The Value already exists so set it ddlAssigned.SelectedValue = objITILServiceDesk_Tasks.AssignedRoleID.ToString(); } }
private bool CheckSecurity() { bool boolPassedSecurity = false; ServiceDeskDALDataContext objServiceDeskDALDataContext = new ServiceDeskDALDataContext(); ITILServiceDesk_Task objITILServiceDesk_Tasks = (from ITILServiceDesk_Tasks in objServiceDeskDALDataContext.ITILServiceDesk_Tasks where ITILServiceDesk_Tasks.TaskID == Convert.ToInt32(Request.QueryString["TaskID"]) select ITILServiceDesk_Tasks).FirstOrDefault(); if (objITILServiceDesk_Tasks == null) { pnlEditTask.Visible = false; Response.Redirect(DotNetNuke.Common.Globals.NavigateURL()); } // User not logged in if (UserId == -1) { // Must have the valid password if (Request.QueryString["TP"] != null) { // Check the password for this Ticket if (objITILServiceDesk_Tasks.TicketPassword == Convert.ToString(Request.QueryString["TP"])) { boolPassedSecurity = true; } else { boolPassedSecurity = false; } } } // User is logged in if (UserId > -1) { // Is user an Admin? string strAdminRoleID = GetAdminRole(); if (UserInfo.IsInRole(strAdminRoleID) || UserInfo.IsInRole(PortalSettings.AdministratorRoleName) || UserInfo.IsSuperUser) { boolPassedSecurity = true; CommentsControl.ViewOnly = false; } // Is user the Requestor? if (UserId == objITILServiceDesk_Tasks.RequesterUserID) { boolPassedSecurity = true; } //Is user in the Assigned Role? RoleController objRoleController = new RoleController(); RoleInfo objRoleInfo = objRoleController.GetRole(objITILServiceDesk_Tasks.AssignedRoleID, PortalId); if (objRoleInfo != null) { if (UserInfo.IsInRole(objRoleInfo.RoleName)) { boolPassedSecurity = true; CommentsControl.ViewOnly = false; } } // Does user have a valid temporary password? if (Request.QueryString["TP"] != null) { // Check the password for this Ticket if (objITILServiceDesk_Tasks.TicketPassword == Convert.ToString(Request.QueryString["TP"])) { boolPassedSecurity = true; } else { boolPassedSecurity = false; } } } return(boolPassedSecurity); }
// Customization - token replacement #region ReplaceTicketToken public static string ReplaceTicketToken(string strBody, string strPasswordLinkUrl, ITILServiceDesk_Task objITILServiceDesk_Tasks) { DotNetNuke.Entities.Portals.PortalSettings objPortalSettings = DotNetNuke.Entities.Portals.PortalController.GetCurrentPortalSettings(); //TaskID if (strBody.Contains("[TaskID]")) { strBody = strBody.Replace("[TaskID]", objITILServiceDesk_Tasks.TaskID.ToString()); } //PasswordLinkUrl if (strBody.Contains("[PasswordLinkUrl]")) { strBody = strBody.Replace("[PasswordLinkUrl]", strPasswordLinkUrl); } //Description if (strBody.Contains("[Description]")) { strBody = strBody.Replace("[Description]", objITILServiceDesk_Tasks.Description); } //Details if (strBody.Contains("[Details]")) { strBody = strBody.Replace("[Details]", GetDetailsOfTicket(objITILServiceDesk_Tasks.TaskID)); } //Comments if (strBody.Contains("[Comments]")) { strBody = strBody.Replace("[Comments]", GetCommentsOfTicket(objITILServiceDesk_Tasks.TaskID)); } //Requestor if (strBody.Contains("[Requestor]")) { strBody = strBody.Replace("[Requestor]", objITILServiceDesk_Tasks.RequesterName); } //Priority Name if (strBody.Contains("[PriorityName]")) { strBody = strBody.Replace("[PriorityName]", objITILServiceDesk_Tasks.Priority); } //Email if (strBody.Contains("[Email]")) { strBody = strBody.Replace("[Email]", GetEmailOfRequestor(objITILServiceDesk_Tasks.RequesterUserID, objITILServiceDesk_Tasks.RequesterEmail)); } //CreatedDate if (strBody.Contains("[CreatedDate]")) { strBody = strBody.Replace("[CreatedDate]", objITILServiceDesk_Tasks.CreatedDate.ToShortDateString()); } //DueDate if (strBody.Contains("[DueDate]")) { if (objITILServiceDesk_Tasks.DueDate.HasValue) { strBody = strBody.Replace("[DueDate]", objITILServiceDesk_Tasks.DueDate.Value.ToShortDateString()); } else { strBody = strBody.Replace("[DueDate]", string.Empty); } } //Phone if (strBody.Contains("[Phone]")) { strBody = strBody.Replace("[Phone]", objITILServiceDesk_Tasks.RequesterPhone); } //Assigned if (strBody.Contains("[Assigned]")) { strBody = strBody.Replace("[Assigned]", GetGetAssignedRoleName(objITILServiceDesk_Tasks.AssignedRoleID)); } //StatusName if (strBody.Contains("[StatusName]")) { strBody = strBody.Replace("[StatusName]", objITILServiceDesk_Tasks.Status); } //StartDate if (strBody.Contains("[StartDate]")) { if (objITILServiceDesk_Tasks.EstimatedStart.HasValue) { strBody = strBody.Replace("[StartDate]", objITILServiceDesk_Tasks.EstimatedStart.Value.ToShortDateString()); } else //blank out token { strBody = strBody.Replace("[StartDate]", string.Empty); } } //EstimatedHours if (strBody.Contains("[EstimatedHours]")) { if (objITILServiceDesk_Tasks.EstimatedHours.HasValue) { strBody = strBody.Replace("[EstimatedHours]", objITILServiceDesk_Tasks.EstimatedHours.Value.ToString()); } else //blank out token { strBody = strBody.Replace("[EstimatedHours]", string.Empty); } } //CompleteDate if (strBody.Contains("[CompleteDate]")) { if (objITILServiceDesk_Tasks.EstimatedCompletion.HasValue) { strBody = strBody.Replace("[CompleteDate]", objITILServiceDesk_Tasks.EstimatedCompletion.Value.ToShortDateString()); } else //blank out token { strBody = strBody.Replace("[CompleteDate]", string.Empty); } } return(strBody); }