using framework_business; using framework_library; using System; using System.Collections; using System.Reflection; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; public partial class controls_admin_projects : System.Web.UI.UserControl { #region methods /// Method to Bind User Types /// private void BindCustomers() { ArrayList customers = new ArrayList(); try { oSetup _setup = handler.ReturnSetup(); customers = xData.GetTypedByCriteriaSpecific("recId", typeof(oCustomer), "isActive", "1", "customer", "pal_", true); ddCustomer.DataSource = customers; ddCustomer.DataTextField = "customer"; ddCustomer.DataValueField = "code"; ddCustomer.DataBind(); ddCustomer.SelectedValue = _setup.code; if (_setup.code != "EVOL-1") ddCustomer.Enabled = false; } catch (Exception ex) { exception.HandleException("Users:", MethodBase.GetCurrentMethod().Name, ex, Session["profileId"]); Response.Redirect("/error", false); } } /// /// Method to Bind Project Data /// private void BindProjectData() { try { ArrayList projectList = new ArrayList(); oSetup _setup = handler.ReturnSetup(); if (_setup.code == "EVOL-1") projectList = xData.GetTypedByCriteriaSpecific("recId", typeof(oProject), "isActive", "1", "name", "pal_", true); else projectList = xData.GetTypedByCriteriaSpecific("recId", typeof(oProject), "isActive,customerCode", "1," + _setup.code, "name", "pal_", true); rptProjects.DataSource = projectList; rptProjects.DataBind(); } catch (Exception ex) { exception.HandleException("Projects:", MethodBase.GetCurrentMethod().Name, ex, Session["project"]); Response.Redirect("/error", false); } } private void BindCategory() { try { DataTable dt = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oTaskCategory), "isActive", "1", "", "pal_", true); ddCategory.DataSource = dt; ddCategory.DataTextField = "taskCategory"; ddCategory.DataValueField = "recId"; ddCategory.DataBind(); } catch (Exception ex) { exception.HandleException("Task:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]); Response.Redirect("/error", false); } } /// /// Populate Form Values /// /// private void PopulatePageFormValues(ref oProject _Project) { try { if (_Project.customerCode != String.Empty) ddCustomer.SelectedValue = _Project.customerCode; txtCode.Value = _Project.projectCode; txtName.Value = _Project.name; txtDescription.Value = _Project.description; chkActive.Checked = _Project.isActive; if (_Project.categoryId > 0) ddCategory.SelectedValue = _Project.categoryId.ToString(); } catch (Exception ex) { exception.HandleException("Projects:", MethodBase.GetCurrentMethod().Name, ex, 0); Response.Redirect("/error", false); } } /// /// Save Form Values /// /// private void SavePageFormValues(ref oProject _Project) { try { _Project.name = txtName.Value; _Project.description = txtDescription.Value; _Project.isActive = chkActive.Checked; _Project.categoryId = int.Parse(ddCategory.SelectedValue); _Project.customerCode = ddCustomer.SelectedValue; } catch (Exception ex) { exception.HandleException("Projects:", MethodBase.GetCurrentMethod().Name, ex, 0); Response.Redirect("/error", false); } } /// /// Method to Toggle Panels /// /// private void TogglePanels(string panelName) { switch (panelName) { case "pnlProjectPage": pnlProjectPage.Visible = true; pnlProjectList.Visible = false; break; case "pnlProjectList": pnlProjectPage.Visible = false; pnlProjectList.Visible = true; break; } //clear result pnlResult.Visible = false; } #endregion #region events /// /// Page Load Event /// /// /// protected void Page_Load(object sender, EventArgs e) { try { if (!Page.IsPostBack) { BindCustomers(); BindProjectData(); BindCategory(); if (utils.verifySession("project")) { oProject project = (oProject)Session["project"]; } } } catch (Exception ex) { exception.HandleException("Projects:", MethodBase.GetCurrentMethod().Name, ex, Session["project"]); Response.Redirect("/error", false); } } /// /// New Project Click /// /// /// protected void btnNewProject_Click(object sender, EventArgs e) { try { //show Content Specific TogglePanels("pnlProjectPage"); Session["ProjectId"] = 0; utils.disposeSession("Project"); oProject Project = new oProject(); PopulatePageFormValues(ref Project); oSetup _setup = handler.ReturnSetup(); if (_setup.code == "EVOL-1") ddCustomer.Enabled = true; } catch (Exception ex) { exception.HandleException("Projects:", MethodBase.GetCurrentMethod().Name, ex, Session["project"]); Response.Redirect("/error", false); } } /// /// Edit the Project page /// /// /// protected void lnkEdit_Click(object sender, EventArgs e) { oProject _Project = new oProject(); ArrayList catList = new ArrayList(); try { if (sender.GetType() == typeof(LinkButton)) { // int recId = int.Parse(((LinkButton)sender).CommandArgument); if (recId > 0) { Session["ProjectId"] = recId; //get cat catList = xData.GetTypedByCriteriaSpecific("recId", typeof(oProject), "recId", recId.ToString(), "", "pal_", true); //enumerate list foreach (oProject cat in catList) { //assign object _Project = cat; //populate page form PopulatePageFormValues(ref _Project); ddCustomer.Enabled = false; Session["Project"] = _Project; break; } //show Project Form TogglePanels("pnlProjectPage"); } } } catch (Exception ex) { exception.HandleException("Projects:", MethodBase.GetCurrentMethod().Name, ex, Session["project"]); Response.Redirect("/error", false); } } /// /// Remove the Project /// /// /// protected void lnkRemove_Click(object sender, EventArgs e) { try { if (sender.GetType() == typeof(LinkButton)) { // int recId = int.Parse(((LinkButton)sender).CommandArgument); //Delete cat if (xData.DeleteTyped("recId", recId.ToString(), typeof(oProject), "pal_", true)) { //rebind pages grid BindProjectData(); pnlResult.Visible = true; //display successful result lblResult.Text = "the selected Project was deleted successfully."; } } } catch (Exception ex) { exception.HandleException("Projects:", MethodBase.GetCurrentMethod().Name, ex, Session["project"]); Response.Redirect("/error", false); } } /// /// Cancel /// /// /// protected void btnCancel_Click(object sender, EventArgs e) { try { Session["ProjectId"] = 0; utils.disposeSession("Project"); BindProjectData(); //show list TogglePanels("pnlProjectList"); } catch (Exception ex) { exception.HandleException("Projects:", MethodBase.GetCurrentMethod().Name, ex, Session["project"]); Response.Redirect("/error", false); } } /// /// Save Click /// /// /// protected void btnSave_Click(object sender, EventArgs e) { oProject Project = new oProject(); try { if (utils.verifySession("Project"))//update mode { Project = (oProject)Session["Project"]; //save form values SavePageFormValues(ref Project); Project.dateUpdated = DateTime.Now; if (xData.UpdateTyped("recId", Project.recId.ToString(), typeof(oProject), Project, "pal_", true)) { Session["ProjectId"] = Project.recId; Session["Project"] = Project; BindProjectData(); pnlResult.Visible = true; lblResult.Text = "your changes were updated successfully."; } } else { //save form values SavePageFormValues(ref Project); string prefix = String.Empty; //create project code if (Project.name.Length > 3) { prefix = Project.name.Substring(0, 4); } else prefix = Project.name; oProjectNumber projNumber = new oProjectNumber(); foreach (oProjectNumber pCode in xData.GetTypedByCriteriaSpecific("recId", typeof(oProjectNumber), "custCode,prefix", Project.customerCode + "," + prefix, "prefix", "pal_", true)) { projNumber = pCode; break; } projNumber.prefix = prefix.ToUpper(); projNumber.lastNumberUsed += 1; projNumber.custCode = Project.customerCode; Project.projectCode = projNumber.prefix + "-" + projNumber.lastNumberUsed; if (!xData.VerifyExists("recId", typeof(oProject), "customerCode,projectCode", Project.customerCode + "," + Project.projectCode, "", "pal_", true)) { 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); } //setup initial values for project Project.dateCreated = DateTime.Now; Project.recId = xData.SaveTyped("recId", typeof(oProject), Project, "pal_", true); if (Project.recId > 0) { Session["ProjectId"] = Project.recId; Session["Project"] = Project; BindProjectData(); PopulatePageFormValues(ref Project); pnlResult.Visible = true; lblResult.Text = "the Project was created successfully."; } } else { pnlResult.Visible = true; lblResult.Text = "An project with this code already exists on the system"; } } } catch (Exception ex) { exception.HandleException("Projects:", MethodBase.GetCurrentMethod().Name, ex, Session["project"]); Response.Redirect("/error", false); } } #endregion }