public PageListResultBO <THUMUC_LUUTRU_BO> GetDataByPage(THUMUC_LUUTRU_SEARCHBO searchModel, int page, int limit)
        {
            var result = from thumuc in this.context.THUMUC_LUUTRU
                         join donvi in context.CCTC_THANHPHAN
                         on thumuc.DONVI_ID equals donvi.ID into group1
                         from g1 in group1.DefaultIfEmpty()
                         join C1 in context.DM_NGUOIDUNG
                         on thumuc.USER_ID equals C1.ID
                         into group2
                         from g2 in group2.DefaultIfEmpty()
                         join A2 in context.THUMUC_LUUTRU
                         on thumuc.PARENT_ID equals A2.ID
                         into group3
                         from g3 in group3.DefaultIfEmpty()
                         where
                         //(searchModel.FOLDER_ID.HasValue ? (thumuc.PARENT_ID.HasValue && thumuc.PARENT_ID.Value == searchModel.FOLDER_ID) :
                         //((thumuc.PARENT_ID.HasValue && thumuc.PARENT_ID.Value == 0) || (!thumuc.PARENT_ID.HasValue)))
                         ((thumuc.IS_DELETE.HasValue && !thumuc.IS_DELETE.Value) || (!thumuc.IS_DELETE.HasValue))
                         select new THUMUC_LUUTRU_BO
            {
                ID              = thumuc.ID,
                PARENT_ID       = thumuc.PARENT_ID,
                TEN_NGUOITAO    = g2.HOTEN,
                TENTHUMUC       = thumuc.TENTHUMUC,
                USER_ID         = thumuc.USER_ID,
                THUMUCCHA       = g3.TENTHUMUC,
                NGAYTAO         = thumuc.NGAYTAO,
                IS_DELETE       = thumuc.IS_DELETE.Value,
                NAM             = thumuc.NAM,
                DONVI_ID        = thumuc.DONVI_ID,
                IS_THUMUC       = true,
                TEN_DONVI       = g1.NAME,
                CLASS           = thumuc.CLASS,
                PRIOVITY        = thumuc.PRIOVITY,
                ACCESS_MODIFIER = thumuc.ACCESS_MODIFIER,
                IS_FIXED        = thumuc.IS_FIXED,
                NGAYXOA         = thumuc.NGAYXOA,
                PERMISSION      = thumuc.PERMISSION,
                SLTHUMUC        = 0,
                THUMUC_AO       = thumuc.THUMUC_AO
            };

            if (searchModel != null)
            {
                if (searchModel.USER_ID > 0)
                {
                    result = result.Where(x => x.USER_ID == searchModel.USER_ID);
                }
                if (searchModel.FOLDER_ID.HasValue && searchModel.FOLDER_ID.Value > 0)
                {
                    result = result.Where(x => (x.PARENT_ID.HasValue && x.PARENT_ID.Value == searchModel.FOLDER_ID));
                }
                else
                {
                    result = result.Where(x => (x.PARENT_ID.HasValue && x.PARENT_ID.Value == 0) || (!x.PARENT_ID.HasValue));
                    result = result.OrderBy(x => x.PRIOVITY);
                }
                result = result.OrderBy(x => x.TENTHUMUC);
                if (!string.IsNullOrEmpty(searchModel.TEN_THUMUC))
                {
                    result = result.Where(x => x.TENTHUMUC.ToLower().Contains(searchModel.TEN_THUMUC.ToLower()));
                }
                if (searchModel.FOLDER_PERMISSION.HasValue)
                {
                    result = result.Where(x => x.PERMISSION.HasValue && x.PERMISSION.Value == searchModel.FOLDER_PERMISSION);
                }
                if (searchModel.ACCESS_MODIFIER.HasValue)
                {
                    result = result.Where(x => x.ACCESS_MODIFIER.HasValue && x.ACCESS_MODIFIER.Value == searchModel.ACCESS_MODIFIER);
                }
            }
            else
            {
                result = result.Where(x => (x.PARENT_ID.HasValue && x.PARENT_ID.Value == 0) || (!x.PARENT_ID.HasValue));
                result = result.OrderBy(x => x.PRIOVITY);
            }
            var resultmodel = new PageListResultBO <THUMUC_LUUTRU_BO>();

            if (limit == -1)
            {
                var dataPageList = result.ToList();
                resultmodel.Count     = dataPageList.Count;
                resultmodel.TotalPage = 1;
                resultmodel.ListItem  = dataPageList;
            }
            else
            {
                var dataPageList = result.ToPagedList(page, limit);
                resultmodel.Count     = dataPageList.TotalItemCount;
                resultmodel.TotalPage = dataPageList.PageCount;
                resultmodel.ListItem  = dataPageList.ToList();
            }
            return(resultmodel);
        }
        public PageListResultBO <THUMUC_LUUTRU_BO> GetFileByPage(THUMUC_LUUTRU_SEARCHBO searchModel, int page, int limit, string TENDONVI, THUMUC_LUUTRU ThuMuc)
        {
            var result = from tailieu in this.context.TAILIEUDINHKEM
                         //join donvi in context.CCTC_THANHPHAN
                         // on tailieu.DONVI_ID equals donvi.ID into group1
                         //from g1 in group1.DefaultIfEmpty()
                         join C1 in context.DM_NGUOIDUNG
                         on tailieu.USER_ID equals C1.ID
                         into group2
                         from g2 in group2.DefaultIfEmpty()
                         where
                         ((tailieu.IS_DELETE.HasValue && !tailieu.IS_DELETE.Value) || (!tailieu.IS_DELETE.HasValue))
                         select new THUMUC_LUUTRU_BO
            {
                TENTHUMUC       = tailieu.TENTAILIEU,
                SLTHUMUC        = 0,
                ID              = (long)tailieu.TAILIEU_ID,
                NGAYTAO         = tailieu.NGAYTAO,
                IS_THUMUC       = false,
                THUMUCCHA       = tailieu.DINHDANG_FILE,
                TEN_NGUOITAO    = g2.HOTEN,
                TEN_DONVI       = TENDONVI,
                DONVI_ID        = tailieu.IS_PHEDUYET,
                USER_ID         = tailieu.USER_ID,
                ACCESS_MODIFIER = ThuMuc.ACCESS_MODIFIER,
                PERMISSION      = ThuMuc.PERMISSION,
                PARENT_ID       = tailieu.FOLDER_ID
            };

            if (searchModel != null)
            {
                if (searchModel.USER_ID > 0)
                {
                    result = result.Where(x => x.USER_ID == searchModel.USER_ID);
                }
                if (searchModel.FOLDER_ID.HasValue && searchModel.FOLDER_ID.Value > 0)
                {
                    result = result.Where(x => (x.PARENT_ID.HasValue && x.PARENT_ID.Value == searchModel.FOLDER_ID));
                }
                else
                {
                    result = result.Where(x => (x.PARENT_ID.HasValue && x.PARENT_ID.Value == 0) || (!x.PARENT_ID.HasValue));
                }
                result = result.OrderBy(x => x.TENTHUMUC);
                if (!string.IsNullOrEmpty(searchModel.TEN_THUMUC))
                {
                    result = result.Where(x => x.TENTHUMUC.ToLower().Contains(searchModel.TEN_THUMUC.ToLower()));
                }
                if (searchModel.FOLDER_PERMISSION.HasValue)
                {
                    result = result.Where(x => x.PERMISSION.HasValue && x.PERMISSION.Value == searchModel.FOLDER_PERMISSION);
                }
                if (searchModel.ACCESS_MODIFIER.HasValue)
                {
                    result = result.Where(x => x.ACCESS_MODIFIER.HasValue && x.ACCESS_MODIFIER.Value == searchModel.ACCESS_MODIFIER);
                }
            }
            else
            {
                result = result.Where(x => (x.PARENT_ID.HasValue && x.PARENT_ID.Value == 0) || (!x.PARENT_ID.HasValue));
                result = result.OrderBy(x => x.PRIOVITY);
            }
            var resultmodel = new PageListResultBO <THUMUC_LUUTRU_BO>();

            if (limit == -1)
            {
                var dataPageList = result.ToList();
                resultmodel.Count     = dataPageList.Count;
                resultmodel.TotalPage = 1;
                resultmodel.ListItem  = dataPageList;
            }
            else
            {
                var dataPageList = result.ToPagedList(page, limit);
                resultmodel.Count     = dataPageList.TotalItemCount;
                resultmodel.TotalPage = dataPageList.PageCount;
                resultmodel.ListItem  = dataPageList.ToList();
            }
            return(resultmodel);
        }