Example #1
0
        public async Task <UploadParamMap> ToParamMapDTO()
        {
            if (ParamMap == null)
            {
                return(new UploadParamMap());
            }

            var paramMap      = new UploadParamMap();
            var memberManager = GlobalServices.ServiceProvider.GetService <UserManager <Member> >();

            if (!string.IsNullOrEmpty(ParamMap.UserName))
            {
                var member = await memberManager.FindByNameAsync(ParamMap.UserName);

                if (member != null)
                {
                    paramMap.UserId = member.Id;
                }
                else
                {
                    paramMap.UserId = System.Guid.NewGuid().ToString();
                }
            }
            return(paramMap);
        }
Example #2
0
        public async Task <IEnumerable <UploadLog> > GetUploadLogs(UploadParamMap paramMap, int skip, int limit)
        {
            var query   = CreateUploadLogQuery(paramMap);
            var myFiles = await query.AsNoTracking().OrderByDescending(a => a.Created).Skip(skip).Take(limit).ToListAsync();

            return(myFiles);
        }
Example #3
0
        private IQueryable <UploadLog> CreateUploadLogQuery(UploadParamMap paramMap)
        {
            var query = DbContext.UploadLogs.AsQueryable();

            if (!string.IsNullOrEmpty(paramMap.UserId))
            {
                query = query.Where(q => q.UserId == paramMap.UserId);
            }
            return(query);
        }
Example #4
0
        public async Task <ApiResponse <PagedResult <MyFileInfo> > > GetMyFiles(string userId, MyFilesPostRequest request)
        {
            using (var scope = GlobalServices.Container.BeginLifetimeScope())
            {
                var repository = scope.Resolve <ICloudSpeedRepository>();
                var paramMap   = new UploadParamMap()
                {
                    UserId = userId
                };
                var uploadLogs = await repository.GetUploadLogs(paramMap, request.Skip, request.Limit);

                var total = await repository.CountUploadLogs(paramMap);

                var myFiles = new List <MyFileInfo>();
                foreach (var uploadLog in uploadLogs)
                {
                    var path     = _uploadSetting.GetStoragePath(uploadLog.DataKey);
                    var fileName = await GetFileName(uploadLog.DataKey);

                    var mimeType = fileName.GetMimeType();
                    var fileInfo = new FileInfo(path);
                    var fileSize = (fileInfo.Exists ? fileInfo.Length : 0).ToFileSize();
                    var fileCid  = await repository.GetFileCid(uploadLog.DataKey);

                    myFiles.Add(new MyFileInfo
                    {
                        FileName = fileName,
                        FileSize = fileSize,
                        Id       = uploadLog.Id,
                        DataCid  = fileCid?.Cid,
                        Created  = uploadLog.Created,
                        Format   = mimeType
                    });
                }
                return(ApiResponse.Ok(request.ToPagedResult(myFiles, total)));
            }
        }
Example #5
0
        public Task <int> CountUploadLogs(UploadParamMap paramMap)
        {
            var query = CreateUploadLogQuery(paramMap);

            return(query.CountAsync());
        }