/// <summary>
        /// @author:duynn
        /// @since:16/06/2019
        /// @description: danh sách phòng ban
        /// </summary>
        /// <returns></returns>
        //[CodeAllowAccess(Code = "DsCCTC")]

        public ActionResult Index()
        {
            AssignUserInfo();
            CCTC_THANHPHANBusiness = Get<CCTC_THANHPHANBusiness>();
            DMLoaiDonViBusiness = Get<DMLoaiDonViBusiness>();
            DM_DANHMUC_DATABusiness = Get<DM_DANHMUC_DATABusiness>();

            CCTC_THANHPHAN_SEARCHBO searchModel = new CCTC_THANHPHAN_SEARCHBO();
            SessionManager.SetValue("CctcThanhPhanSearch", searchModel);

            CoCauToChucIndexModel viewModel = new CoCauToChucIndexModel()
            {
                GroupData = CCTC_THANHPHANBusiness.GetDataByPage(searchModel, currentUser),
                DS_TYPE = DMLoaiDonViBusiness.DSLoaiDonVi(),
                DS_CATEGORY = DM_DANHMUC_DATABusiness.DsByMaNhom("DMCAPPHONGBAN", currentUser.ID)
            };
            #region settings deptId
            int deptId = 0;
            if (currentUser.ListVaiTro.Any(x => x.MA_VAITRO == "QLHT"))
            {
                CCTC_THANHPHAN leaderDept = CCTC_THANHPHANBusiness.Find(currentUser.DM_PHONGBAN_ID.GetValueOrDefault());
                if (leaderDept != null)
                {
                    deptId = leaderDept.PARENT_ID.HasValue ? leaderDept.PARENT_ID.Value : leaderDept.ID;
                }
            }
            else if (currentUser.ListVaiTro.Any(x => x.MA_VAITRO == "QLHT_HUYENUY") || currentUser.ListVaiTro.Any(x => x.MA_VAITRO == "QLHT_XAPHUONG"))
            {

            }
            return View(viewModel);
        }
Пример #2
0
        /// <summary>
        /// @author:duynn
        /// @description: lấy danh sách phòng ban theo trang
        /// @since: 14/06/2019
        /// </summary>
        /// <param name="searchModel">thông tin tìm kiếm</param>
        /// <param name="user">người dùng hiện tại</param>
        /// <param name="pageIndex">thông tin trang hiện tại</param>
        /// <param name="pageSize">số bản ghi trên một trang</param>
        /// <returns></returns>
        public PageListResultBO<CCTC_THANHPHAN_BO> GetDataByPage(CCTC_THANHPHAN_SEARCHBO searchModel,
            UserInfoBO user,
            int pageIndex = 1,
            int pageSize = 20)
        {
            var query = from dept in this.context.CCTC_THANHPHAN
                        join users in this.context.DM_NGUOIDUNG
                        on dept.ID equals users.DM_PHONGBAN_ID
                        into groupUserDepts
                        join deptType in this.context.DM_LOAI_DONVI on dept.TYPE equals deptType.ID
                        into groupDeptType
                        from gDeptType in groupDeptType.DefaultIfEmpty()

                        join deptLevel in this.context.DM_DANHMUC_DATA
                        on dept.CATEGORY equals deptLevel.ID
                        into groupDeptLevel
                        from gDeptLevel in groupDeptLevel.DefaultIfEmpty()
                        select new CCTC_THANHPHAN_BO
                        {
                            ID = dept.ID,
                            CODE = dept.CODE,
                            ITEM_LEVEL = dept.ITEM_LEVEL,
                            NAME = dept.NAME,
                            PARENT_ID = dept.PARENT_ID,
                            TYPE = dept.TYPE,
                            THUTU = dept.THUTU,
                            SoLuongCanBo = groupUserDepts.Count(),
                            TenLoaiDonVi = gDeptType != null ? gDeptType.LOAI : string.Empty,
                            TenCapDonVi = gDeptLevel != null ? gDeptLevel.TEXT : string.Empty
                        };

            int deptId = 0;
            if (user.ListVaiTro.Any(x => x.MA_VAITRO == "QLHT"))
            {
                CCTC_THANHPHAN leaderDept = this.context.CCTC_THANHPHAN.Find(user.DM_PHONGBAN_ID.GetValueOrDefault());
                if (leaderDept != null)
                {
                    deptId = leaderDept.PARENT_ID.HasValue ? leaderDept.PARENT_ID.Value : leaderDept.ID;
                }
            }
            else if (user.ListVaiTro.Any(x => x.MA_VAITRO == "QLHT_HUYENUY") || user.ListVaiTro.Any(x => x.MA_VAITRO == "QLHT_XAPHUONG"))
            {
                if (user.DeptType == 10)
                {
                    deptId = user.DM_PHONGBAN_ID.GetValueOrDefault();
                }
                else
                {
                    deptId = user.DeptParentID.GetValueOrDefault();
                }
            }
            else
            {
                deptId = user.DM_PHONGBAN_ID.GetValueOrDefault();
            }

            //duynn lấy danh sách các phòng ban dưới cấp phòng ban hiện tại
            var tree = this.GetTree(deptId);

            query = query.Where(x => groupChildrenDepts.Contains(x.ID));

            if (searchModel != null)
            {
                if (!string.IsNullOrEmpty(searchModel.QR_MAPHONGBAN))
                {
                    query = query.Where(x => x.CODE.Contains(searchModel.QR_MAPHONGBAN));
                }
                if (!string.IsNullOrEmpty(searchModel.QR_TENPHONGBAN))
                {
                    query = query.Where(x => x.NAME.Contains(searchModel.QR_TENPHONGBAN));

                }
                if (searchModel.QR_LOAIPHONGBAN.HasValue)
                {
                    query = query.Where(x => x.TYPE == searchModel.QR_LOAIPHONGBAN);
                }

                if (searchModel.QR_CAPPHONGBAN.HasValue)
                {
                    query = query.Where(x => x.ITEM_LEVEL == searchModel.QR_CAPPHONGBAN);
                }

                if (!string.IsNullOrEmpty(searchModel.sortQuery))
                {
                    query = query.OrderBy(searchModel.sortQuery);
                }
                else
                {
                    query = query.OrderBy(x => x.ID);
                }
            }
            else
            {
                query = query.OrderBy(x => x.ID);
            }
            var result = new PageListResultBO<CCTC_THANHPHAN_BO>();
            if (pageSize == -1)
            {
                var pagedList = query.ToList();
                result.Count = pagedList.Count;
                result.TotalPage = 1;
                result.ListItem = pagedList;
            }
            else
            {
                var pagedList = query.ToPagedList(pageIndex, pageSize);
                result.Count = pagedList.TotalItemCount;
                result.TotalPage = pagedList.PageCount;
                result.ListItem = pagedList.ToList();
            }
            return result;
        }