public IHttpActionResult getalldatapagef(UserAParModel par)
        {
            try
            {
                dbOAMSEntities db        = new dbOAMSEntities();
                int            p         = par.valint1.checkIsNumber();
                int            nums      = CommonSystem._itemsofpage * (p - 1);
                string         tablename = par.valstring1.checkIsNull();
                string         filterkey = par.valstring2.checkIsNull();
                tablename = CryptData.querydecrypt(tablename);
                var rfun = db.Database.SqlQuery <tbFunction>("select f.* from bnle.tbFunction f where f.MAFUNC = @MAFUNC and KICHTHOAT = 1"
                                                             , new SqlParameter("@MAFUNC", tablename)).FirstOrDefault();
                if (rfun != null)
                {
                    var vrs = db.Database.SqlQuery <tbFORMFUNC>("select f.* from bnle.tbFORMFUNC f where f.MAFUNC = @MAFUNC and HIENTHI = 1 and THUTUGRID > 0 order by THUTUGRID"
                                                                , new SqlParameter("@MAFUNC", tablename)).ToList();
                    List <DataControlCol> headercol = new List <DataControlCol>();
                    StringBuilder         sqlcom    = new StringBuilder("select ");
                    StringBuilder         sqlcount  = new StringBuilder("");
                    for (int i = 0; i < vrs.Count; i++)
                    {
                        DataControlCol h = new DataControlCol();
                        h.id = "idvb_" + vrs[i].ID;
                        sqlcom.Append(vrs[i].MATRUONG);
                        if ((i < vrs.Count - 1))
                        {
                            sqlcom.Append(",");
                        }
                        h.label    = vrs[i].TENTRUONG;
                        h.namecol  = vrs[i].MATRUONG;
                        h.width    = vrs[i].WITHDGRID;
                        h.viewgrid = vrs[i].VIEWGRID.checkIsNull() == "" ? "text-align:center" : vrs[i].VIEWGRID;
                        headercol.Add(h);
                    }
                    if (rfun.IDKEY == "ID")
                    {
                        sqlcom.Append(",ID");
                    }
                    DataGridModel result = new DataGridModel();
                    result.datacols = headercol;

                    if (filterkey != "" && rfun.KEYFOREIGN.checkIsNull() != "")
                    {
                        sqlcount.Append("select count(*) from  " + rfun.TABLENAME + " where " + rfun.KEYFOREIGN + " = @" + rfun.KEYFOREIGN);
                        sqlcom.Append(" from " + rfun.TABLENAME + " where " + rfun.KEYFOREIGN + " = @" + rfun.KEYFOREIGN + " ORDER BY " + rfun.ORDERBY + " OFFSET @nums ROWS FETCH NEXT @nume ROWS ONLY");
                    }
                    else
                    {
                        sqlcom.Append(" from " + rfun.TABLENAME + " ORDER BY " + rfun.ORDERBY + " OFFSET @nums ROWS FETCH NEXT @nume ROWS ONLY");
                        sqlcount.Append("select count(*) from  " + rfun.TABLENAME);
                    }
                    result.datarows = new List <DataControlCols>();
                    result.formname = rfun.TENFUNC;
                    result.viewmode = rfun.VIEWMODE;
                    if (filterkey != "" && rfun.KEYFOREIGN.checkIsNull() != "")
                    {
                        var controws = db.Database.SqlQuery <int>(sqlcount.ToString(), new SqlParameter("@" + rfun.KEYFOREIGN, filterkey)).FirstOrDefault();
                        result.TotalItems = controws;
                    }
                    else
                    {
                        var controws = db.Database.SqlQuery <int>(sqlcount.ToString()).FirstOrDefault();
                        result.TotalItems = controws;
                    }

                    var dt = new DataTable();

                    result.PerPage = CommonSystem._itemsofpage;
                    var conn            = db.Database.Connection;
                    var connectionState = conn.State;
                    try
                    {
                        if (connectionState != ConnectionState.Open)
                        {
                            conn.Open();
                        }
                        using (var cmd = conn.CreateCommand())
                        {
                            cmd.CommandText = sqlcom.ToString();
                            cmd.CommandType = CommandType.Text;
                            if (filterkey != "" && rfun.KEYFOREIGN.checkIsNull() != "")
                            {
                                cmd.Parameters.Add(new SqlParameter("@" + rfun.KEYFOREIGN, filterkey));
                            }
                            cmd.Parameters.Add(new SqlParameter("@nums", nums));
                            cmd.Parameters.Add(new SqlParameter("@nume", CommonSystem._itemsofpage));
                            using (var reader = cmd.ExecuteReader())
                            {
                                dt.Load(reader);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        if (connectionState != ConnectionState.Closed)
                        {
                            conn.Close();
                        }
                    }
                    finally
                    {
                        if (connectionState != ConnectionState.Closed)
                        {
                            conn.Close();
                        }
                    }
                    if (dt.Rows.Count > 0)
                    {
                        foreach (DataRow r in dt.Rows)
                        {
                            DataControlCols item = new DataControlCols();
                            item.items = new List <DataControlRow>();
                            foreach (var j in headercol)
                            {
                                DataControlRow i = new DataControlRow();
                                i.namecol  = j.namecol;
                                i.ctype    = "";
                                i.values   = r[j.namecol].ToString();
                                i.viewgrid = j.viewgrid;
                                item.items.Add(i);
                            }
                            item.keyrow = r[rfun.IDKEY].ToString();
                            result.datarows.Add(item);
                        }
                    }
                    return(Ok(result));
                }

                return(Ok(new DataGridModel()));
            }
            catch
            {
                return(Ok(new DataGridModel()));
            }
        }
        public IEnumerable <DataControl> getnewdatatable(DataParnew par)
        {
            try
            {
                dbOAMSEntities db        = new dbOAMSEntities();
                string         tablename = par.Tablename;
                tablename = CryptData.querydecrypt(tablename);
                string ID   = par.id.checkIsNull();
                var    rfun = db.Database.SqlQuery <tbFunction>("select f.* from bnle.tbFunction f where f.MAFUNC = @MAFUNC and KICHTHOAT = 1"
                                                                , new SqlParameter("@MAFUNC", tablename)).FirstOrDefault();
                if (rfun != null)
                {
                    int    numcoll    = rfun.NUMCOL.Value;
                    string widthlabel = "";
                    widthlabel = string.Format("col-md-{0} col-sm-{0} col-xs-3", rfun.WITHDLABEL.Value);
                    var vrs = db.Database.SqlQuery <tbFORMFUNC>("select f.* from bnle.tbFORMFUNC f where f.MAFUNC = @MAFUNC and HIENTHI = 1 order by THUTUNHAP"
                                                                , new SqlParameter("@MAFUNC", tablename)).ToList();
                    List <DataControl> hsc = new List <DataControl>();
                    bool   newrow          = false;
                    string keytype         = "";
                    int    cur             = 0;
                    bool   idkey           = false;
                    for (int i = 0; i < vrs.Count; i++)
                    {
                        if (vrs[i].MATRUONG == rfun.IDKEY)
                        {
                            idkey = true;
                        }
                        DataControl h = new DataControl();
                        h.widthlabel = widthlabel;
                        h.id         = "idvb_" + vrs[i].ID;
                        h.label      = vrs[i].TENTRUONG;
                        h.namecol    = vrs[i].MATRUONG;
                        h.ctype      = vrs[i].KIEUDULIEU;
                        h.width      = string.Format("col-md-{0} col-sm-{0} col-xs-12", vrs[i].WITHDFORM.Value);
                        if (vrs[i].WITHDFORM.Value > 0)
                        {
                            if (cur == 0)
                            {
                                h.viewed = "0";
                                cur      = vrs[i].WITHDFORM.Value + rfun.WITHDLABEL.Value;
                            }
                            else if (vrs[i].WITHDFORM.Value + rfun.WITHDLABEL.Value + cur > 12)
                            {
                                h.viewed = "0";
                                cur      = 0;
                            }
                            else
                            {
                                h.viewed = "1";
                                cur     += vrs[i].WITHDFORM.Value + rfun.WITHDLABEL.Value;
                            }
                        }
                        else
                        {
                            h.width = "0";
                        }
                        h.required = vrs[i].BATBUOC == 1 ? true : false;
                        if (vrs[i].RANGBUOC.checkIsNull() != "")
                        {
                            string wheredir = "";
                            if (vrs[i].TUDIEN.checkIsNull() != "")
                            {
                                wheredir = "where " + vrs[i].TUDIEN;
                            }
                            string sqldir = string.Format("select {0} as [CODE],{1} as [VALUENAME] from {2} {3}",
                                                          vrs[i].KEYFOR, vrs[i].NAMEFOR, vrs[i].RANGBUOC, wheredir);

                            var dirs = db.Database.SqlQuery <DataDirControl>(sqldir).ToList();
                            h.dictionary = dirs;
                        }
                        else
                        {
                            if (vrs[i].TUDIEN.checkIsNull() != "")
                            {
                                var dirs = db.Database.SqlQuery <DataDirControl>("select [CODE], [VALUENAME] from [adm].[tbDanhmuc] where LOAIDM = @LOAIDM"
                                                                                 , new SqlParameter("@LOAIDM", vrs[i].TUDIEN)).ToList();
                                h.dictionary = dirs;
                            }
                            else
                            {
                                h.dictionary = new List <DataDirControl>();
                            }
                        }

                        h.values = vrs[i].MACDINH;
                        if (rfun.IDKEY == vrs[i].MATRUONG)
                        {
                            keytype = h.ctype;
                        }
                        h.disable = false;
                        hsc.Add(h);
                    }
                    if (!idkey)
                    {
                        DataControl h = new DataControl();
                        h.widthlabel = widthlabel;
                        h.id         = "IDKEY";
                        h.label      = rfun.IDKEY;
                        h.namecol    = rfun.IDKEY;
                        h.ctype      = rfun.IDKEY;
                    }
                    if (ID != "")
                    {
                        StringBuilder sqlcom = new StringBuilder("select *");
                        sqlcom.Append(" from " + rfun.TABLENAME + " where " + rfun.IDKEY + " = @" + rfun.IDKEY);
                        var dt              = new DataTable();
                        var conn            = db.Database.Connection;
                        var connectionState = conn.State;
                        try
                        {
                            if (connectionState != ConnectionState.Open)
                            {
                                conn.Open();
                            }
                            using (var cmd = conn.CreateCommand())
                            {
                                cmd.CommandText = sqlcom.ToString();
                                cmd.CommandType = CommandType.Text;
                                switch (keytype)
                                {
                                case "text": cmd.Parameters.Add(new SqlParameter("@" + rfun.IDKEY, ID)); break;

                                case "number": cmd.Parameters.Add(new SqlParameter("@" + rfun.IDKEY, Convert.ToInt32(ID))); break;

                                default: cmd.Parameters.Add(new SqlParameter("@" + rfun.IDKEY, ID)); break;
                                }
                                using (var reader = cmd.ExecuteReader())
                                {
                                    dt.Load(reader);
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            if (connectionState != ConnectionState.Closed)
                            {
                                conn.Close();
                            }
                        }
                        finally
                        {
                            if (connectionState != ConnectionState.Closed)
                            {
                                conn.Close();
                            }
                        }
                        if (dt.Rows.Count > 0)
                        {
                            DataControlCols item = new DataControlCols();
                            item.items = new List <DataControlRow>();
                            foreach (var j in hsc)
                            {
                                j.values  = dt.Rows[0][j.namecol].ToString();
                                j.disable = false;
                                if (rfun.IDKEY == j.namecol)
                                {
                                    j.disable = true;
                                }
                            }
                        }
                    }

                    return(hsc.AsEnumerable());
                }
                return((new List <DataControl>()).AsEnumerable());
            }
            catch
            {
                return((new List <DataControl>()).AsEnumerable());
            }
        }