// /////////////////////////////////////////////////////////////////////////////////////////////////////
        //
        // 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 bool StepSummaryFinish()
        {
            if (Page.IsValid)
            {
                int companyId = Convert.ToInt32(Session["companyID"]);
                int? companyLevelId = null;

                foreach (int companyLevelIdInArray in arrayCompanyLevelsSelected)
                {
                    companyLevelId = companyLevelIdInArray;
                }

                if (rbtnAddCompanyLevel.Checked)
                {
                    CompanyLevelsAddNew companyLevelsAddNew = new CompanyLevelsAddNew(companyLevelsAddTDS);
                    companyLevelsAddNew.Insert(null, null, tbxName.Text.Trim(), companyLevelId, false, companyId, false, tbxUnitsUnitOfMeasurement.Text.Trim());
                }

                if (rbtnEditCompanyLevel.Checked)
                {
                    CompanyLevelsAddNew companyLevelsAddNew = new CompanyLevelsAddNew(companyLevelsAddTDS);
                    companyLevelsAddNew.Insert(companyLevelId, null, tbxName.Text.Trim(), null, false, companyId, true, tbxUnitsUnitOfMeasurement.Text.Trim());
                }

                if (rbtnDeleteCompanyLevel.Checked)
                {
                    int? newCompanyLevelId = null;

                    if (arrayCompanyLevelsSelected2.Count > 0)
                    {
                        foreach (int companyLevelId2 in arrayCompanyLevelsSelected2)
                        {
                            newCompanyLevelId = companyLevelId2;
                        }
                    }

                    CompanyLevelsAddNew companyLevelsAddNew = new CompanyLevelsAddNew(companyLevelsAddTDS);
                    companyLevelsAddNew.Insert(companyLevelId, newCompanyLevelId, tbxName.Text.Trim(), null, true, companyId, true, tbxUnitsUnitOfMeasurement.Text.Trim());

                    // Delete company level managers
                    CompanyLevelsAddManagers companyLevelsAddManagers = new CompanyLevelsAddManagers(companyLevelsAddTDS);
                    companyLevelsAddManagers.DeleteAll();
                }

                // Store database
                Session["companyLevelsAddTDS"] = companyLevelsAddTDS;

                // Save
                Save();

                hdfUpdate.Value = "yes";

                return true;
            }
            else
            {
                return false;
            }
        }
        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;
            }
        }
        private void Save()
        {
            // Save to database
            DB.Open();
            DB.BeginTransaction();
            try
            {
                int newCompanyLevelIdForInsert = 0;

                // Save companyLevels
                CompanyLevelsAddNew companyLevelsAddNew = new CompanyLevelsAddNew(companyLevelsAddTDS);
                newCompanyLevelIdForInsert = companyLevelsAddNew.Save();

                // Save companyLevels managers
                int companyId = Int32.Parse(hdfCompanyId.Value);
                CompanyLevelsAddManagers companyLevelsAddManagers = new CompanyLevelsAddManagers(companyLevelsAddTDS);
                companyLevelsAddManagers.Save(newCompanyLevelIdForInsert, companyId);

                // Store datasets
                companyLevelsAddTDS.AcceptChanges();
                Session["companyLevelsAddTDS"] = companyLevelsAddTDS;

                DB.CommitTransaction();
            }
            catch (Exception ex)
            {
                DB.RollbackTransaction();

                string url = string.Format("./../../error_page.aspx?error={0}", ex.Message.Replace('\n', ' '));
                Response.Redirect(url);
            }
        }
        // ////////////////////////////////////////////////////////////////////////
        // 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"];
            }
        }