/// <summary> /// Gets the specified file. /// </summary> /// <param name="request">The request.</param> /// <returns> /// <c>GetFileRequest</c> with an file. /// </returns> public GetFileResponse Get(GetFileRequest request) { var model = repository .AsQueryable <MediaFile>() .Where(media => media.Id == request.FileId && media.Type == Module.MediaManager.Models.MediaType.File) .Select(media => new { Model = new FileModel { Id = media.Id, Version = media.Version, CreatedBy = media.CreatedByUser, CreatedOn = media.CreatedOn, LastModifiedBy = media.ModifiedByUser, LastModifiedOn = media.ModifiedOn, Title = media.Title, Description = media.Description, FileExtension = media.OriginalFileExtension, FileSize = media.Size, IsArchived = media.IsArchived, FolderId = media.Folder != null && !media.Folder.IsDeleted ? media.Folder.Id : (Guid?)null, FolderName = media.Folder != null && !media.Folder.IsDeleted ? media.Folder.Title : null, PublishedOn = media.PublishedOn, OriginalFileName = media.OriginalFileName, OriginalFileExtension = media.OriginalFileExtension, ThumbnailId = media.Image != null && !media.Image.IsDeleted ? media.Image.Id : (Guid?)null, ThumbnailCaption = media.Image != null && !media.Image.IsDeleted ? media.Image.Caption : null, ThumbnailUrl = media.Image != null && !media.Image.IsDeleted ? media.Image.PublicThumbnailUrl : null, FileUrl = media.PublicUrl, IsUploaded = media.IsUploaded, IsTemporary = media.IsTemporary, IsCanceled = media.IsCanceled }, FileUri = media.FileUri, }) .FirstOne(); model.Model.FileUrl = fileService.GetDownloadFileUrl(Module.MediaManager.Models.MediaType.File, model.Model.Id, model.Model.FileUrl); model.Model.ThumbnailUrl = fileUrlResolver.EnsureFullPathUrl(model.Model.ThumbnailUrl); model.Model.FileUrl = fileUrlResolver.EnsureFullPathUrl(model.Model.FileUrl); model.Model.FileUri = model.FileUri.ToString(); IEnumerable <TagModel> tagsFuture; if (request.Data.IncludeTags) { tagsFuture = repository.AsQueryable <MediaTag>(mediaTag => mediaTag.Media.Id == request.FileId && !mediaTag.Tag.IsDeleted) .OrderBy(mediaTag => mediaTag.Tag.Name) .Select(media => new TagModel { Id = media.Tag.Id, Version = media.Tag.Version, CreatedBy = media.Tag.CreatedByUser, CreatedOn = media.Tag.CreatedOn, LastModifiedBy = media.Tag.ModifiedByUser, LastModifiedOn = media.Tag.ModifiedOn, Name = media.Tag.Name }) .ToFuture(); } else { tagsFuture = null; } IEnumerable <AccessRuleModel> accessRulesFuture; if (request.Data.IncludeAccessRules) { accessRulesFuture = (from file in repository.AsQueryable <MediaFile>() from accessRule in file.AccessRules where file.Id == request.FileId orderby accessRule.IsForRole, accessRule.Identity select new AccessRuleModel { AccessLevel = (AccessLevel)(int)accessRule.AccessLevel, Identity = accessRule.Identity, IsForRole = accessRule.IsForRole }) .ToList(); } else { accessRulesFuture = null; } if (request.Data.IncludeCategories) { model.Model.Categories = (from media in repository.AsQueryable <MediaFile>() from category in media.Categories where media.Id == model.Model.Id && !category.IsDeleted select new CategoryNodeModel { Id = category.Category.Id, Version = category.Version, CreatedBy = category.CreatedByUser, CreatedOn = category.CreatedOn, LastModifiedBy = category.ModifiedByUser, LastModifiedOn = category.ModifiedOn, Name = category.Category.Name, CategoryTreeId = category.Category.CategoryTree.Id }).ToList(); } return(new GetFileResponse { Data = model.Model, Tags = tagsFuture != null?tagsFuture.ToList() : null, AccessRules = accessRulesFuture != null?accessRulesFuture.ToList() : null }); }
public GetFileResponse Get(GetFileRequest request) { var model = repository .AsQueryable <MediaFile>() .Where(media => media.Id == request.FileId && media.Type == MediaType.File) .Select(media => new FileModel { Id = media.Id, Version = media.Version, CreatedBy = media.CreatedByUser, CreatedOn = media.CreatedOn, LastModifiedBy = media.ModifiedByUser, LastModifiedOn = media.ModifiedOn, Title = media.Title, Description = media.Description, FileExtension = media.OriginalFileExtension, FileSize = media.Size, FileUrl = fileUrlResolver.EnsureFullPathUrl(media.PublicUrl), IsArchived = media.IsArchived, FolderId = media.Folder != null && !media.Folder.IsDeleted ? media.Folder.Id : (Guid?)null, FolderName = media.Folder != null && !media.Folder.IsDeleted ? media.Folder.Title : null, PublishedOn = media.PublishedOn, OriginalFileName = media.OriginalFileName, OriginalFileExtension = media.OriginalFileExtension, ThumbnailId = media.Image != null && !media.Image.IsDeleted ? media.Image.Id : (Guid?)null, ThumbnailCaption = media.Image != null && !media.Image.IsDeleted ? media.Image.Caption : null, ThumbnailUrl = media.Image != null && !media.Image.IsDeleted ? media.Image.PublicThumbnailUrl : null }) .FirstOne(); model.FileUrl = fileService.GetDownloadFileUrl(MediaType.File, model.Id, model.FileUrl); model.ThumbnailUrl = fileUrlResolver.EnsureFullPathUrl(model.ThumbnailUrl); IList <TagModel> tags; if (request.Data.IncludeTags) { tags = repository.AsQueryable <MediaTag>(mediaTag => mediaTag.Media.Id == request.FileId && !mediaTag.Tag.IsDeleted) .OrderBy(mediaTag => mediaTag.Tag.Name) .Select(media => new TagModel { Id = media.Tag.Id, Version = media.Tag.Version, CreatedBy = media.Tag.CreatedByUser, CreatedOn = media.Tag.CreatedOn, LastModifiedBy = media.Tag.ModifiedByUser, LastModifiedOn = media.Tag.ModifiedOn, Name = media.Tag.Name }) .ToList(); } else { tags = null; } return(new GetFileResponse { Data = model, Tags = tags }); }