public virtual PageListDto <FileInfoDto> GetPageList(FileInfoPageParamDto vm)
        {
            PageListDto <FileInfoDto> result = null;

            if (vm != null && this.Client.IsLogin)
            {
                result = this.Client.Request <PageListDto <FileInfoDto>, FileInfoPageParamDto>(MsgCmd.GetFileInfoPageList, vm);
            }

            return(result);
        }
        public ActionResult GetPageList(FileInfoPageParamDto vm)
        {
            if (vm != null && vm.Index > 0 && vm.Size > 0)
            {
                var fileInfoService            = this.GetService <IFileInfoService>();
                PageListDto <FileInfoDto> data = fileInfoService.GetPageList(vm);

                return(Success(data));
            }

            return(Error());
        }
示例#3
0
        public virtual PageListDto <FileInfoDto> GetPageList(FileInfoPageParamDto vm)
        {
            var fileInfoRepository = this.GetRepository <IFileInfoRepository>();

            return(fileInfoRepository.GetPageList(vm));
        }
        private void DownloadLocal(FileInfoDto m, string loaclDir)
        {
            if (m == null || m.Type == (int)FileInfoType.None)
            {
                return;
            }

            using (var client = IocUtils.Get <IFileInfoService>(new object[] { MainForm.Current.FileClient }))
            {
                Queue <FileInfoDto> queue = new Queue <FileInfoDto>();
                queue.Enqueue(m);
                string relDir = m.Directory;
                while (queue.Count > 0 && !this.isStop)
                {
                    FileInfoDto item     = queue.Dequeue();
                    string      dir      = Utils.Combine(loaclDir, Utils.GetRelative(item.Directory, relDir));
                    string      fullname = Utils.Combine(dir, item.Name);
                    string      remofull = Utils.Combine(item.Directory, item.Name);
                    if (item.Type == FileInfoType.Directory)
                    {
                        MainForm.Current.SetStatusText("下载目录:" + remofull);
                        if (!Directory.Exists(fullname))
                        {
                            Directory.CreateDirectory(fullname);
                            Directory.SetCreationTime(fullname, item.CreationTime);
                            Directory.SetLastAccessTime(fullname, item.LastWriteTime);
                        }
                        FileInfoPageParamDto param = new FileInfoPageParamDto()
                        {
                            Index    = 1,
                            Size     = 50,
                            ParentId = item.Id
                        };
                        var page = client.GetPageList(param);
                        int pos  = 0;
                        while (page != null && pos < page.TotalCount && !this.isStop)
                        {
                            if (page.List != null && page.List.Count > 0)
                            {
                                page.List.ForEach(q => { queue.Enqueue(q); pos++; });
                            }
                            param.Index = param.Index + 1;
                            page        = client.GetPageList(param);
                        }
                    }
                    else if (item.Type == FileInfoType.File)
                    {
                        string status             = "";
                        FilePositionCallback call = (len, pos) =>
                        {
                            string s = string.Format("下载文件: {0} ({1}/{2})", remofull, Utils.ToAutoUnit(pos), Utils.ToAutoUnit(len));
                            if (status != s)
                            {
                                status = s;
                                MainForm.Current.SetStatusText(status);
                            }

                            return(!this.isStop);
                        };
                        client.GetFile(item, dir, item.Name, call);
                    }
                }
            }

            MainForm.Current.SetStatusText("");
        }
 private void GetServerList()
 {
     this.SetEnabled(false);
     object[] param = new object[] {
         this.dropDownList_ServerFileInfoType.SelectedValue,
         this.txt_ServerKeyword.Text.Trim(),
         this.ucPageFooter_Server.PageIndex,
         this.ucPageFooter_Server.PageSize
     };
     System.Threading.ThreadPool.QueueUserWorkItem((o) =>
     {
         object[] _param   = o as object[];
         FileInfoType type = (FileInfoType)_param[0];
         string key        = _param[1] as string;
         using (var fileclient = IocUtils.Get <IFileInfoService>(new object[] { MainForm.Current.FileClient }))
         {
             var vm = new FileInfoPageParamDto()
             {
                 Index   = (int)_param[2],
                 Size    = (int)_param[3],
                 Type    = type,
                 Keyword = key
             };
             if (this.ServerPath != null)
             {
                 vm.ParentId = this.ServerPath.Id;
             }
             var page = fileclient.GetPageList(vm);
             this.Sync.Post((obj) => {
                 var p = obj as PageListDto <FileInfoDto>;
                 List <FileInfoDto> list = new List <FileInfoDto>();
                 if (this.ServerPath != null)
                 {
                     list.Add(new FileInfoDto()
                     {
                         Type      = (int)FileInfoType.None,
                         Name      = "...",
                         Directory = this.LocalPath,
                         Key       = Guid.NewGuid().ToString("n")
                     });
                 }
                 if (p != null && p.List != null && p.List.Count > 0)
                 {
                     list.AddRange(p.List);
                 }
                 var l = this.serverList;
                 this.listView_Server.BeginUpdate();
                 this.serverList = list;
                 this.listView_Server.VirtualListSize = this.serverList.Count;
                 this.listView_Server.EndUpdate();
                 l.Clear();
                 if (p != null)
                 {
                     this.ucPageFooter_Server.SetPageIndex(p.Index, p.TotalCount);
                 }
                 else
                 {
                     this.ucPageFooter_Server.SetPageIndex(1, 0);
                 }
                 this.SetEnabled(true);
             }, page);
         }
     }, param);
 }
        public virtual PageListDto <FileInfoDto> GetPageList(FileInfoPageParamDto vm)
        {
            PageListDto <FileInfoDto> page = new PageListDto <FileInfoDto>();

            using (var db = this.CreateDbContext())
            {
                var query = from q in db.FileInfo
                            where q.IsDelete == false && q.ParentId == vm.ParentId
                            select new FileInfoDto
                {
                    Id            = q.Id,
                    ParentId      = q.ParentId,
                    Type          = q.Type,
                    Directory     = q.Directory,
                    Name          = q.Name,
                    Length        = q.Length,
                    CreationTime  = q.CreationTime,
                    LastWriteTime = q.LastWriteTime,
                    Key           = q.Key,
                    UpdateTime    = q.UpdateTime,
                    IsDelete      = q.IsDelete,
                };

                #region where
                if (vm.Type != FileInfoType.None)
                {
                    query = query.Where(q => q.Type == vm.Type);
                }
                if (vm.BeginCreateTime.HasValue)
                {
                    query = query.Where(q => q.CreationTime >= vm.BeginCreateTime.Value);
                }
                if (vm.EndCreateTime.HasValue)
                {
                    query = query.Where(q => q.CreationTime < vm.EndCreateTime.Value.AddSeconds(1));
                }
                if (vm.BeginLastWriteTime.HasValue)
                {
                    query = query.Where(q => q.LastWriteTime >= vm.BeginLastWriteTime.Value);
                }
                if (vm.EndLastWriteTime.HasValue)
                {
                    query = query.Where(q => q.LastWriteTime < vm.EndLastWriteTime.Value.AddSeconds(1));
                }
                if (!string.IsNullOrEmpty(vm.Keyword))
                {
                    query = query.Where(q => q.Name.Contains(vm.Keyword.ToLower()));
                }
                #endregion

                page.TotalCount = query.Count();

                #region Orderby
                switch (vm.Orderby)
                {
                case "Type":
                    query = vm.IsDesc ? query.OrderByDescending(q => q.Type) : query.OrderBy(q => q.Type);
                    break;

                case "Name":
                    query = vm.IsDesc ? query.OrderByDescending(q => q.Name) : query.OrderBy(q => q.Name);
                    break;

                case "Length":
                    query = vm.IsDesc ? query.OrderByDescending(q => q.Length) : query.OrderBy(q => q.Length);
                    break;

                case "CreationTime":
                    query = vm.IsDesc ? query.OrderByDescending(q => q.CreationTime) : query.OrderBy(q => q.CreationTime);
                    break;

                case "LastWriteTime":
                    query = vm.IsDesc ? query.OrderByDescending(q => q.LastWriteTime) : query.OrderBy(q => q.LastWriteTime);
                    break;

                default:
                    query = from q in query orderby q.Type, q.Name select q;
                    break;
                }
                #endregion

                this.GetPage(page, query, vm.Index, vm.Size);
            }

            return(page);
        }