private MediaFileViewModel Convert(MediaFile file)
        {
            MediaFileViewModel model;
            bool isProcessing = !file.IsUploaded.HasValue;
            bool isFailed     = file.IsUploaded.HasValue && !file.IsUploaded.Value;

            if (file.Type == MediaType.File)
            {
                model = new MediaFileViewModel();

                if (cmsConfiguration.Security.AccessControlEnabled)
                {
                    SetIsReadOnly(model, ((IAccessSecuredObject)file).AccessRules);
                }
            }
            else if (file.Type == MediaType.Audio)
            {
                model = new MediaAudioViewModel();
            }
            else if (file.Type == MediaType.Video)
            {
                model = new MediaVideoViewModel();
            }
            else if (file.Type == MediaType.Image)
            {
                var imageFile = (MediaImage)file;
                model = new MediaImageViewModel
                {
                    ThumbnailUrl = imageFile.PublicThumbnailUrl,
                    Tooltip      = imageFile.Title
                };
                isProcessing = isProcessing || !imageFile.IsOriginalUploaded.HasValue || !imageFile.IsThumbnailUploaded.HasValue;
                isFailed     = isFailed ||
                               (imageFile.IsOriginalUploaded.HasValue && !imageFile.IsOriginalUploaded.Value) ||
                               (imageFile.IsThumbnailUploaded.HasValue && !imageFile.IsThumbnailUploaded.Value);
            }
            else
            {
                throw new CmsException(string.Format("A file type {0} is not supported.", file.Type));
            }

            model.Id            = file.Id;
            model.Name          = file.Title;
            model.Type          = file.Type;
            model.Version       = file.Version;
            model.ContentType   = MediaContentType.File;
            model.PublicUrl     = fileService.GetDownloadFileUrl(file.Type, file.Id, file.PublicUrl);
            model.FileExtension = file.OriginalFileExtension;
            model.IsProcessing  = isProcessing;
            model.IsFailed      = isFailed;

            return(model);
        }
        /// <summary>
        /// Converts entity to view model.
        /// </summary>
        /// <param name="media">The media.</param>
        /// <returns>Entity converted to view model</returns>
        protected virtual MediaViewModel ToViewModel(Media media)
        {
            var file = media as MediaFile;

            if (file != null)
            {
                var model = new MediaImageViewModel();
                FillMediaFileViewModel(model, file);

                return(model);
            }

            throw new InvalidOperationException("Cannot convert media to media view model. Wrong entity passed.");
        }
        private MediaFileViewModel Convert(MediaFile file)
        {
            MediaFileViewModel model;
            bool isProcessing = !file.IsUploaded.HasValue;
            bool isFailed     = file.IsUploaded.HasValue && !file.IsUploaded.Value;

            if (file.Type == MediaType.File)
            {
                model = new MediaFileViewModel();
            }
            else if (file.Type == MediaType.Audio)
            {
                model = new MediaAudioViewModel();
            }
            else if (file.Type == MediaType.Video)
            {
                model = new MediaVideoViewModel();
            }
            else if (file.Type == MediaType.Image)
            {
                var imageFile = (MediaImage)file;
                model = new MediaImageViewModel {
                    ThumbnailUrl = imageFile.PublicThumbnailUrl,
                    Tooltip      = imageFile.Title
                };
                isProcessing = isProcessing || !imageFile.IsOriginalUploaded.HasValue || !imageFile.IsThumbnailUploaded.HasValue;
                isFailed     = isFailed ||
                               (imageFile.IsOriginalUploaded.HasValue && !imageFile.IsOriginalUploaded.Value) ||
                               (imageFile.IsThumbnailUploaded.HasValue && !imageFile.IsThumbnailUploaded.Value);
            }
            else
            {
                throw new CmsException(string.Format("A file type {0} is not supported.", file.Type));
            }

            model.Id            = file.Id;
            model.Name          = file.Title;
            model.Type          = file.Type;
            model.Version       = file.Version;
            model.ContentType   = MediaContentType.File;
            model.PublicUrl     = file.PublicUrl;
            model.FileExtension = file.OriginalFileExtension;
            model.IsProcessing  = isProcessing;
            model.IsFailed      = isFailed;

            return(model);
        }
        /// <summary>
        /// Creates the image view model.
        /// </summary>
        /// <param name="media">The media.</param>
        /// <returns>Created image view model</returns>
        protected override MediaViewModel ToViewModel(Media media)
        {
            var image = media as MediaImage;

            if (image != null)
            {
                var model = new MediaImageViewModel();
                FillMediaFileViewModel(model, image);

                model.Tooltip      = image.Caption;
                model.ThumbnailUrl = image.PublicThumbnailUrl;
                model.IsProcessing = image.IsUploaded == null || image.IsThumbnailUploaded == null || image.IsOriginalUploaded == null;
                model.IsFailed     = image.IsUploaded == false || image.IsThumbnailUploaded == false || image.IsOriginalUploaded == false;

                return(model);
            }

            throw new InvalidOperationException("Cannot convert image media to image view model. Wrong entity passed.");
        }
        /// <summary>
        /// Creates the image view model.
        /// </summary>
        /// <param name="media">The media.</param>
        /// <returns>Created image view model</returns>
        protected override MediaViewModel ToViewModel(Media media)
        {
            var image = media as MediaImage;

            if (image != null)
            {
                var model = new MediaImageViewModel();
                FillMediaFileViewModel(model, image);

                var dimensionsCalculator = new ImageDimensionsCalculator(image);

                model.Tooltip      = image.Caption;
                model.ThumbnailUrl = FileUrlResolver.EnsureFullPathUrl(image.PublicThumbnailUrl + string.Format("?{0}", DateTime.Now.ToString(MediaManagerModuleDescriptor.HardLoadImageDateTimeFormat)));
                model.IsProcessing = image.IsUploaded == null || image.IsThumbnailUploaded == null || image.IsOriginalUploaded == null;
                model.IsFailed     = image.IsUploaded == false || image.IsThumbnailUploaded == false || image.IsOriginalUploaded == false;
                model.Height       = dimensionsCalculator.ResizedCroppedHeight;
                model.Width        = dimensionsCalculator.ResizedCroppedWidth;

                return(model);
            }

            throw new InvalidOperationException("Cannot convert image media to image view model. Wrong entity passed.");
        }