// ////////////////////////////////////////////////////////////////////////
        // STEP3 - PUBLIC METHODS
        //
        public CompanyLevelsAddTDS.CompanyLevelManagersDataTable GetManagers()
        {
            companyLevelManagers = (CompanyLevelsAddTDS.CompanyLevelManagersDataTable)Session["companyLevelManagersDummy"];
            if (companyLevelManagers == null)
            {
                companyLevelManagers = (CompanyLevelsAddTDS.CompanyLevelManagersDataTable)Session["companyLevelManagers"];
            }

            return companyLevelManagers;
        }
        protected void AddCompanyLevelEmptyFix(GridView grdEmployees)
        {
            if (grdEmployees.Rows.Count == 0)
            {
                CompanyLevelsAddTDS.CompanyLevelManagersDataTable dt = new CompanyLevelsAddTDS.CompanyLevelManagersDataTable();
                dt.AddCompanyLevelManagersRow(-1, -1, "", false, false, false);
                Session["companyLevelManagersDummy"] = dt;

                grdEmployees.DataBind();
            }

            // Normally executes at all postbacks
            if (grdEmployees.Rows.Count == 1)
            {
                CompanyLevelsAddTDS.CompanyLevelManagersDataTable dt = (CompanyLevelsAddTDS.CompanyLevelManagersDataTable)Session["companyLevelManagersDummy"];
                if (dt != null)
                {
                    grdEmployees.Rows[0].Visible = false;
                    grdEmployees.Rows[0].Controls.Clear();
                }
            }
        }
        // /////////////////////////////////////////////////////////////////////////////////////////////////////
        //
        // STEP5 - SUMMARY
        //
        // ////////////////////////////////////////////////////////////////////////
        // STEP5 - SUMMARY - METHODS
        //
        private void StepSummaryIn()
        {
            // Set instruction
            Label instruction = (Label)this.Master.FindControl("lblInstruction");
            instruction.Text = "Summary";
            hdfUpdate.Value = "yes";

            // Operation
            if (rbtnAddCompanyLevel.Checked) tbxSummary.Text = "Operation: Add company level";
            if (rbtnDeleteCompanyLevel.Checked) tbxSummary.Text = "Operation: Delete company level";
            if (rbtnEditCompanyLevel.Checked) tbxSummary.Text = "Operation: Edit company level";

            // Update managers
            int companyId = Int32.Parse(hdfCompanyId.Value);
            foreach (int companyLevelIdInArray in arrayCompanyLevelsSelected)
            {
                if (rbtnDeleteCompanyLevel.Checked)
                {
                    CompanyLevelsAddManagers companyLevelMangers = new CompanyLevelsAddManagers(companyLevelsAddTDS);
                    companyLevelMangers.UpdateManagers(companyLevelIdInArray, companyId);
                }

                //Tag page
                hdfCompanyLevelId.Value = companyLevelIdInArray.ToString();
            }

            Session["companyLevelsAddTDS"] = companyLevelsAddTDS;
            Session["companyLevelManagers"] = companyLevelsAddTDS.CompanyLevelManagers;
            companyLevelManagers = companyLevelsAddTDS.CompanyLevelManagers;

            // Company Levels
            if (!rbtnDeleteCompanyLevel.Checked)
            {
                if (arrayCompanyLevelsSelected.Count > 0)
                {
                    foreach (int companyLevelIdInArray in arrayCompanyLevelsSelected)
                    {
                        CompanyLevelGateway companyLevelGateway = new CompanyLevelGateway();
                        companyLevelGateway.LoadByCompanyLevelId(companyLevelIdInArray, int.Parse(hdfCompanyId.Value));

                        tbxSummary.Text += "\nParent company level: " + companyLevelGateway.GetName(companyLevelIdInArray);
                    }
                }
                else
                {
                    tbxSummary.Text += "\nParent company level: (Empty)";
                }
            }

            // Name
            if (!rbtnDeleteCompanyLevel.Checked)
            {
                tbxSummary.Text += "\nName: " + tbxName.Text.Trim();
            }
            else
            {
                foreach (int companyLevelIdInArray in arrayCompanyLevelsSelected)
                {
                    CompanyLevelGateway companyLevelGateway = new CompanyLevelGateway();
                    companyLevelGateway.LoadByCompanyLevelId(companyLevelIdInArray, int.Parse(hdfCompanyId.Value));

                    tbxSummary.Text += "\nName: " + companyLevelGateway.GetName(companyLevelIdInArray);
                }
            }

            // Unit Of Measurement
            tbxSummary.Text += "\nUnit Of Measurement: " + tbxUnitsUnitOfMeasurement.Text.Trim();

            // Managers
            CompanyLevelsAddManagers companyLevelManagersForSummary = new CompanyLevelsAddManagers(companyLevelsAddTDS);
            tbxSummary.Text += "\nManagers: " + companyLevelManagersForSummary.GetManagers();
        }
        private void StepCompanyLevelManagersIn()
        {
            // Set instruction
            Label instruction = (Label)this.Master.FindControl("lblInstruction");
            instruction.Text = "Please define the fleet managers for this company level";

            // Filter grid
            int companyId = Int32.Parse(hdfCompanyId.Value);
            foreach (int companyLevelIdInArray in arrayCompanyLevelsSelected)
            {
                if (!rbtnAddCompanyLevel.Checked)
                {
                    CompanyLevelsAddManagers companyLevelMangers = new CompanyLevelsAddManagers(companyLevelsAddTDS);
                    companyLevelMangers.UpdateManagers(companyLevelIdInArray, companyId);
                }

                //Tag page
                hdfCompanyLevelId.Value = companyLevelIdInArray.ToString();
            }

            Session["companyLevelsAddTDS"] = companyLevelsAddTDS;
            Session["companyLevelManagers"] = companyLevelsAddTDS.CompanyLevelManagers;
            companyLevelManagers = companyLevelsAddTDS.CompanyLevelManagers;
            grdEmployees.DataBind();
        }
        private void StepCompanyLevelManagersEmployeeProcessGrid()
        {
            CompanyLevelsAddManagers model = new CompanyLevelsAddManagers(companyLevelsAddTDS);
            int companyLevelId = Int32.Parse(hdfCompanyLevelId.Value);

            // update rows
            if (Session["companyLevelManagersDummy"] == null)
            {
                foreach (GridViewRow row in grdEmployees.Rows)
                {
                    int employeeId = int.Parse(grdEmployees.DataKeys[row.RowIndex].Values["EmployeeID"].ToString());
                    bool selected = ((CheckBox)row.FindControl("cbxSelected")).Checked;

                    if (selected)
                    {
                        model.Update(companyLevelId, employeeId, selected);
                    }
                    else
                    {
                        model.Update(0, employeeId, selected);
                    }
                }

                model.Table.AcceptChanges();

                Session["companyLevelsAddTDS"] = companyLevelsAddTDS;
                Session["companyLevelManagers"] = companyLevelsAddTDS.CompanyLevelManagers;
                companyLevelManagers = companyLevelsAddTDS.CompanyLevelManagers;
            }
        }
        // ////////////////////////////////////////////////////////////////////////
        // INITIAL EVENTS
        //
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                // Tag page
                hdfCompanyId.Value = Session["companyID"].ToString();
                hdfUpdate.Value = "no";

                // Initialize viewstate variables
                ViewState["StepFrom"] = "Out";

                // Prepare initial data
                // ... Remove sessions
                Session.Remove("arrayCompanyLevelsSelected");
                Session.Remove("arrayCompanyLevelsSelected2");
                Session.Remove("companyLevelManagersDummy");

                companyLevelsAddTDS = new CompanyLevelsAddTDS();

                // ... For team members
                int companyId = Int32.Parse(hdfCompanyId.Value);
                CompanyLevelsAddManagers companyLevelManagers = new CompanyLevelsAddManagers(companyLevelsAddTDS);
                companyLevelManagers.LoadAll(companyId);

                Session["companyLevelsAddTDS"] = companyLevelsAddTDS;
                Session["companyLevelManagers"] = companyLevelsAddTDS.CompanyLevelManagers;

                // ... For Company Levels
                companyLevelsTDS = new CompanyLevelsTDS();
                CompanyLevel companyLevel = new CompanyLevel(companyLevelsTDS);
                companyLevel.Load(int.Parse(hdfCompanyId.Value));

                Session["companyLevelsTDS"] = companyLevelsTDS;

                GetNodeForCompanyLevel(tvCompanyLevelsRoot.Nodes, 0);
                GetNodeForCompanyLevel(tvCompanyLevelsRoot2.Nodes, 0);

                arrayCompanyLevelsSelected = new ArrayList();
                arrayCompanyLevelsSelected2 = new ArrayList();

                Session["arrayCompanyLevelsSelected"] = arrayCompanyLevelsSelected;
                Session["arrayCompanyLevelsSelected2"] = arrayCompanyLevelsSelected2;

                wzCompanyLevelsAdd.ActiveStepIndex = 0;
                StepOperationIn();
            }
            else
            {
                // Restore tables
                companyLevelsTDS = (CompanyLevelsTDS)Session["companyLevelsTDS"];
                companyLevelsAddTDS = (CompanyLevelsAddTDS)Session["companyLevelsAddTDS"];
                companyLevelManagers = (CompanyLevelsAddTDS.CompanyLevelManagersDataTable)Session["companyLevelManagers"];
                arrayCompanyLevelsSelected = (ArrayList)Session["arrayCompanyLevelsSelected"];
                arrayCompanyLevelsSelected2 = (ArrayList)Session["arrayCompanyLevelsSelected2"];
            }
        }