using framework_business; using framework_library; using System; using System.Configuration; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Net; using System.IO; public partial class controls_module_jobcards : System.Web.UI.UserControl { private const string taskImagePath = "~/upload/tasks/"; #region properties public oTask Task { get { if (ViewState["task"] == null) return null; else return (oTask)ViewState["task"]; } set { ViewState["task"] = value; } } public int CanvasId { get { if (ViewState["canvasId"] == null) return 0; else return (int)ViewState["canvasId"]; } set { ViewState["canvasId"] = value; } } public int SnapshotId { get { if (ViewState["snapshotId"] == null) return 0; else return (int)ViewState["snapshotId"]; } set { ViewState["snapshotId"] = value; } } public int SnapshotY { get { if (ViewState["snapshotY"] == null) return 0; else return (int)ViewState["snapshotY"]; } set { ViewState["snapshotY"] = value; } } public int SnapshotX { get { if (ViewState["snapshotX"] == null) return 0; else return (int)ViewState["snapshotX"]; } set { ViewState["snapshotX"] = value; } } public string ActivePanel { //"pnlTaskGrid","pnlTaskForm","pnlTaskView","pnlTaskAttachments","pnlTaskNotes" get { if (ViewState["activePanel"] == null) return "Grid"; else return ViewState["activePanel"].ToString(); } set { ViewState["activePanel"] = value; } } public bool ServiceDesk { get; set; } #endregion #region methods public void ReloadControl() { try { LoadPage(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private void BindGrid() { try { //GR - TO DO filter tasks by customer code and project code List list = new List(); oDynamicParam param1 = new oDynamicParam(); param1.paramDisplayName = "CustomerCode"; param1.paramObject = ddFilterCustomer.SelectedValue; list.Add(param1); oDynamicParam param2 = new oDynamicParam(); param2.paramDisplayName = "ProjectCode"; param2.paramObject = ddFilterProject.SelectedValue; list.Add(param2); DataTable dtTemp = xData.GetTypedTableByProc("recId", typeof(oTask), "sp_Tasks", list, "pal_", true); DataTable dt = new DataTable(); dt = dtTemp.Copy(); string assignee = ""; if (ddFilterAssignee.SelectedItem != null && ddFilterAssignee.SelectedItem.Value != "0") assignee = ddFilterAssignee.SelectedItem.Text; if (assignee != "") { IEnumerable query = from task in dt.AsEnumerable() where task.Field("Assignee") == assignee select task; if (query.Count() > 0) dt = query.CopyToDataTable(); else dt = dt.Clone(); } string initiator = ""; if (ddFilterInitiator.SelectedItem != null && ddFilterInitiator.SelectedItem.Value != "0") initiator = ddFilterInitiator.SelectedItem.Text; if (initiator != "") { IEnumerable query = from task in dt.AsEnumerable() where task.Field("Initiator") == initiator select task; if (query.Count() > 0) dt = query.CopyToDataTable(); else dt = dt.Clone(); } string project = ""; if (ddFilterProject.SelectedItem != null && ddFilterProject.SelectedItem.Value != "0") project = ddFilterProject.SelectedItem.Text; if (project != "") { IEnumerable query = from task in dt.AsEnumerable() where task.Field("Project") == project select task; if (query.Count() > 0) dt = query.CopyToDataTable(); else dt = dt.Clone(); } string type = ""; if (ddFilterType.SelectedItem != null && ddFilterType.SelectedItem.Value != "0") { type = ddFilterType.SelectedItem.Text; foreach (pNums.TaskCategory cat in Enum.GetValues(typeof(pNums.TaskCategory))) { if (type.StartsWith(cat.ToString())) { type = type.Replace(cat.ToString() + " ", ""); break; } } } if (type != "") { IEnumerable query = from task in dt.AsEnumerable() where task.Field("Type") == type select task; if (query.Count() > 0) dt = query.CopyToDataTable(); else dt = dt.Clone(); } string status = ""; if (ddFilterStatus.SelectedItem != null && ddFilterStatus.SelectedItem.Value != "0") status = ddFilterStatus.SelectedItem.Text; if (status != "") { if (handler.ReturnSetup().code == "STUD-1") { //CVH 2017-06-21 Custom statuses = Closed=Closed, Open=To do, Resolved=Release ready, Supplier Repairs=In progress. if (status == "Open") status = "To do"; //else if (status == "Resolved") // status = "Release ready"; else if (status == "Supplier Repairs") status = "In progress"; } IEnumerable query = from task in dt.AsEnumerable() where task.Field("Status") == status select task; if (query.Count() > 0) dt = query.CopyToDataTable(); else dt = dt.Clone(); } rptTasks.DataSource = dt; rptTasks.DataBind(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private void BindHistoryGrid(oTask task) { try { List list = new List(); oDynamicParam param = new oDynamicParam(); param.paramDisplayName = "taskId"; param.paramObject = task.recId; list.Add(param); DataTable dt = xData.GetTypedTableByProc("recId", typeof(oTaskHistory), "sp_TaskActivityLog", list, "pal_", true); rptTaskHsitory.DataSource = dt; rptTaskHsitory.DataBind(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private void BindTaskCategory() { try { DataTable dt = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oTaskCategory), "isActive", "1", "", "pal_", true); if (dt == null || dt.Rows.Count <= 0) throw new Exception("No task categories found."); ddTaskCategory.DataSource = dt; ddTaskCategory.DataTextField = "taskCategory"; ddTaskCategory.DataValueField = "recId"; ddTaskCategory.DataBind(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private void BindTaskPriority() { try { DataTable dt = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oTaskPriority), "isActive", "1", "taskPriority", "pal_", true); if (dt == null || dt.Rows.Count <= 0) throw new Exception("No task priorities found."); ddTaskPriority.DataSource = dt; ddTaskPriority.DataTextField = "taskPriority"; ddTaskPriority.DataValueField = "recId"; ddTaskPriority.DataBind(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private void BindTaskType() { try { int cat = (int)pNums.TaskCategory.Jobcard; //if (ddTaskCategory.SelectedItem != null) // cat = int.Parse(ddTaskCategory.SelectedItem.Value); if (cat != 0) { DataTable dt = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oTaskType), "isActive,taskCategoryId", "1," + cat, "taskType", "pal_", true); if (dt == null || dt.Rows.Count <= 0) throw new Exception("No task types found for category " + cat + "."); ddTaskType.DataSource = dt; ddTaskType.DataTextField = "taskType"; ddTaskType.DataValueField = "recId"; ddTaskType.DataBind(); } } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private void BindFilterTaskType() { try { //get all active types foreach (oTaskType type in xData.GetTypedByCriteriaSpecific("recId", typeof(oTaskType), "isActive", "1", "taskCategoryId", "pal_", true)) { ////get the category that the type is linked to and add to list //foreach (pNums.TaskCategory cat in Enum.GetValues(typeof(pNums.TaskCategory))) //{ if (type.taskCategoryId == (int)pNums.TaskCategory.Jobcard) { ddFilterType.Items.Add(new ListItem(type.taskType, type.recId.ToString())); break; } //} } ddFilterType.Items.Insert(0, new ListItem("All", "0")); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } /// /// Bind Customers /// private void BindCustomers() { ArrayList customers = new ArrayList(); try { oSetup _setup = handler.ReturnSetup(); customers = xData.GetTypedByCriteriaSpecific("recId", typeof(oCustomer), "isActive", "1", "customer", "pal_", true); ddFilterCustomer.DataSource = customers; ddFilterCustomer.DataTextField = "customer"; ddFilterCustomer.DataValueField = "code"; ddFilterCustomer.DataBind(); ddFilterCustomer.SelectedValue = _setup.code; if (_setup.code != "EVOL-1") ddFilterCustomer.Enabled = false; } catch (Exception ex) { exception.HandleException("Users:", MethodBase.GetCurrentMethod().Name, ex, Session["profileId"]); Response.Redirect("/error", false); } } /// /// Bind Projects /// private void BindProject() { try { //GR - Replaced with project module DataTable projects = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oProject), "isActive,customerCode,categoryId", "1," + ddFilterCustomer.SelectedValue + "," + (int)pNums.TaskCategory.Jobcard, "projectCode", "pal_", true); //GR if no projects found for this customer create a general project if (projects.Rows.Count == 0) { oProject proj = new oProject(); proj.customerCode = ddFilterCustomer.SelectedValue; proj.name = "JOBCARDS 1"; proj.isActive = true; proj.categoryId = (int)pNums.TaskCategory.Jobcard; string prefix = String.Empty; //create project code if (proj.name.Length > 3) { prefix = proj.name.Substring(0, 4); } else prefix = proj.name; oProjectNumber projNumber = new oProjectNumber(); foreach (oProjectNumber pCode in xData.GetTypedByCriteriaSpecific("recId", typeof(oProjectNumber), "custCode,prefix", proj.customerCode + "," + prefix, "prefix", "pal_", true)) { projNumber = pCode; break; } projNumber.prefix = prefix.ToUpper(); projNumber.lastNumberUsed += 1; projNumber.custCode = proj.customerCode; proj.projectCode = projNumber.prefix + "-" + projNumber.lastNumberUsed; proj.dateCreated = DateTime.Now; proj.recId = xData.SaveTyped("recId", typeof(oProject), proj, "pal_", true); if (proj.recId > 0) { if (projNumber.recId > 0) { xData.UpdateTyped("recId", projNumber.recId.ToString(), typeof(oProjectNumber), projNumber, "pal_", true); } else { projNumber.recId = xData.SaveTyped("recId", typeof(oProjectNumber), projNumber, "pal_", true); } DataRow projRow = projects.NewRow(); projRow["projectCode"] = proj.projectCode; projRow["name"] = proj.name; projects.Rows.Add(projRow); } } ddFilterProject.DataSource = projects; ddFilterProject.DataValueField = "projectCode"; ddFilterProject.DataTextField = "name"; ddFilterProject.DataBind(); ddTaskProject.DataSource = projects; ddTaskProject.DataValueField = "projectCode"; ddTaskProject.DataTextField = "name"; ddTaskProject.DataBind(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private void BindUser() { try { //GR - Added to get customer code oSetup _setup = handler.ReturnSetup(); //get the EVOL-1 admin users for assignees DataTable dtEvo = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oUser), "isActive,customerCode,userType", "1,EVOL-1," + pNums.UserType.AdminUser.GetHashCode(), "surname", "pal_", true); //get the users that DataTable dtUsers = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oUser), "isActive,customerCode,userType", "1," + _setup.code + ",~>" + pNums.UserType.PowerUser.GetHashCode(), "surname", "pal_", true); if (_setup.code != "EVOL-1") { //add evol users foreach (DataRow row in dtEvo.Rows) { dtUsers.ImportRow(row); } } if (dtUsers == null || dtUsers.Rows.Count <= 0) throw new Exception("No users found."); //for (int i = dt.Rows.Count - 1; i >= 0; i--) //{ // DataRow row = dt.Rows[i]; // if ((row["name"].ToString() != "Jas" || row["surname"].ToString() != "Rademeyer") && // (row["name"].ToString() != "Kyle" || row["surname"].ToString() != "Buckingham") && // (row["name"].ToString() != "Graham" || row["surname"].ToString() != "Rook") && // (row["name"].ToString() != "Charlene" || row["surname"].ToString() != "Van Heerden") && // (row["name"].ToString() != "Dylan" || row["surname"].ToString() != "Reevel")) // dt.Rows.Remove(row); //} ddTaskInitiator.DataSource = dtUsers; ddTaskInitiator.DataTextField = "name"; ddTaskInitiator.DataValueField = "recId"; ddTaskInitiator.DataBind(); //CVH 2017-05-17 Changing to load same users as Initiator, need to be able to link to SBF contractor ddTaskAssignee.DataSource = dtUsers; ddTaskAssignee.DataTextField = "name"; ddTaskAssignee.DataValueField = "recId"; ddTaskAssignee.DataBind(); ddFilterAssignee.DataSource = dtUsers; ddFilterAssignee.DataTextField = "name"; ddFilterAssignee.DataValueField = "recId"; ddFilterAssignee.DataBind(); ddFilterAssignee.Items.Insert(0, new ListItem("All", "0")); oUser usr = new oUser(); if (utils.verifySession("user")) usr = (oUser)Session["user"]; if (ddFilterAssignee.Items.FindByValue(usr.recId.ToString()) != null) ddFilterAssignee.Items.FindByValue(usr.recId.ToString()).Selected = true; ddFilterInitiator.DataSource = dtUsers; ddFilterInitiator.DataTextField = "name"; ddFilterInitiator.DataValueField = "recId"; ddFilterInitiator.DataBind(); ddFilterInitiator.Items.Insert(0, new ListItem("All", "0")); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private DataTable CustomOverrideStatus(DataTable dt) { try { if (handler.ReturnSetup().code == "STUD-1") { //CVH 2017-06-21 Custom statuses = Closed=Closed, Open=To do, Resolved=Release ready, Supplier Repairs=In progress. for (int i=dt.Rows.Count - 1; i>=0; i--) { string status = dt.Rows[i]["taskStatus"].ToString(); if (status == "To do") dt.Rows[i]["taskStatus"] = "Open"; //else if (status == "Release ready") // dt.Rows[i]["taskStatus"] = "Resolved"; else if (status == "In progress") dt.Rows[i]["taskStatus"] = "Supplier Repairs"; else if (status != "Closed") dt.Rows.RemoveAt(i); } } return dt; } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); return dt; } } private void BindTaskStatus() { try { DataTable dt = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oTaskStatus), "isActive", "1", "sequence", "pal_", true); if (dt == null || dt.Rows.Count <= 0) throw new Exception("No task statuses found."); dt = CustomOverrideStatus(dt); ddTaskStatus.DataSource = dt; ddTaskStatus.DataTextField = "taskStatus"; ddTaskStatus.DataValueField = "recId"; ddTaskStatus.DataBind(); ddFilterStatus.DataSource = dt; ddFilterStatus.DataTextField = "taskStatus"; ddFilterStatus.DataValueField = "recId"; ddFilterStatus.DataBind(); ddFilterStatus.Items.Insert(0, new ListItem("All", "0")); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private string GetFileTypeImage(string fileLocation) { string imgSrc = "/images/doc.png"; try { string uri = String.Empty; if (fileLocation.Contains("http")) uri = fileLocation; else uri = Server.MapPath("~" + fileLocation); System.Drawing.Icon icon = System.Drawing.Icon.ExtractAssociatedIcon(uri); if (icon != null) { System.Drawing.Image img = icon.ToBitmap(); byte[] byteArray = new byte[0]; using (System.IO.MemoryStream stream = new System.IO.MemoryStream()) { img.Save(stream, System.Drawing.Imaging.ImageFormat.Png); stream.Close(); byteArray = stream.ToArray(); } string base64 = Convert.ToBase64String(byteArray); imgSrc = String.Format("data:image/png;base64,{0}", base64); } return imgSrc; } catch (Exception ex) { throw new Exception("Icon conversion to image failed. " + ex.Message); } } private void BindAttachments(int taskId, HtmlGenericControl parentControl) { try { oSetup _setup = handler.ReturnSetup(); //get users ArrayList users = xData.GetTypedByCriteriaSpecific("recId", typeof(oUser), "isActive,customerCode,userType", "1," + _setup.code + ",~>" + pNums.UserType.PowerUser.GetHashCode(), "surname", "pal_", true); if (_setup.code != "EVOL-1")//add evol users { ArrayList evolUsers = xData.GetTypedByCriteriaSpecific("recId", typeof(oUser), "isActive, customerCode, userType", "1,EVOL-1," + pNums.UserType.AdminUser.GetHashCode(), "surname", "pal_", true); foreach (oUser evolUsr in evolUsers) { users.Add(evolUsr); } } System.Text.StringBuilder formbuilder = new System.Text.StringBuilder(); bool firstAttachment = true; //get a list of all history entries for given task foreach (oTaskHistory hist in xData.GetTypedByCriteriaSpecific("recId", typeof(oTaskHistory), "taskId", taskId.ToString(), "recId DESC", "pal_", true)) { //get all attachments linked to any of the history items. if linked to task module, attachment is linked to "header", when linked to note, module will be note module foreach (oAttachment att in xData.GetTypedByCriteriaSpecific("recId", typeof(oAttachment), "moduleId,entityId", (int)pNums.Module.Task + "," + hist.recId.ToString(), "dateSaved DESC", "pal_", true)) { string fileLocation = ""; if (att.typeId == (int)pNums.AttachmentType.Document) fileLocation = att.sourcePath + "/upload/" + att.folderName + "/file/" + att.fileName; else fileLocation = att.sourcePath + "/upload/" + att.folderName + "/image/" + att.fileName; string user = ""; foreach (oUser usr in users) { if (usr.recId == att.userIdSaved) { user = usr.name; break; } } string details = "  (" + user + " - " + utils.fixDate(att.dateSaved) + ")"; string hyperlink = "  " + att.display + "" + details + "
"; if (firstAttachment) { formbuilder.AppendLine("

" + hyperlink + "
"); firstAttachment = false; } else formbuilder.AppendLine("
" + hyperlink + "
"); } } parentControl.InnerHtml = formbuilder.ToString(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } /// /// Bind Notes /// /// /// private void BindNotes(int taskId, HtmlGenericControl parentControl) { try { parentControl.InnerHtml = ""; ArrayList taskNotes = new ArrayList(); //get a list of all history entries for given task foreach (oTaskHistory hist in xData.GetTypedByCriteriaSpecific("recId", typeof(oTaskHistory), "taskId", taskId.ToString(), "", "pal_", true)) { //get list of all notes linked to this history item foreach (oNote note in xData.GetTypedByCriteriaSpecific("recId", typeof(oNote), "moduleId,entityId", (int)pNums.Module.Task + "," + hist.recId.ToString(), "", "pal_", true)) { taskNotes.Add(note); } } //order notes by date if (taskNotes == null || taskNotes.Count <= 0) return; var notes = taskNotes.OfType().OrderByDescending(n => n.dateSaved).ToArray(); System.Text.StringBuilder formBuilder = new System.Text.StringBuilder(); bool firstNote = true; //loop through notes, get attachment linked to note, and add to form foreach (oNote noteAdd in notes) { //start of group formBuilder.Append("
"); //heading formBuilder.AppendLine("
"); formBuilder.AppendLine(noteAdd.title); formBuilder.AppendLine(""); formBuilder.AppendLine(""); formBuilder.AppendLine(""); formBuilder.AppendLine("
"); //end of heading //toggle panel if (firstNote) { formBuilder.AppendLine("
"); firstNote = false; } else { formBuilder.AppendLine("
"); } //build body of formBuilder.AppendLine("
"); //build horizontal form formBuilder.AppendLine("
"); formBuilder.AppendLine("
"); formBuilder.AppendLine("
"); //row formBuilder.AppendLine("
"); if (noteAdd.customValue != string.Empty) { formBuilder.AppendLine("
"); foreach (oNoteType noteType in xData.GetTypedByCriteriaSpecific("recId", typeof(oNoteType), "recId", noteAdd.typeId.ToString())) { formBuilder.AppendLine("" + noteType.customItem + ": "); } formBuilder.AppendLine(noteAdd.customValue + "
"); } formBuilder.AppendLine("
" + noteAdd.caption + "
"); //get all attachments linked to note bool firstAttachment = true; foreach (oAttachment att in xData.GetTypedByCriteriaSpecific("recId", typeof(oAttachment), "moduleId,entityId", (int)pNums.Module.Notes + "," + noteAdd.recId.ToString(), "", "pal_", true)) { if (firstAttachment) { formBuilder.AppendLine("
"); firstAttachment = false; } string fileLocation = ""; if (att.typeId == (int)pNums.AttachmentType.Document) fileLocation = att.sourcePath + "/upload/" + att.folderName + "/file/" + att.fileName; else fileLocation = att.sourcePath + "/upload/" + att.folderName + "/image/" + att.fileName; string hyperlink = "  " + att.display + "
"; //System.Drawing.Icon icon = System.Drawing.Icon.ExtractAssociatedIcon(Server.MapPath("~/" + fileLocation)); //HtmlGenericControl div = new HtmlGenericControl(); //div.ID = "divTask" + att.recId; //div.InnerHtml = hyperlink; //divfTaskNotes.Controls.Add(div); formBuilder.Append("
" + hyperlink + "
"); } formBuilder.AppendLine("
"); //end of row //end of horizontal formBuilder.AppendLine("
"); formBuilder.AppendLine("
"); formBuilder.AppendLine("
"); formBuilder.AppendLine("
"); //end of body formBuilder.AppendLine("
"); //end toggle panel formBuilder.AppendLine("
"); //end of group } parentControl.InnerHtml = formBuilder.ToString(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private string GetNextTaskNumber(string prefix) { string taskNumber = ""; try { oTaskNumber tskNum = new oTaskNumber(); foreach (oTaskNumber tNum in xData.GetTypedByCriteriaSpecific("recId", typeof(oTaskNumber), "custCode,projCode,prefix", ddFilterCustomer.SelectedValue + "," + ddTaskProject.SelectedValue + "," + prefix, "prefix", "pal_", true)) { tskNum = tNum; break; } tskNum.prefix = prefix.ToUpper(); tskNum.lastNumberUsed += 1; tskNum.custCode = ddFilterCustomer.SelectedValue; tskNum.projCode = ddTaskProject.SelectedValue; taskNumber = prefix + "-" + tskNum.lastNumberUsed; if (tskNum.recId > 0) { xData.UpdateTyped("recId", tskNum.recId.ToString(), typeof(oTaskNumber), tskNum, "pal_", true); } else { tskNum.recId = xData.SaveTyped("recId", typeof(oTaskNumber), tskNum, "pal_", true); } return taskNumber; } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); return taskNumber; } } private void PopulateTaskForm(oTask task) { try { if (task == null) task = new oTask(); oUser usr = new oUser(); if (utils.verifySession("user")) { usr = (oUser)Session["user"]; } divfTaskAttachments.Controls.Clear(); divfTaskAttachments.InnerHtml = ""; divfTaskNotes.Controls.Clear(); divfTaskNotes.InnerHtml = ""; //category - default Scoping ddTaskCategory.ClearSelection(); if (task.taskCategoryId != 0 && ddTaskCategory.Items.FindByValue(task.taskCategoryId.ToString()) != null) ddTaskCategory.Items.FindByValue(task.taskCategoryId.ToString()).Selected = true; else if (ddTaskCategory.Items.FindByValue(((int)pNums.TaskCategory.Scoping).ToString()) != null) ddTaskCategory.Items.FindByValue(((int)pNums.TaskCategory.Scoping).ToString()).Selected = true; //type - default New Feature BindTaskType(); ddTaskType.ClearSelection(); if (task.taskTypeId != 0 && ddTaskType.Items.FindByValue(task.taskTypeId.ToString()) != null) ddTaskType.Items.FindByValue(task.taskTypeId.ToString()).Selected = true; else if (ddTaskType.Items.FindByValue(((int)pNums.TaskType.ScopingNewFeature).ToString()) != null) ddTaskType.Items.FindByValue(((int)pNums.TaskType.ScopingNewFeature).ToString()).Selected = true; //task number txtTaskNumber.Text = task.taskNumber; //project if (ddTaskProject.Items.FindByValue(task.projectCode) != null) ddTaskProject.SelectedValue = task.projectCode; //name txtTaskName.Text = task.name; //priority - default Major ddTaskPriority.ClearSelection(); if (task.taskPriorityId > 0 && ddTaskPriority.Items.FindByValue(task.taskPriorityId.ToString()) != null) ddTaskPriority.Items.FindByValue(task.taskPriorityId.ToString()).Selected = true; else if (ddTaskPriority.Items.FindByValue(((int)pNums.TaskPriority.Major).ToString()) != null) ddTaskPriority.Items.FindByValue(((int)pNums.TaskPriority.Major).ToString()).Selected = true; //created date if (task.createdDate.Year != 1900 && task.createdDate.Year != 1) txtTaskCreatedDate.Text = task.createdDate.ToString("dd/MM/yyyy"); else txtTaskCreatedDate.Text = System.DateTime.Now.ToString("dd/MM/yyyy"); //updated date if (task.updatedDate.Year != 1900 && task.updatedDate.Year != 1) txtTaskUpdatedDate.Text = task.updatedDate.ToString("dd/MM/yyyy"); else txtTaskUpdatedDate.Text = ""; //initiator - default current user ddTaskInitiator.ClearSelection(); if (task.initiatorUserId != 0 && ddTaskInitiator.Items.FindByValue(task.initiatorUserId.ToString()) != null) ddTaskInitiator.Items.FindByValue(task.initiatorUserId.ToString()).Selected = true; else if (ddTaskInitiator.Items.FindByValue(usr.recId.ToString()) != null) ddTaskInitiator.Items.FindByValue(usr.recId.ToString()).Selected = true; //assignee - default current user ddTaskAssignee.ClearSelection(); if (task.assigneeUserId != 0 && ddTaskAssignee.Items.FindByValue(task.assigneeUserId.ToString()) != null) ddTaskAssignee.Items.FindByValue(task.assigneeUserId.ToString()).Selected = true; else if (ddTaskAssignee.Items.FindByValue(usr.recId.ToString()) != null) ddTaskAssignee.Items.FindByValue(usr.recId.ToString()).Selected = true; //status - default to do ddTaskStatus.ClearSelection(); if (task.taskStatusId != 0 && ddTaskStatus.Items.FindByValue(task.taskStatusId.ToString()) != null) ddTaskStatus.Items.FindByValue(task.taskStatusId.ToString()).Selected = true; else if (ddTaskStatus.Items.FindByValue(((int)pNums.TaskStatus.ToDo).ToString()) != null) ddTaskStatus.Items.FindByValue(((int)pNums.TaskStatus.ToDo).ToString()).Selected = true; //due date if (task.dueDate.Year != 1900 && task.dueDate.Year != 1) txtTaskDueDate.Text = task.dueDate.ToString("dd/MM/yyyy"); else txtTaskDueDate.Text = ""; //description edfDescription.Content = task.description; //new task if (task.recId <= 0) { //canvas divfLogCanvas.Visible = false; //project ddTaskProject.Enabled = true; //dates divDates.Visible = false; //notes & files divfFiles.Visible = false; divfNotes.Visible = false; } //existing task else { //canvas if (handler.GetRoutedData("canvas-title") == "overlay") { divfLogCanvas.Visible = true; divfTaskSnapshot.Visible = false; } else { if (task.canvasId == 0 || task.taskSnapshotId == 0) { divfLogCanvas.Visible = true; divfTaskSnapshot.Visible = false; } else { divfLogCanvas.Visible = true; divfTaskSnapshot.Visible = true; } } //project ddTaskProject.Enabled = false; //project cannot be changed after task has been saved. //dates divDates.Visible = true; //notes & files divfFiles.Visible = true; divfNotes.Visible = true; BindAttachments(task.recId, divfTaskAttachments); BindNotes(task.recId, divfTaskNotes); } //CVH 2017-05-17 Disable fields - custom SBF Job Cards if (handler.ReturnSetup().code == "STUD-1") { ddTaskAssignee.Enabled = false; ddTaskPriority.Enabled = false; ddTaskProject.Enabled = false; } } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private void PopulateTaskView(oTask task) { try { //if (this.Parent.Page.ToString().ToLower().Contains("canvas_aspx")) if (handler.GetRoutedData("canvas-title") == "overlay") divvTaskSnapsnot.Visible = false; else if (task.taskSnapshotId == 0 || task.canvasId == 0) divvTaskSnapsnot.Visible = false; else divvTaskSnapsnot.Visible = true; divfTaskAttachments.Controls.Clear(); divfTaskAttachments.InnerHtml = ""; divfTaskNotes.Controls.Clear(); divfTaskNotes.InnerHtml = ""; divfFiles.Visible = true; divfNotes.Visible = true; if (ddTaskCategory.Items.FindByValue(task.taskCategoryId.ToString()) != null) lblvTaskCategory.Text = ddTaskCategory.Items.FindByValue(task.taskCategoryId.ToString()).Text; if (ddTaskType.Items.FindByValue(task.taskTypeId.ToString()) != null) lblvTaskType.Text = ddTaskType.Items.FindByValue(task.taskTypeId.ToString()).Text; lblvTaskName.Text = task.name; if (ddTaskProject.Items.FindByValue(task.projectCode.ToString()) != null) lblvTaskProject.Text = ddTaskProject.Items.FindByValue(task.projectCode.ToString()).Text; lblvTaskCreatedDate.Text = task.createdDate.ToString("dd/MM/yyyy"); if (task.updatedDate != null && task.updatedDate.Year != 1900) lblvTaskUpdatedDate.Text = task.updatedDate.ToString("dd/MM/yyyy"); if (ddTaskInitiator.Items.FindByValue(task.initiatorUserId.ToString()) != null) lblvTaskInitiator.Text = ddTaskInitiator.Items.FindByValue(task.initiatorUserId.ToString()).Text; if (ddTaskAssignee.Items.FindByValue(task.assigneeUserId.ToString()) != null) lblvTaskAssignee.Text = ddTaskAssignee.Items.FindByValue(task.assigneeUserId.ToString()).Text; if (ddTaskStatus.Items.FindByValue(task.taskStatusId.ToString()) != null) lblvTaskStatus.Text = ddTaskStatus.Items.FindByValue(task.taskStatusId.ToString()).Text; if (task.dueDate != null && task.dueDate.Year != 1900 && task.dueDate.Year != 1) lblvTaskDueDate.Text = task.dueDate.ToString("dd/MM/yyyy"); else lblvTaskDueDate.Text = ""; lblvTaskDescription.Text = task.description; lblvTaskNumber.Text = task.taskNumber; if (ddTaskPriority.Items.FindByValue(task.taskPriorityId.ToString()) != null) lblvTaskPriority.Text = ddTaskPriority.Items.FindByValue(task.taskPriorityId.ToString()).Text; BindAttachments(task.recId, divvTaskAttachments); BindNotes(task.recId, divvTaskNotes); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private void SaveFormValues(out oTask task, out oTaskHistory history, oUser usr) { task = new oTask(); history = new oTaskHistory(); try { task = new oTask(); task.customerCode = ddFilterCustomer.SelectedValue; task.assigneeUserId = int.Parse(ddTaskAssignee.SelectedItem.Value); task.canvasId = this.CanvasId; task.createdDate = utils.formatStringToDate(txtTaskCreatedDate.Text); task.description = edfDescription.Content; if (txtTaskDueDate.Text != "") task.dueDate = utils.formatStringToDate(txtTaskDueDate.Text); task.initiatorUserId = int.Parse(ddTaskInitiator.SelectedItem.Value); task.name = txtTaskName.Text; task.projectCode = ddTaskProject.SelectedItem.Value; task.taskCategoryId = (int)pNums.TaskCategory.Jobcard; task.taskSnapshotId = this.SnapshotId; task.taskSnapshotPosX = this.SnapshotX; task.taskSnapshotPosY = this.SnapshotY; task.taskStatusId = int.Parse(ddTaskStatus.SelectedItem.Value); task.taskTypeId = int.Parse(ddTaskType.SelectedItem.Value); if (this.Task != null && this.Task.recId > 0) task.updatedDate = System.DateTime.Now; task.taskPriorityId = int.Parse(ddTaskPriority.SelectedItem.Value); if (this.Task != null && this.Task.taskNumber != "") { //task number cannot be changed. task.taskNumber = this.Task.taskNumber; } else { //GR TO DO: //Add customer code and project code and task number //get next task number for project prefix string prefix = string.Empty; if (Convert.ToInt32(ddTaskCategory.SelectedValue) == pNums.TaskCategory.Idea.GetHashCode()) prefix = pNums.TaskCategory.Idea.ToString(); else prefix = ddTaskProject.SelectedItem.Text.Substring(0, 3); task.taskNumber = GetNextTaskNumber(prefix); } history = new oTaskHistory(); //if item is being updated, get current task as history, otherwise use new values as history add record if (this.Task == null || this.Task.recId <= 0) { history.assigneeUserId = task.assigneeUserId; history.canvasId = task.canvasId; history.changeDate = System.DateTime.Now; history.changeNum = 0; //new item history.changeType = "ADD"; history.createdDate = task.createdDate; history.description = task.description; history.dueDate = task.dueDate; history.initiatorUserId = task.initiatorUserId; history.name = task.name; history.customerCode = task.customerCode; history.projectCode = task.projectCode; history.taskCategoryId = task.taskCategoryId; history.taskSnapshotId = task.taskSnapshotId; history.taskSnapshotPosX = task.taskSnapshotPosX; history.taskSnapshotPosY = task.taskSnapshotPosY; history.taskStatusId = task.taskStatusId; history.taskTypeId = task.taskTypeId; history.updatedDate = task.updatedDate; history.userId = usr.recId; history.taskPriorityId = task.taskPriorityId; history.taskNumber = task.taskNumber; } else { history.assigneeUserId = this.Task.assigneeUserId; history.canvasId = this.Task.canvasId; history.changeDate = System.DateTime.Now; int changeNum = 1; //will be at least 1, add is 0 ArrayList maxChangeNumList = xData.GetTypedByCriteriaSpecific("recId", typeof(oTaskHistory), "taskId", this.Task.recId.ToString(), "changeNum DESC", "pal_", true); if (maxChangeNumList != null && maxChangeNumList.Count > 0) { oTaskHistory max = (oTaskHistory)maxChangeNumList[0]; changeNum = max.changeNum + 1; } history.changeNum = changeNum; history.changeType = "CHANGE"; history.createdDate = this.Task.createdDate; history.description = this.Task.description; history.dueDate = this.Task.dueDate; history.initiatorUserId = this.Task.initiatorUserId; history.name = this.Task.name; history.customerCode = this.Task.customerCode; history.projectCode = this.Task.projectCode; history.taskCategoryId = this.Task.taskCategoryId; history.taskId = this.Task.recId; history.taskSnapshotId = this.Task.taskSnapshotId; history.taskSnapshotPosX = this.Task.taskSnapshotPosX; history.taskSnapshotPosY = this.Task.taskSnapshotPosY; history.taskStatusId = this.Task.taskStatusId; history.taskTypeId = this.Task.taskTypeId; history.updatedDate = this.Task.updatedDate; history.userId = usr.recId; history.taskPriorityId = this.Task.taskPriorityId; history.taskNumber = this.Task.taskNumber; } } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private void TogglePanels(string panel) { switch (panel) { case "Grid": pnlTaskGrid.Visible = true; pnlTaskForm.Visible = false; pnlTaskView.Visible = false; //pnlTaskAttachments.Visible = false; //pnlTaskNotes.Visible = false; pnlTaskHistory.Visible = false; break; case "Form": pnlTaskGrid.Visible = false; pnlTaskForm.Visible = true; pnlTaskView.Visible = false; //pnlTaskAttachments.Visible = false; //pnlTaskNotes.Visible = false; pnlTaskHistory.Visible = false; break; case "View": pnlTaskView.Visible = true; pnlTaskGrid.Visible = false; pnlTaskForm.Visible = false; //pnlTaskAttachments.Visible = false; //pnlTaskNotes.Visible = false; pnlTaskHistory.Visible = false; break; //case "Attachments": // pnlTaskView.Visible = false; // pnlTaskGrid.Visible = false; // pnlTaskForm.Visible = false; // pnlTaskAttachments.Visible = true; // pnlTaskNotes.Visible = false; // pnlTaskHistory.Visible = false; // break; //case "Notes": // pnlTaskView.Visible = false; // pnlTaskGrid.Visible = false; // pnlTaskForm.Visible = false; // pnlTaskAttachments.Visible = false; // pnlTaskNotes.Visible = true; // pnlTaskHistory.Visible = false; // break; case "History": pnlTaskView.Visible = false; pnlTaskGrid.Visible = false; pnlTaskForm.Visible = false; //pnlTaskAttachments.Visible = false; //pnlTaskNotes.Visible = false; pnlTaskHistory.Visible = true; break; } } private void LoadPage() { try { string panel = this.ActivePanel; if (panel == "Form") PopulateTaskForm(this.Task); else if (panel == "View") PopulateTaskView(this.Task); else if (panel == "Grid") BindGrid(); else if (panel == "History") BindHistoryGrid(this.Task); TogglePanels(panel); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } private void SendEmail(oTask task) { try { oEmail email = new oEmail(); string Subject = String.Empty; string body = String.Empty; foreach (oTemplate taskTemplate in xData.GetTypedByCriteriaSpecific("recId", typeof(oTemplate), "templateTypeId", pNums.TemplateType.OutboundResponse.GetHashCode().ToString())) { if (taskTemplate.templateName.ToLower().Contains("task")) { body = taskTemplate.templateContent; Subject = taskTemplate.templateName; break; } } string project = ""; oUser initiator = new oUser(); oUser assignee = new oUser(); string status = ""; if (ddTaskProject.Items.FindByValue(task.projectCode.ToString()) != null) project = ddTaskProject.Items.FindByValue(task.projectCode.ToString()).Text; foreach (oUser assigUsr in xData.GetTypedByCriteriaSpecific("recId", typeof(oUser), "recId", task.assigneeUserId.ToString(), "surname", "pal_",true)) { assignee = assigUsr; break; } foreach (oUser initUsr in xData.GetTypedByCriteriaSpecific("recId", typeof(oUser), "recId", task.initiatorUserId.ToString(), "surname", "pal_",true)) { initiator = initUsr; break; } if (ddTaskStatus.Items.FindByValue(task.taskStatusId.ToString()) != null) status = ddTaskStatus.Items.FindByValue(task.taskStatusId.ToString()).Text; //merge internal body with values body = body.Replace("src=\"/images", "src=\"" + ConfigurationManager.AppSettings["WebAddy"] + "/images"); body = body.Replace("{WebAddress}", ConfigurationManager.AppSettings["WebAddy"]); body = body.Replace("{TaskNumber}", task.taskNumber); body = body.Replace("{Project}", project); body = body.Replace("{Subject}", task.name); body = body.Replace("{Initiator}", initiator.name); body = body.Replace("{Assignee}", assignee.name); body = body.Replace("{Status}", status); string toAddress = initiator.email; if (toAddress == "") toAddress = assignee.email; else if (assignee.email != "") toAddress += ";" + assignee.email; if (toAddress == "") throw new Exception("To address cannot be blank."); email.fromAddress = ConfigurationManager.AppSettings["from"]; email.toAddress = toAddress; email.Body = body; email.Subject = ConfigurationManager.AppSettings["subject"].Replace("{content}", Subject); communication.SendAnEmail(email); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); } } private void LoadTaskOverlayPopup() { if (this.Task == null) throw new Exception("Current task could not be determined."); ArrayList list = xData.GetTypedByCriteriaSpecific("recId", typeof(oTaskSnapshot), "recId", this.Task.taskSnapshotId.ToString(), "", "pal_", true); if (list == null || list.Count <= 0) throw new Exception("Task snapshot could not be determined."); oTaskSnapshot snap = (oTaskSnapshot)list[0]; if (snap.sourcePath != String.Empty)//get image from live stream { imgOverlay.ImageUrl = snap.sourcePath + "/upload/tasks/" + snap.fileName; WebClient wc = new WebClient(); byte[] bytes = wc.DownloadData(snap.sourcePath + "/upload/tasks/" + snap.fileName); MemoryStream ms = new MemoryStream(bytes); using (System.Drawing.Image img = System.Drawing.Image.FromStream(ms)) { divOverlayColour.Style.Add("Height", (img.Height + 20) + "px"); divOverlayColour.Style.Add("Width", (img.Width + 20) + "px"); divOverlayWrapper.Style.Add("Height", (img.Height + 20) + "px"); divOverlayWrapper.Style.Add("Width", (img.Width + 20) + "px"); divOverlayImg.Style.Add("Height", img.Height + "px"); divOverlayImg.Style.Add("Width", img.Width + "px"); imgOverlay.Height = img.Height; imgOverlay.Width = img.Width; } ms.Close(); } else { imgOverlay.ImageUrl = taskImagePath + snap.fileName; using (System.Drawing.Image img = System.Drawing.Image.FromFile(System.Web.Hosting.HostingEnvironment.MapPath(taskImagePath) + snap.fileName)) { divOverlayColour.Style.Add("Height", (img.Height + 20) + "px"); divOverlayColour.Style.Add("Width", (img.Width + 20) + "px"); divOverlayWrapper.Style.Add("Height", (img.Height + 20) + "px"); divOverlayWrapper.Style.Add("Width", (img.Width + 20) + "px"); divOverlayImg.Style.Add("Height", img.Height + "px"); divOverlayImg.Style.Add("Width", img.Width + "px"); imgOverlay.Height = img.Height; imgOverlay.Width = img.Width; } } //load image //load tasks int taskSeq = 0; foreach (oTask task in xData.GetTypedByCriteriaSpecific("recId", typeof(oTask), "canvasId,taskSnapshotId", snap.canvasId + "," + snap.recId, "", "pal_", true)) { int adjust = taskSeq * 85; //width of the div point taskSeq++; //get task assignee name string assignee = ""; if (ddTaskAssignee.Items.FindByValue(task.assigneeUserId.ToString()) != null) assignee = ddTaskAssignee.Items.FindByValue(task.assigneeUserId.ToString()).Text; //get task status name string statusDesc = ""; if (ddTaskStatus.Items.FindByValue(task.taskStatusId.ToString()) != null) statusDesc = ddTaskStatus.Items.FindByValue(task.taskStatusId.ToString()).Text; //divs are moving about 15 points for each one added (think to do with div position relative). int left = task.taskSnapshotPosX - 35 - adjust; int top = task.taskSnapshotPosY - 5; HtmlGenericControl divPoint = new HtmlGenericControl(); divPoint.ID = "divTask" + task.recId; if (task.recId == this.Task.recId) divPoint.Attributes.Add("class", "taskPoint task-tooltip"); else divPoint.Attributes.Add("class", "taskPointGray task-tooltip"); divPoint.Attributes.Add("style", "left:" + left + "px;top:" + top + "px"); //divPoint.Attributes.Add("title", task.name); divPoint.Attributes.Add("data-toggle", "tooltip"); divPoint.Attributes.Add("data-html", "true"); divPoint.Attributes.Add("data-container", "#" + divOverlayWrapper.ClientID); divPoint.Attributes.Add("data-placement", "auto top"); divPoint.Attributes.Add("title", "Subject: " + task.name + "
Assignee: " + assignee + "
Status: " + statusDesc); divPoint.InnerHtml = task.taskNumber == "" ? "NONE" : task.taskNumber; divOverlayWrapper.Controls.Add(divPoint); } ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "myOverlayModal", "$('#modOverlay').modal();", true); } private void LoadServiceDesk() { lblTaskResult.Text = ""; lblTaskResult.Visible = false; BindCustomers(); BindTaskCategory(); BindTaskType(); BindFilterTaskType(); BindProject(); BindUser(); BindTaskStatus(); BindTaskPriority(); ddTaskProject.Visible = false; ddTaskType.Visible = false; ddTaskCategory.Visible = false; ddTaskStatus.Visible = false; ddTaskAssignee.Visible = false; ddTaskPriority.Visible = false; txtTaskDueDate.Visible = false; lblvTaskDueDate.Visible = false; } public void RemoveEditorButtons() { edfDescription.EnsureToolsFileLoaded(); string buttonsToRemove = "Print,SelectAll,Cut,Copy,Paste,ImageManager,DocumentManager,FlashManager,MediaManager,TemplateManager,LinkManager,Unlink,Superscript,Subscript,InsertGroupbox,InsertHorizontalRule,InsertDate,InsertTime,FormatCodeBlock,AbsolutePosition,InsertFormElement,InsertSnippet,ImageMapDialog,InsertCustomLink,ConvertToLower,ConvertToUpper,ModuleManager,ToggleScreenMode,AboutDialog"; string[] buttons = buttonsToRemove.Split(char.Parse(",")); foreach (string name in buttons) { foreach (Telerik.Web.UI.EditorToolGroup group in edfDescription.Tools) { Telerik.Web.UI.EditorTool tool = group.FindTool(name); if (tool != null) { group.Tools.Remove(tool); } } } } #endregion #region events /// /// Page Load Event /// /// /// protected void Page_Load(object sender, EventArgs e) { try { if (!utils.verifySession("user")) { Response.Redirect("/home", false); } else { string panel = this.ActivePanel; if (!IsPostBack) { RemoveEditorButtons(); lblTaskResult.Text = ""; lblTaskResult.Visible = false; BindCustomers(); BindTaskCategory(); BindTaskType(); BindFilterTaskType(); BindProject(); BindUser(); BindTaskStatus(); BindTaskPriority(); if (utils.verifySession("SaveSurfaceActionItemId")) { int itemId = int.Parse(Session["SaveSurfaceActionItemId"].ToString()); this.Task = xSurfaceCustomAction.SetSurfaceItemJobCard(itemId); this.ActivePanel = "Form"; panel = this.ActivePanel; utils.disposeSession("SaveSurfaceActionItemId"); } if (panel == "Form") PopulateTaskForm(this.Task); else if (panel == "View") PopulateTaskView(this.Task); else if (panel == "Grid") BindGrid(); if (utils.verifySession("user")) { oUser admin = (oUser)Session["user"]; if (admin.isSetup) lnkProjects.Visible = true; else lnkProjects.Visible = false; } else lnkProjects.Visible = false; } //LoadPage(); if (ServiceDesk) { LoadServiceDesk(); } // Service Desk - Dirk Strauss - 11 July 2016 - (Comment: Added logic to bind the controls from the Service Desk Entry) TogglePanels(panel); } } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void lnkProjects_Click(object sender, EventArgs e) { try { Response.Redirect("Admin_Projects.aspx", false); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void ddTaskCategory_SelectedIndexChanged(object sender, EventArgs e) { if (Convert.ToInt32(ddTaskCategory.SelectedValue) == pNums.TaskCategory.Idea.GetHashCode()) { ddTaskStatus.ClearSelection(); if (ddTaskStatus.Items.FindByValue(((int)pNums.TaskStatus.InReview).ToString()) != null) ddTaskStatus.Items.FindByValue(((int)pNums.TaskStatus.InReview).ToString()).Selected = true; ddTaskPriority.ClearSelection(); if (ddTaskPriority.Items.FindByValue(((int)pNums.TaskPriority.Idea).ToString()) != null) ddTaskPriority.Items.FindByValue(((int)pNums.TaskPriority.Idea).ToString()).Selected = true; ddTaskAssignee.Enabled = false; txtTaskDueDate.Enabled = false; } BindTaskType(); } protected void btnSaveTask_Click(object sender, EventArgs e) { try { oUser usr = new oUser(); if (utils.verifySession("user")) { usr = (oUser)Session["user"]; } else { ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "userAlert", "alert('No login detected. Operation aborted.');", true); return; } oTask task = null; oTaskHistory history = null; SaveFormValues(out task, out history, usr); if (this.Task == null || this.Task.recId <= 0) { task.recId = xData.SaveTyped("recId", typeof(oTask), task, "pal_", true); history.taskId = task.recId; history.recId = xData.SaveTyped("recId", typeof(oTaskHistory), history, "pal_", true); } else { task.recId = this.Task.recId; xData.UpdateTyped("recId", task.recId.ToString(), typeof(oTask), task, "pal_", true); history.recId = xData.SaveTyped("recId", typeof(oTaskHistory), history, "pal_", true); } txtTaskNumber.Text = task.taskNumber; lblTaskResult.Text = "The task has been saved."; lblTaskResult.Visible = true; this.Task = task; //btnAttachments.Visible = true; divfTaskAttachments.Controls.Clear(); divfTaskAttachments.InnerHtml = ""; BindAttachments(task.recId, divfTaskAttachments); divfFiles.Visible = true; upTask.Update(); SendEmail(task); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } //protected void btnAttachments_Click(object sender, EventArgs e) //{ // try // { // if (this.Task == null) // throw new Exception("Current task could not be determined."); // //get last history item to link attachments to // ArrayList list = xData.GetTypedByCriteriaSpecific("recId", typeof(oTaskHistory), "taskId", this.Task.recId.ToString(), "changeNum DESC"); // if (list == null || list.Count <= 0) // throw new Exception("No history records have been logged for task " + this.Task.recId + "."); // int itemId = ((oTaskHistory)list[0]).recId; // Session["moduleId"] = pNums.Module.Task.GetHashCode(); // Session["entityId"] = itemId; // dynamic attachments = this.FindControl("attachments"); // attachments.ReloadControl(); // this.ActivePanel = "Attachments"; // TogglePanels("Attachments"); // } // catch (Exception ex) // { // exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); // Response.Redirect("/error", false); // } //} //protected void btnNotes_Click(object sender, EventArgs e) //{ // try // { // if (this.Task == null) // throw new Exception("Current task could not be determined."); // //get last history item to link attachments to // ArrayList list = xData.GetTypedByCriteriaSpecific("recId", typeof(oTaskHistory), "taskId", this.Task.recId.ToString(), "changeNum DESC"); // if (list == null || list.Count <= 0) // throw new Exception("No history records have been logged for task " + this.Task.recId + "."); // int itemId = ((oTaskHistory)list[0]).recId; // Session["noteModuleId"] = pNums.Module.Task.GetHashCode(); // Session["noteEntityId"] = itemId; // dynamic notes = this.FindControl("notes"); // notes.ReloadControl(); // this.ActivePanel = "Notes"; // TogglePanels("Notes"); // } // catch (Exception ex) // { // exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); // Response.Redirect("/error", false); // } //} protected void btnCancelTask_Click(object sender, EventArgs e) { //if (this.Parent.Page.ToString().ToLower().Contains("canvas_aspx")) if (handler.GetRoutedData("canvas-title") == "overlay") { Session["overlayCanvasId"] = this.CanvasId; if (this.Task == null || this.Task.taskSnapshotId == 0 || this.Task.recId <= 0) Session["newTaskReload"] = this.SnapshotId; else Session["newTaskReload"] = this.Task.taskSnapshotId.ToString(); Response.Redirect("/pages/overlay", false); } else { lblTaskResult.Text = ""; lblTaskResult.Visible = false; this.ActivePanel = "Grid"; LoadPage(); } } protected void btnEditTaskView_Click(object sender, EventArgs e) { try { lblTaskResult.Text = ""; lblTaskResult.Visible = false; this.ActivePanel = "Form"; LoadPage(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void btnCloseTaskView_Click(object sender, EventArgs e) { //if (this.Parent.Page.ToString().ToLower().Contains("canvas_aspx")) if (handler.GetRoutedData("canvas-title") == "overlay") { Session["overlayCanvasId"] = this.CanvasId; if (this.Task == null || this.Task.taskSnapshotId == 0 || this.Task.recId <= 0) Session["newTaskReload"] = this.SnapshotId; else Session["newTaskReload"] = this.Task.taskSnapshotId.ToString(); Response.Redirect("/pages/overlay", false); } else { lblTaskResult.Text = ""; lblTaskResult.Visible = false; this.ActivePanel = "Grid"; LoadPage(); } } //protected void btnCloseAttachments_Click(object sender, EventArgs e) //{ // try // { // this.ActivePanel = "View"; // LoadPage(); // } // catch (Exception ex) // { // exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); // Response.Redirect("/error", false); // } //} //protected void btnCloseNotes_Click(object sender, EventArgs e) //{ // try // { // this.ActivePanel = "View"; // LoadPage(); // } // catch (Exception ex) // { // exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); // Response.Redirect("/error", false); // } //} protected void lnkView_Click(object sender, EventArgs e) { try { if (sender.GetType() == typeof(LinkButton)) { LinkButton lnkButton = (LinkButton)sender; int taskId = int.Parse(((LinkButton)sender).CommandArgument); ArrayList list = xData.GetTypedByCriteriaSpecific("recId", typeof(oTask), "recId", taskId.ToString(), "", "pal_", true); oTask task = (oTask)list[0]; this.Task = task; this.CanvasId = task.canvasId; this.SnapshotId = task.taskSnapshotId; this.SnapshotX = task.taskSnapshotPosX; this.SnapshotY = task.taskSnapshotPosY; this.ActivePanel = "View"; LoadPage(); } } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void btnNew_Click(object sender, EventArgs e) { try { this.Task = null; this.CanvasId = 0; this.SnapshotId = 0; this.SnapshotX = 0; this.SnapshotY = 0; this.ActivePanel = "Form"; LoadPage(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void btnTaskHistoryBack_Click(object sender, EventArgs e) { try { this.ActivePanel = "View"; LoadPage(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void btnTaskLog_Click(object sender, EventArgs e) { try { this.ActivePanel = "History"; LoadPage(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void ddFilterAssignee_SelectedIndexChanged(object sender, EventArgs e) { try { BindGrid(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void btnfAddFile_Click(object sender, EventArgs e) { if (handler.GetRoutedData("canvas-title") == "overlay") ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "myfFileModal", "$('#modAddFile').modal(); ResetTaskModalScrollPosition(); ", true); else ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "myfFileModal", "$('#modAddFile').modal(); ", true); } protected void btnCloseFileModal_Click(object sender, EventArgs e) { if (this.Task == null) { Response.Redirect("/home", false); return; //throw new Exception("Current task could not be determined."); } BindAttachments(this.Task.recId, this.ActivePanel == "View" ? divvTaskAttachments : divfTaskAttachments); BindNotes(this.Task.recId, this.ActivePanel == "View" ? divvTaskNotes : divfTaskNotes); if (handler.GetRoutedData("canvas-title") == "overlay") ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "myfFileModalClose", "$('#modAddFile').modal('hide');", true); else ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "myfFileModalClose", "$('.modal-backdrop').remove(); $('body').removeClass('modal-open');", true); //ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "myfFileModalClose", "$('#modAddFile').modal('hide'); $('.modal-backdrop').remove(); $('body').removeClass('modal-open');", true); if (ViewState["AttachmentAdded"] != null && ViewState["AttachmentAdded"].ToString() == "SendMail") { SendEmail(this.Task); ViewState["AttachmentAdded"] = null; } } protected void radUpload_FileUploaded(object sender, Telerik.Web.UI.FileUploadedEventArgs e) { oAttachment Attachment = new oAttachment(); try { oUser usr = new oUser(); if (utils.verifySession("user")) usr = (oUser)Session["user"]; else { ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "userAlert", "alert('No user login detected. Operation aborted.');", true); return; } if (this.Task == null) { Response.Redirect("/home", false); return; //throw new Exception("Current task could not be determined."); } //get last history item to link attachments to ArrayList list = xData.GetTypedByCriteriaSpecific("recId", typeof(oTaskHistory), "taskId", this.Task.recId.ToString(), "changeNum DESC", "pal_", true); if (list == null || list.Count <= 0) throw new Exception("No history records have been logged for task " + this.Task.recId + "."); int itemId = ((oTaskHistory)list[0]).recId; Attachment.entityId = itemId; Attachment.moduleId = (int)pNums.Module.Task; Attachment.typeId = e.File.ContentType.StartsWith("image") ? (int)pNums.AttachmentType.Image : (int)pNums.AttachmentType.Document; string taskFolderName = "task/"; taskFolderName += this.Task.recId.ToString(); Attachment.folderName = taskFolderName; /* CVH 2016-04-15 Add date and user */ int userId = usr.recId; if (Attachment.recId > 0) { Attachment.userIdUpdated = userId; Attachment.dateUpdated = System.DateTime.Now; } else { Attachment.userIdSaved = userId; Attachment.dateSaved = System.DateTime.Now; } Attachment.display = e.File.FileName.Remove(e.File.FileName.LastIndexOf(".")); Attachment.fileName = Attachment.entityId + "_" + utils.RandomString(9, true) + e.File.FileName.Substring(e.File.FileName.LastIndexOf(".")); string imagePath = Server.MapPath("~/upload/" + Attachment.folderName + "/image/"); string thumbPath = Server.MapPath("~/upload/" + Attachment.folderName + "/thumb/"); string tempPath = Server.MapPath("~/upload/" + Attachment.folderName + "/temp/"); string filePath = Server.MapPath("~/upload/" + Attachment.folderName + "/file/"); utils.validateFolder(imagePath); utils.validateFolder(thumbPath); utils.validateFolder(tempPath); utils.validateFolder(filePath); Attachment.sourcePath = ConfigurationManager.AppSettings["WebAddy"]; if (Attachment.typeId == pNums.AttachmentType.Image.GetHashCode()) { //upload file e.File.SaveAs(tempPath + Attachment.fileName); //resize and crop for thumbnail utils.ResizeCropImagePrecise(tempPath + Attachment.fileName, thumbPath, Attachment.fileName, 383, 264, false); //resize image for a larger size utils.ResizeImage(tempPath + Attachment.fileName, imagePath, Attachment.fileName, 400, true, true); } else { //upload file e.File.SaveAs(filePath + Attachment.fileName); } if (Attachment.recId > 0) { xData.UpdateTyped("recId", Attachment.recId.ToString(), typeof(oAttachment), Attachment, "pal_", true); utils.disposeSession("Attachment"); } else { Attachment.recId = xData.SaveTyped("recId", typeof(oAttachment), Attachment, "pal_", true); if (Attachment.recId > 0) { } } //if attachment has been added, set ViewState so that email can be sent when close modal ViewState["AttachmentAdded"] = "SendMail"; } catch (Exception ex) { exception.HandleException("Attachments:", MethodBase.GetCurrentMethod().Name, ex, Session["attachment"]); Response.Redirect("/error", false); } } protected void btnfAddNotes_Click(object sender, EventArgs e) { lblNoteTypeCustom.Text = string.Empty; if (pnlTaskView.Visible)//viewmode { foreach (oNoteType noteType in xData.GetTypedByCriteriaSpecific("recId", typeof(oNoteType), "noteType", lblvTaskCategory.Text)) { lblNoteTypeCustom.Text = noteType.customItem; } } if (pnlTaskForm.Visible)//editmode { foreach (oNoteType noteType in xData.GetTypedByCriteriaSpecific("recId", typeof(oNoteType), "noteType", ddTaskCategory.SelectedItem.Text)) { lblNoteTypeCustom.Text = noteType.customItem; } } if (lblNoteTypeCustom.Text == "Viability") { divNoteCustom.Visible = true; ddNoteCustom.Items.Clear(); ddNoteCustom.Items.Add(new ListItem("Excellent")); ddNoteCustom.Items.Add(new ListItem("High")); ddNoteCustom.Items.Add(new ListItem("Medium")); ddNoteCustom.Items.Add(new ListItem("Low")); } else divNoteCustom.Visible = false; radNewNote.Content = ""; if (handler.GetRoutedData("canvas-title") == "overlay") ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "myfNoteModal", "$('#modAddNote').modal(); ResetTaskModalScrollPosition(); ", true); else ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "myfNoteModal", "$('#modAddNote').modal();", true); } protected void radUploadNotes_FileUploaded(object sender, Telerik.Web.UI.FileUploadedEventArgs e) { oAttachment Attachment = new oAttachment(); try { if (this.Task == null) { Response.Redirect("/home", false); return; //throw new Exception("Current task could not be determined."); } oUser user = new oUser(); if (utils.verifySession("user")) user = (oUser)Session["user"]; else { ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "userAlert", "alert('No user login detected. Operation aborted.');", true); return; } oNote note = new oNote(); if (ViewState["newNote"] == null) { //get last history item to link attachments to ArrayList list = xData.GetTypedByCriteriaSpecific("recId", typeof(oTaskHistory), "taskId", this.Task.recId.ToString(), "changeNum DESC", "pal_", true); if (list == null || list.Count <= 0) throw new Exception("No history records have been logged for task " + this.Task.recId + "."); int itemId = ((oTaskHistory)list[0]).recId; //save new note to link attachment to note.caption = radNewNote.Content; note.dateSaved = System.DateTime.Now; note.entityId = itemId; note.isActive = true; note.moduleId = (int)pNums.Module.Task; note.title = user.name + " (" + utils.fixDate(System.DateTime.Now) + ")"; if (lblvTaskCategory.Text=="Ideas") note.typeId = (int)pNums.NoteType.Ideas; else note.typeId = (int)pNums.NoteType.Task; note.userIdSaved = user.recId; if(ddNoteCustom.SelectedItem!=null) note.customValue = ddNoteCustom.SelectedItem.Text; note.recId = xData.SaveTyped("recId", typeof(oNote), note, "pal_", true); ViewState["newNote"] = note; } else { note = (oNote)ViewState["newNote"]; } Attachment.entityId = note.recId; Attachment.moduleId = (int)pNums.Module.Notes; Attachment.typeId = e.File.ContentType.StartsWith("image") ? (int)pNums.AttachmentType.Image : (int)pNums.AttachmentType.Document; string taskFolderName = "note/"; taskFolderName += this.Task.recId.ToString(); Attachment.folderName = taskFolderName; /* CVH 2016-04-15 Add date and user */ int userId = user.recId; if (Attachment.recId > 0) { Attachment.userIdUpdated = userId; Attachment.dateUpdated = System.DateTime.Now; } else { Attachment.userIdSaved = userId; Attachment.dateSaved = System.DateTime.Now; } Attachment.display = e.File.FileName.Remove(e.File.FileName.LastIndexOf(".")); Attachment.fileName = Attachment.entityId + "_" + utils.RandomString(9, true) + e.File.FileName.Substring(e.File.FileName.LastIndexOf(".")); string imagePath = Server.MapPath("~/upload/" + Attachment.folderName + "/image/"); string thumbPath = Server.MapPath("~/upload/" + Attachment.folderName + "/thumb/"); string tempPath = Server.MapPath("~/upload/" + Attachment.folderName + "/temp/"); string filePath = Server.MapPath("~/upload/" + Attachment.folderName + "/file/"); utils.validateFolder(imagePath); utils.validateFolder(thumbPath); utils.validateFolder(tempPath); utils.validateFolder(filePath); Attachment.sourcePath = ConfigurationManager.AppSettings["WebAddy"]; if (Attachment.typeId == pNums.AttachmentType.Image.GetHashCode()) { //upload file e.File.SaveAs(tempPath + Attachment.fileName); //resize and crop for thumbnail utils.ResizeCropImagePrecise(tempPath + Attachment.fileName, thumbPath, Attachment.fileName, 383, 264, false); //resize image for a larger size utils.ResizeImage(tempPath + Attachment.fileName, imagePath, Attachment.fileName, 400, true, true); } else { //upload file e.File.SaveAs(filePath + Attachment.fileName); } if (Attachment.recId > 0) { xData.UpdateTyped("recId", Attachment.recId.ToString(), typeof(oAttachment), Attachment, "pal_", true); utils.disposeSession("Attachment"); } else { Attachment.recId = xData.SaveTyped("recId", typeof(oAttachment), Attachment, "pal_", true); if (Attachment.recId > 0) { } } } catch (Exception ex) { exception.HandleException("Attachments:", MethodBase.GetCurrentMethod().Name, ex, Session["attachment"]); Response.Redirect("/error", false); } } protected void btnSaveNote_Click(object sender, EventArgs e) { try { oUser user = new oUser(); if (this.Task == null) { Response.Redirect("/home", false); return; //throw new Exception("Current task could not be determined."); } if (utils.verifySession("user")) { user = (oUser)Session["user"]; } else { Response.Redirect("/home", false); return; //throw new Exception("Logged on user could not be determined."); } //if viewstate is null, no attachment has been linked to this note, and the note hasn't been saved yet, save it now if (ViewState["newNote"] == null) { //get last history item to link attachments to ArrayList list = xData.GetTypedByCriteriaSpecific("recId", typeof(oTaskHistory), "taskId", this.Task.recId.ToString(), "changeNum DESC", "pal_", true); if (list == null || list.Count <= 0) throw new Exception("No history records have been logged for task " + this.Task.recId + "."); int itemId = ((oTaskHistory)list[0]).recId; oNote note = new oNote(); note.caption = radNewNote.Content; note.dateSaved = System.DateTime.Now; note.entityId = itemId; note.isActive = true; note.moduleId = (int)pNums.Module.Task; note.title = user.name + " (" + utils.fixDate(System.DateTime.Now) + ")"; if (lblvTaskCategory.Text == "Ideas") note.typeId = (int)pNums.NoteType.Ideas; else note.typeId = (int)pNums.NoteType.Task; note.userIdSaved = user.recId; if(ddNoteCustom.SelectedItem!=null) note.customValue = ddNoteCustom.SelectedItem.Text; note.recId = xData.SaveTyped("recId", typeof(oNote), note, "pal_", true); } else ViewState["newNote"] = null; BindAttachments(this.Task.recId, this.ActivePanel == "View" ? divvTaskAttachments : divfTaskAttachments); BindNotes(this.Task.recId, this.ActivePanel == "View" ? divvTaskNotes : divfTaskNotes); SendEmail(this.Task); if (handler.GetRoutedData("canvas-title") != "overlay") ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "myfNoteModalSave", "$('.modal-backdrop').remove(); $('body').removeClass('modal-open');", true); } catch (Exception ex) { exception.HandleException("Attachments:", MethodBase.GetCurrentMethod().Name, ex, Session["attachment"]); Response.Redirect("/error", false); } } protected void btnCancelNote_Click(object sender, EventArgs e) { if (this.Task == null) { Response.Redirect("/home", false); return; //throw new Exception("Current task could not be determined."); } BindAttachments(this.Task.recId, this.ActivePanel == "View" ? divvTaskAttachments : divfTaskAttachments); BindNotes(this.Task.recId, this.ActivePanel == "View" ? divvTaskNotes : divfTaskNotes); if (handler.GetRoutedData("canvas-title") != "overlay") ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "myfNoteModalClose", "$('.modal-backdrop').remove();$('body').removeClass('modal-open');", true); } protected void ddFilterInitiator_SelectedIndexChanged(object sender, EventArgs e) { try { BindGrid(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void ddFilterCustomer_SelectedIndexChanged(object sender, EventArgs e) { try { BindProject(); BindGrid(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void ddFilterProject_SelectedIndexChanged(object sender, EventArgs e) { try { BindGrid(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void ddFilterType_SelectedIndexChanged(object sender, EventArgs e) { try { BindGrid(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void ddFilterStatus_SelectedIndexChanged(object sender, EventArgs e) { try { BindGrid(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } protected void btnvTaskSnapshot_Click(object sender, EventArgs e) { try { LoadTaskOverlayPopup(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } /// /// Click event to take snapshot /// /// /// protected void btnfTaskSnapshot_Click(object sender, EventArgs e) { try { LoadTaskOverlayPopup(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } /// /// Iteam Data bound /// /// /// protected void rptTasks_ItemDataBound(object sender, RepeaterItemEventArgs e) { try { if (e.Item.ItemIndex != -1) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { /* CVH 2016-04-15 Set background of Status cell */ /* 1 To do - Pink 2 In progress - Yellow 3 To be tested - Orange 4 Release ready - Green 5 Reopened - Pink 6 Closed - Gray 7 On hold - Blue */ HtmlTableCell td = (HtmlTableCell)e.Item.FindControl("tdStatus"); if (td != null) { Label lblStatus = (Label)td.FindControl("lblStatus"); if (lblStatus != null) { string status = lblStatus.Text.ToUpper().Replace(" ", ""); if (status == pNums.TaskStatus.ToDo.ToString().ToUpper() || status == pNums.TaskStatus.Reopened.ToString().ToUpper()) td.BgColor = "#FC8D8D"; //pink else if (status == pNums.TaskStatus.InProgress.ToString().ToUpper()) td.BgColor = "#FFFF73"; //yellow else if (status == pNums.TaskStatus.ToBeTested.ToString().ToUpper()) td.BgColor = "#FFBC03"; //orange else if (status == pNums.TaskStatus.ReleaseReady.ToString().ToUpper()) td.BgColor = "#8AD173"; //green else if (status == pNums.TaskStatus.Closed.ToString().ToUpper()) td.BgColor = "#D1D1D1"; //gray else if (status == pNums.TaskStatus.OnHold.ToString().ToUpper()) td.BgColor = "#5BC0DE"; //blue if (handler.ReturnSetup().code == "STUD-1") { //CVH 2017-06-21 Custom statuses = Closed=Closed, Open=To do, Resolved=Release ready, Supplier Repairs=In progress. if (lblStatus.Text == "To do") lblStatus.Text = "Open"; //else if (lblStatus.Text == "Release ready") // lblStatus.Text = "Resolved"; else if (lblStatus.Text == "In progress") lblStatus.Text = "Supplier Repairs"; } } } } } } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } #endregion }