public UnitsAddTDS.UnitsChecklistRulesTempDataTable GetChecklistRulesInformation()
        {
            unitsChecklistRulesTempForAdd = (UnitsAddTDS.UnitsChecklistRulesTempDataTable)Session["unitsChecklistRulesTempForAddDummy"];

            if (unitsChecklistRulesTempForAdd == null)
            {
                unitsChecklistRulesTempForAdd = (UnitsAddTDS.UnitsChecklistRulesTempDataTable)Session["unitsChecklistRulesTempForAdd"];
            }

            return unitsChecklistRulesTempForAdd;
        }
        protected void ChecklistRulesInformationEmptyFix(GridView grdChecklistRulesInformation)
        {
            if (grdChecklistRulesInformation.Rows.Count == 0)
            {
                UnitsAddTDS.UnitsChecklistRulesTempDataTable dt = new UnitsAddTDS.UnitsChecklistRulesTempDataTable();
                dt.AddUnitsChecklistRulesTempRow(0, 0, "", "", DateTime.Now, DateTime.Now, false, "Active", false);
                Session["unitsChecklistRulesTempForAddDummy"] = dt;

                grdChecklistRulesInformation.DataBind();
            }

            // Normally executes at all postbacks
            if (grdChecklistRulesInformation.Rows.Count == 1)
            {
                UnitsAddTDS.UnitsChecklistRulesTempDataTable dt = (UnitsAddTDS.UnitsChecklistRulesTempDataTable)Session["unitsChecklistRulesTempForAddDummy"];
                if (dt != null)
                {
                    // Hide row
                    grdChecklistRulesInformation.Rows[0].Visible = false;
                    grdChecklistRulesInformation.Rows[0].Controls.Clear();
                }
            }
        }
        private void StepChecklistRulesInformationProcessGrid()
        {
            UnitsAddTDS dataSet = new UnitsAddTDS();
            dataSet.UnitsChecklistRulesTemp.Merge(unitsChecklistRulesTempForAdd, true);
            UnitsChecklistRulesTemp model = new UnitsChecklistRulesTemp(dataSet);

            // Update rows
            if (Session["unitsChecklistRulesTempForAddDummy"] == null)
            {
                foreach (GridViewRow row in grdChecklistRulesInformation.Rows)
                {
                    int ruleId = int.Parse(grdChecklistRulesInformation.DataKeys[row.RowIndex].Values["RuleID"].ToString());
                    int count = int.Parse(grdChecklistRulesInformation.DataKeys[row.RowIndex].Values["Count"].ToString());
                    DateTime? lastService = null;
                    DateTime? nextDue = null;
                    bool selected = ((CheckBox)row.FindControl("cbxSelected")).Checked;
                    bool done = ((CheckBox)row.FindControl("cbxDone")).Checked;
                    string state = "Healthy";

                    if (((RadDatePicker)row.FindControl("tkrdpLastService")).SelectedDate.HasValue)
                    {
                        lastService = ((RadDatePicker)row.FindControl("tkrdpLastService")).SelectedDate.Value;
                    }

                    if (((RadDatePicker)row.FindControl("tkrdpNextDue")).SelectedDate.HasValue)
                    {
                        nextDue = ((RadDatePicker)row.FindControl("tkrdpNextDue")).SelectedDate.Value;
                    }

                    model.Update(ruleId, count, lastService, nextDue, state, done, selected);
                }

                model.Table.AcceptChanges();

                unitsChecklistRulesTempForAdd = (UnitsAddTDS.UnitsChecklistRulesTempDataTable)model.Table;
                Session["unitsChecklistRulesTempForAdd"] = unitsChecklistRulesTempForAdd;
            }
        }
        // ////////////////////////////////////////////////////////////////////////
        // STEP4 - CHECKLIST RULES INFORMATION - METHODS
        //
        private void StepChecklistRulesInformationIn()
        {
            // Set instruction
            Label instruction = (Label)this.Master.FindControl("lblInstruction");
            instruction.Text = "Please review the checklist rules data that will be applied to the unit";

            // Load
            UnitsAddTDS dataSet = new UnitsAddTDS();
            dataSet.UnitsChecklistRulesTemp.Merge(unitsChecklistRulesTempForAdd, true);
            UnitsChecklistRulesTemp model = new UnitsChecklistRulesTemp(dataSet);
            int companyLevelIdSelected = 0;

            if (dataSet.UnitsChecklistRulesTemp.Rows.Count <= 0)
            {
                foreach (int companyLevelId in arrayCompanyLevelsSelected)
                {
                    companyLevelIdSelected = companyLevelId;
                }

                model.Load(arrayCategoriesSelected, companyLevelIdSelected, int.Parse(hdfCompanyId.Value));
            }
            else
            {
                if (Convert.ToBoolean(Session["arrayCategoriesSelectedChanged"]) || Convert.ToBoolean(Session["arrayCompanyLevelsSelectedChanged"]))
                {
                    model.Data.Clear();
                    foreach (int companyLevelId in arrayCompanyLevelsSelected)
                    {
                        companyLevelIdSelected = companyLevelId;
                    }

                    model.Load(arrayCategoriesSelected, companyLevelIdSelected, int.Parse(hdfCompanyId.Value));
                }
            }

            // Store tables
            unitsChecklistRulesTempForAdd = (UnitsAddTDS.UnitsChecklistRulesTempDataTable)model.Table;
            Session["unitsChecklistRulesTempForAdd"] = unitsChecklistRulesTempForAdd;

            grdChecklistRulesInformation.DataBind();
        }
        // ////////////////////////////////////////////////////////////////////////
        // INITIAL EVENTS
        //
        protected void Page_Load(object sender, EventArgs e)
        {
            // Register client scripts
            this.RegisterClientScripts();

            if (!IsPostBack)
            {
                // Security check
                if (!(Convert.ToBoolean(Session["sgLFS_FLEETMANAGEMENT_UNITS_ADD"])))
                {
                    Response.Redirect("./../../error_page.aspx?error=" + "You are not authorized to view this page. Contact your system administrator.");
                }

                // Validate query string
                if ((string)Request.QueryString["source_page"] == null)
                {
                    Response.Redirect("./../../error_page.aspx?error=" + "Invalid query string in units_add.aspx");
                }

                // Tag page
                hdfCompanyId.Value = Session["companyID"].ToString();
                hdfUpdate.Value = "no";

                // ... Remove sessions
                Session.Remove("arrayCategoriesSelected");
                Session.Remove("arrayCompanyLevelsSelected");
                Session.Remove("unitsAddNew");
                Session.Remove("unitsChecklistRulesTempForAdd");
                Session.Remove("unitsChecklistRulesTempForAddDummy");
                Session.Remove("arrayCategoriesSelectedChanged");
                Session.Remove("arrayCompanyLevelsSelectedChanged");

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

                // ... Initialize tables
                unitsAddTDS = new UnitsAddTDS();
                arrayCategoriesSelected = new ArrayList();
                arrayCompanyLevelsSelected = new ArrayList();
                unitsAddNew = new UnitsAddTDS.UnitsAddNewDataTable();
                unitsChecklistRulesTempForAdd = new UnitsAddTDS.UnitsChecklistRulesTempDataTable();

                // ... Store arrays
                Session["arrayCategoriesSelected"] = arrayCategoriesSelected;
                Session["arrayCompanyLevelsSelected"] = arrayCompanyLevelsSelected;
                Session["arrayCategoriesSelectedChanged"] = false;
                Session["arrayCompanyLevelsSelectedChanged"] = false;

                // ... Store tables
                Session["unitsAddTDS"] = unitsAddTDS;
                Session["unitsAddNew"] = unitsAddNew;
                Session["unitsChecklistRulesTempForAdd"] = unitsChecklistRulesTempForAdd;

                // ... For Categories
                categoriesTDS = new CategoriesTDS();
                Session["categoriesTDSForUnitsAdd"] = categoriesTDS;

                // .. For Company Levels
                companyLevelsTDS = new CompanyLevelsTDS();
                CompanyLevel companyLevel = new CompanyLevel(companyLevelsTDS);
                companyLevel.Load(int.Parse(hdfCompanyId.Value));
                GetNodeForCompanyLevels(tvCompanyLevelsRoot.Nodes, 0);

                // StepTypeIn
                wzUnitAdd.ActiveStepIndex = 0;
                StepTypeIn();
            }
            else
            {
                // Restore arrays
                arrayCategoriesSelected = (ArrayList)Session["arrayCategoriesSelected"];
                arrayCompanyLevelsSelected = (ArrayList)Session["arrayCompanyLevelsSelected"];

                // Restore tables
                categoriesTDS = (CategoriesTDS)Session["categoriesTDSForUnitsAdd"];
                unitsAddTDS = (UnitsAddTDS)Session["unitsAddTDS"];
                unitsAddNew = (UnitsAddTDS.UnitsAddNewDataTable)Session["unitsAddNew"];
                unitsChecklistRulesTempForAdd = (UnitsAddTDS.UnitsChecklistRulesTempDataTable)Session["unitsChecklistRulesTempForAdd"];
            }
        }