コード例 #1
0
        public static List <Dto.DiskFile.List> SelectByParentId(int parentId, string searchText, int diskTypeId = 0, int userId = 0)
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                var  tbDiskType = DiskTypeController.SelectInfo(diskTypeId);
                bool isPublic   = tbDiskType != null && tbDiskType.DiskType == Code.EnumHelper.DiskType.Public;

                if (parentId == 0)
                {
                    var tb = (from t in db.Table <Disk.Entity.tbDiskFolder>()
                              where (isPublic || t.tbSysUser.Id == Code.Common.UserId) &&
                              t.tbDiskFolderParent == null &&
                              !t.DiskFolderName.Equals("公开文件夹") &&
                              (String.IsNullOrEmpty(searchText) || t.DiskFolderName.Contains(searchText))
                              orderby t.No
                              select new Dto.DiskFile.List
                    {
                        Id = t.Id,
                        FileType = "Folder",
                        DiskTypeId = diskTypeId == 0 ? t.tbDiskType.Id : diskTypeId,
                        UserId = userId,
                        FileTitle = t.DiskFolderName,
                        DiskPermit = t.DiskPermit
                    }).ToList();
                    return(tb);
                }
                else
                {
                    var tb = (from t in db.Table <Disk.Entity.tbDiskFolder>()
                              where (isPublic || t.tbSysUser.Id == Code.Common.UserId) &&
                              t.tbDiskFolderParent.Id == parentId &&
                              (String.IsNullOrEmpty(searchText) || t.DiskFolderName.Contains(searchText))
                              orderby t.No
                              select new Dto.DiskFile.List
                    {
                        Id = t.Id,
                        FileType = "Folder",
                        DiskTypeId = diskTypeId == 0 ? t.tbDiskType.Id : diskTypeId,
                        UserId = userId,
                        FileTitle = t.DiskFolderName,
                        DiskPermit = t.DiskPermit
                    }).ToList();
                    return(tb);
                }
            }
        }
コード例 #2
0
        public ActionResult List()
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                var vm = new Models.DiskFile.List();

                var tbDiskType = DiskTypeController.SelectInfo(vm.DiskTypeId);

                #region 文件夹路径
                if (vm.UserId == 0)
                {
                    vm.FolderPath = DiskFolderController.SelectFolderPath(vm.FolderId);
                }
                else
                {
                    if (tbDiskType != null && tbDiskType.DiskType == Code.EnumHelper.DiskType.Public)
                    {
                        var tbSysUser    = db.Set <Sys.Entity.tbSysUser>().Find(vm.UserId);
                        var tbDiskFolder = (from t in db.Table <Disk.Entity.tbDiskFolder>()
                                            where t.DiskFolderName == "教师共享文件夹"
                                            select t).FirstOrDefault();
                        vm.FolderPath = DiskFolderController.SelectFolderPath(tbDiskFolder.Id);
                        vm.FolderPath.Add(new Dto.DiskFolder.Info
                        {
                            DiskFolderName = tbSysUser.UserName,
                            DiskTypeId     = vm.DiskTypeId,
                            UserId         = tbSysUser.Id,
                            ParentId       = 0
                        });
                    }

                    if (vm.FolderId != 0)
                    {
                        vm.FolderPath = vm.FolderPath.Union(DiskFolderController.SelectFolderPath(vm.FolderId, vm.DiskTypeId, vm.UserId)).ToList();
                    }
                }
                #endregion

                #region 文件夹
                if (vm.FolderId == 0)
                {
                    if (vm.DiskTypeId == 0)
                    {
                        // /Disk/DiskFile/List
                        vm.DiskFileList = DiskFolderController.SelectPublicRootFolder();
                        vm.DiskFileList = vm.DiskFileList.Union(DiskFolderController.SelectByParentId(vm.FolderId, vm.SearchText, 0, Code.Common.UserId)).ToList();
                    }

                    if (vm.UserId != 0)
                    {
                        vm.DiskFileList = DiskFolderController.SelectByDiskPermitPublic(vm.UserId, vm.DiskTypeId);
                        vm.DiskFileList = vm.DiskFileList.Union(DiskFolderController.SelectByDiskPermitAuthorize(vm.UserId, vm.DiskTypeId)).ToList();
                    }
                }
                else
                {
                    if (tbDiskType != null && tbDiskType.DiskType == Code.EnumHelper.DiskType.Public)
                    {
                        // 管理员查看全部
                        if (Code.Common.UserType == Code.EnumHelper.SysUserType.Administrator)
                        {
                            vm.DiskFileList = DiskFolderController.SelectPublicFolderByParentId(vm.FolderId);
                        }
                        else
                        {
                            // 学校共享文件夹-共有
                            vm.DiskFileList = DiskFolderController.SelectPublicFolderByParentId(vm.FolderId, Code.EnumHelper.DiskPermit.Public);

                            // 学校共享文件夹-授权
                            var tbDiskFolderAuthorize = DiskFolderController.SelectPublicFolderAuthorizeByParentId(vm.FolderId, Code.EnumHelper.DiskPermit.Public);
                            foreach (Dto.DiskFile.List diskFile in tbDiskFolderAuthorize)
                            {
                                if (!vm.DiskFileList.Any(t => t.FileTitle.Equals(diskFile.FileTitle)))
                                {
                                    vm.DiskFileList.Add(diskFile);
                                }
                            }
                        }

                        var folder = (from t in db.Table <Disk.Entity.tbDiskFolder>()
                                      where t.Id == vm.FolderId
                                      select t).FirstOrDefault();
                        if (folder != null)
                        {
                            if (folder.DiskFolderName.Equals("教师共享文件夹"))
                            {
                                vm.DiskFileList = vm.DiskFileList.Union(DiskFolderController.SelectByPublic(Code.EnumHelper.DiskType.Private, vm.DiskTypeId)).ToList();

                                foreach (Dto.DiskFile.List diskFile in DiskFolderController.SelectByAuthorize(Code.EnumHelper.DiskType.Private, vm.DiskTypeId))
                                {
                                    if (!vm.DiskFileList.Any(t => t.FileTitle.Equals(diskFile.FileTitle)))
                                    {
                                        vm.DiskFileList.Add(diskFile);
                                    }
                                }
                            }
                            else if (!folder.DiskFolderName.Equals("公开文件夹") && !(folder.DiskFolderName.Equals("学校共享文件夹")))
                            {
                                vm.DiskFileList = DiskFolderController.SelectByParentId(vm.FolderId, vm.SearchText, vm.DiskTypeId, vm.UserId);
                            }
                        }
                    }
                    else
                    {
                        vm.DiskFileList = DiskFolderController.SelectByParentId(vm.FolderId, vm.SearchText);
                    }
                }
                #endregion

                #region 文件
                var tbDiskFile = from t in db.Table <Disk.Entity.tbDiskFile>()
                                 select t;
                if (vm.FolderId != 0)
                {
                    tbDiskFile = tbDiskFile.Where(t => t.tbDiskFolder.Id == vm.FolderId);
                }
                else
                {
                    tbDiskFile = tbDiskFile.Where(t => t.tbDiskFolder == null);

                    //if (vm.UserId != 0)
                    //{
                    //    tbDiskFile = tbDiskFile.Where(t => t.tbSysUser.Id == vm.UserId);
                    //}
                    //else
                    //{
                    tbDiskFile = tbDiskFile.Where(t => t.tbSysUser.Id == Code.Common.UserId);
                    //}
                }
                if (!String.IsNullOrWhiteSpace(vm.SearchText))
                {
                    tbDiskFile = tbDiskFile.Where(t => t.FileTitle.Contains(vm.SearchText));
                }

                int diskTypeId = DiskTypeController.SelectByEnumDiskType(Code.EnumHelper.DiskType.Private).Id;

                var tb = (from t in tbDiskFile
                          orderby t.Id descending
                          select new Dto.DiskFile.List
                {
                    Id = t.Id,
                    DiskTypeId = t.tbDiskFolder == null ? diskTypeId : t.tbDiskFolder.tbDiskType.Id,
                    FileType = "File",
                    FileTitle = t.FileTitle,
                    FileLength = t.FileLength,
                    InputDate = t.InputDate,
                    UserId = t.tbSysUser.Id,
                    UserName = t.tbSysUser.UserName
                }).ToList();

                vm.DiskFileList = vm.DiskFileList.Union(tb).ToList();
                #endregion

                #region 文件夹文件权限

                // 管理权限
                vm.AdminFolderIds = DiskFolderController.SelectOwnFolderIdsByUserId(Code.Common.UserId);
                if (Code.Common.UserType == Code.EnumHelper.SysUserType.Administrator)
                {
                    vm.AdminFolderIds = vm.AdminFolderIds.Union(DiskFolderController.SelectDiskPermitPublicFolderIdsByUserId(Code.EnumHelper.DiskType.Public, Code.Common.UserId)).ToList();
                }
                vm.AdminFolderIds = vm.AdminFolderIds.Union(DiskFolderController.SelectDiskPermitPublicFolderIdsByUserId(Code.EnumHelper.DiskType.Private, Code.Common.UserId)).ToList();
                vm.AdminFolderIds = vm.AdminFolderIds.Union(DiskPowerController.SelectAdminFolderIds(Code.Common.UserId)).ToList();

                // 查看权限
                vm.ViewFolderIds = DiskFolderController.SelectOwnFolderIdsByUserId(Code.Common.UserId);
                vm.ViewFolderIds = vm.ViewFolderIds.Union(DiskFolderController.SelectDiskPermitPublicFolderIdsByUserId(Code.EnumHelper.DiskType.Public, Code.Common.UserId)).ToList();
                vm.ViewFolderIds = vm.ViewFolderIds.Union(DiskFolderController.SelectDiskPermitPublicFolderIdsByUserId(Code.EnumHelper.DiskType.Private, Code.Common.UserId)).ToList();
                vm.ViewFolderIds = vm.ViewFolderIds.Union(DiskPowerController.SelectViewFolderIds(Code.Common.UserId)).ToList();

                #endregion

                #region 文件权限
                vm.AdminFileIds = DiskFileController.SelectDescendantsByFolder(vm.AdminFolderIds).Select(t => t.Id).ToList();
                vm.ViewFileIds  = DiskFileController.SelectDescendantsByFolder(vm.ViewFolderIds).Select(t => t.Id).ToList();

                var MyRootFileIds = (from t in db.Table <Disk.Entity.tbDiskFile>()
                                     where t.tbDiskFolder == null &&
                                     t.tbSysUser.Id == Code.Common.UserId
                                     select t.Id).ToList();
                vm.AdminFileIds = vm.AdminFileIds.Union(MyRootFileIds).ToList();
                vm.ViewFileIds  = vm.ViewFileIds.Union(MyRootFileIds).ToList();

                #endregion

                return(View(vm));
            }
        }
コード例 #3
0
        public ActionResult Edit(int id = 0)
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                var vm = new Models.DiskFolder.Edit();

                var tbDiskType = DiskTypeController.SelectInfo(vm.DiskTypeId);
                if (tbDiskType != null && tbDiskType.DiskType == Code.EnumHelper.DiskType.Public)
                {
                    if (Code.Common.UserType != Code.EnumHelper.SysUserType.Administrator)
                    {
                        return(Content("只有管理员才可以新建公开文件夹!"));
                    }
                    else
                    {
                        // 管理员只能新建【学校共享文件夹】的子文件夹
                        var tbDiskFolder = (from t in db.Table <Disk.Entity.tbDiskFolder>()
                                            where t.DiskFolderName.Equals("学校共享文件夹") &&
                                            t.tbDiskType.DiskType == Code.EnumHelper.DiskType.Public
                                            select t).FirstOrDefault();
                        if (tbDiskFolder != null)
                        {
                            List <int> ids = new List <int>();
                            ids.Add(tbDiskFolder.Id);

                            if (!DiskFolderController.SelectDescendants(ids).Select(t => t.Id).Contains(vm.FolderId))
                            {
                                return(Content("只能在学校共享文件夹中新建子文件夹!"));
                            }
                            else
                            {
                                vm.DiskFolderEdit.DiskPermit = Code.EnumHelper.DiskPermit.Public;
                            }
                        }
                    }
                }

                vm.DiskTypeList = Disk.Controllers.DiskTypeController.SelectInfoList();

                if (id != 0)
                {
                    var tb = (from p in db.Table <Disk.Entity.tbDiskFolder>()
                              where p.Id == id
                              select new Dto.DiskFolder.Edit
                    {
                        Id = p.Id,
                        No = p.No,
                        DiskFolderName = p.DiskFolderName,
                        DiskTypeId = p.tbDiskType.Id,
                        DiskPermit = p.DiskPermit
                    }).FirstOrDefault();
                    if (tb != null)
                    {
                        vm.DiskFolderEdit = tb;
                    }
                }
                else
                {
                    vm.DiskFolderEdit.DiskTypeId = (tbDiskType == null || tbDiskType.DiskType == Code.EnumHelper.DiskType.Private)
                        ? vm.DiskTypeList.Where(t => t.DiskType == Code.EnumHelper.DiskType.Private).FirstOrDefault().Id
                        : vm.DiskTypeList.Where(t => t.DiskType == Code.EnumHelper.DiskType.Public).FirstOrDefault().Id;
                }

                return(View(vm));
            }
        }