/// <summary>
    /// method
    /// saves the roles that may edit the decision state for an item to the database
    /// </summary>
    /// <param name="lItemID"></param>
    /// <returns></returns>
    protected CStatus SaveCLIDSEdit(long lItemID)
    {
        CChecklistItemData clid   = new CChecklistItemData(BaseMstr.BaseData);
        CStatus            status = clid.DeleteAllCLItemDSRoles(ChecklistID, lItemID);

        if (!status.Status)
        {
            return(status);
        }

        string strDSSelect = "ITEM_ID = " + lItemID.ToString();

        DataRow[] adr = DSChangeable.Select(strDSSelect);
        foreach (DataRow dr in adr)
        {
            CCLIDSEditDataItem di = new CCLIDSEditDataItem();
            di.ChecklistID = ChecklistID;
            di.ItemID      = lItemID;
            di.UserRoleID  = Convert.ToInt64(dr["USER_ROLE_ID"]);

            status = clid.InsertCLItemDSRole(di);
            if (!status.Status)
            {
                return(status);
            }
        }

        return(new CStatus());
    }
    /// <summary>
    /// method
    /// moves the values from the grid view to the data table
    /// </summary>
    protected void MoveValuesFromGVtoDT()
    {
        foreach (GridViewRow gvr in gvChecklistItems.Rows)
        {
            CheckBox     chkItemActive   = (CheckBox)gvr.FindControl("chkItemActive");
            TextBox      txtTSTimePeriod = (TextBox)gvr.FindControl("txtTSTimePeriod");
            DropDownList ddlUnit         = (DropDownList)gvr.FindControl("ddlUnit");
            TextBox      txtSortOrder    = (TextBox)gvr.FindControl("txtSortOrder");
            CheckBoxList cblDSChangeable = (CheckBoxList)gvr.FindControl("cblDSChangeable");

            if (chkItemActive == null ||
                txtTSTimePeriod == null ||
                ddlUnit == null ||
                txtSortOrder == null ||
                cblDSChangeable == null)
            {
                return;
            }

            foreach (DataRow dr in Items.Rows)
            {
                string strItemID = dr["ITEM_ID"].ToString();
                if (gvChecklistItems.DataKeys[gvr.RowIndex].Value.ToString() == strItemID)
                {
                    dr["CLI_TS_TIME_PERIOD"] = (string.IsNullOrEmpty(txtTSTimePeriod.Text)) ? "0" : txtTSTimePeriod.Text;
                    dr["TIME_UNIT_ID"]       = ddlUnit.SelectedValue;
                    dr["SORT_ORDER"]         = (string.IsNullOrEmpty(txtSortOrder.Text)) ? "0" : txtSortOrder.Text;
                    dr["ACTIVE_ID"]          = Convert.ToInt32((chkItemActive.Checked) ? k_ACTIVE_ID.Active : k_ACTIVE_ID.Inactive);

                    string    strDSSelect     = "ITEM_ID = " + strItemID;
                    DataRow[] adrDSChangeable = DSChangeable.Select(strDSSelect);
                    foreach (DataRow drDSChangeable in adrDSChangeable)
                    {
                        drDSChangeable.Delete();
                    }

                    foreach (ListItem li in cblDSChangeable.Items)
                    {
                        if (li.Selected)
                        {
                            DataRow drDSChangeable = DSChangeable.NewRow();

                            drDSChangeable["CHECKLIST_ID"] = ChecklistID;
                            drDSChangeable["ITEM_ID"]      = strItemID;
                            drDSChangeable["USER_ROLE_ID"] = li.Value;

                            DSChangeable.Rows.Add(drDSChangeable);
                        }
                    }

                    break;
                }
            }
        }
    }
    /// <summary>
    /// method
    /// loads the values from the data row into the grid view row controls
    /// </summary>
    /// <param name="gvr"></param>
    protected void LoadGridViewRowValues(GridViewRow gvr)
    {
        DataRowView drv = (DataRowView)gvr.DataItem;

        if (drv == null)
        {
            return;
        }

        DataRow dr = drv.Row;

        if (dr == null)
        {
            return;
        }

        Button       btnStates       = (Button)gvr.FindControl("btnStates");
        CheckBox     chkItemActive   = (CheckBox)gvr.FindControl("chkItemActive");
        TextBox      txtTSTimePeriod = (TextBox)gvr.FindControl("txtTSTimePeriod");
        DropDownList ddlUnit         = (DropDownList)gvr.FindControl("ddlUnit");
        TextBox      txtSortOrder    = (TextBox)gvr.FindControl("txtSortOrder");
        Label        lblItemLabel    = (Label)gvr.FindControl("lblItemLabel");
        CheckBoxList cblDSChangeable = (CheckBoxList)gvr.FindControl("cblDSChangeable");

        if (btnStates == null ||
            chkItemActive == null ||
            txtTSTimePeriod == null ||
            ddlUnit == null ||
            txtSortOrder == null ||
            lblItemLabel == null ||
            cblDSChangeable == null)
        {
            return;
        }

        btnStates.Attributes.Add("ITEM_ID", dr["ITEM_ID"].ToString());
        btnStates.Enabled = (Convert.ToInt32(dr["CHECKLIST_ID"]) < 1) ? false : true;

        chkItemActive.Checked = (Convert.ToInt64(dr["ACTIVE_ID"]) == (long)k_ACTIVE_ID.Active) ? true : false;

        txtTSTimePeriod.Text = dr["CLI_TS_TIME_PERIOD"].ToString();

        ddlUnit.SelectedValue = dr["TIME_UNIT_ID"].ToString();

        txtSortOrder.Text = dr["SORT_ORDER"].ToString();

        lblItemLabel.Text = dr["ITEM_LABEL"].ToString();

        DataRow[]     draDSSelect = DSChangeable.Select("ITEM_ID = " + dr["ITEM_ID"].ToString());
        CCheckBoxList cbl         = new CCheckBoxList();

        cbl.CheckSelected(cblDSChangeable, draDSSelect);
    }
    /// <summary>
    /// method
    /// validates the user input for an item
    /// </summary>
    /// <param name="dr"></param>
    /// <param name="plistStatus"></param>
    /// <returns></returns>
    protected CStatus ValidateItem(DataRow dr, out CParameterList plistStatus)
    {
        plistStatus = new CParameterList();

        CStatus status          = new CStatus();
        string  strTSTimePeriod = dr["CLI_TS_TIME_PERIOD"].ToString();

        if (string.IsNullOrEmpty(strTSTimePeriod) || Convert.ToInt32(strTSTimePeriod) < 1)
        {
            plistStatus.AddInputParameter("ERROR_CE_TIMEPERIOD", Resources.ErrorMessages.ERROR_CE_TIMEPERIOD);
        }

        string strUnitID = dr["TIME_UNIT_ID"].ToString();

        if (string.IsNullOrEmpty(strUnitID) || Convert.ToInt32(strUnitID) < 1)
        {
            plistStatus.AddInputParameter("ERROR_CE_TIMEUNITS", Resources.ErrorMessages.ERROR_CE_TIMEUNITS);
        }

        string strSortOrder = dr["SORT_ORDER"].ToString();

        if (string.IsNullOrEmpty(strSortOrder) || Convert.ToInt32(strSortOrder) < 1)
        {
            plistStatus.AddInputParameter("ERROR_CE_SORTORDER", Resources.ErrorMessages.ERROR_CE_SORTORDER);
        }

        string strDSSelect = "ITEM_ID = " + dr["ITEM_ID"].ToString();

        if (DSChangeable.Select(strDSSelect).Count() < 1)
        {
            plistStatus.AddInputParameter("ERROR_CE_DSCHANGE", Resources.ErrorMessages.ERROR_CE_DSCHANGE);
        }

        if (plistStatus.Count > 0)
        {
            status.Status     = false;
            status.StatusCode = k_STATUS_CODE.Failed;
        }

        return(status);
    }