public override object ConvertIntermediateToObject(IPublishedElement owner, IPublishedPropertyType propertyType, PropertyCacheLevel cacheLevel, object source, bool preview)
        {
            var baseSource = base.ConvertIntermediateToObject(owner, propertyType, cacheLevel, source, preview);

            if (!IsOnlyImagesDataType(propertyType.DataType))
            {
                return(baseSource);
            }

            var imageType = _publishedModelFactory.MapModelType(ModelType.For(ImageTypeAlias));

            if (!(baseSource is IEnumerable <IPublishedContent> mediaItems))
            {
                return(baseSource != null && baseSource.GetType().Inherits(imageType) ? baseSource : null);
            }

            var images = _publishedModelFactory.CreateModelList(ImageTypeAlias);

            foreach (var mediaItem in mediaItems.Where(mi => mi.GetType().Inherits(imageType)))
            {
                images.Add(mediaItem);
            }

            return(images);
        }
        public override object ConvertIntermediateToObject(IPublishedElement owner, PublishedPropertyType propertyType,
                                                           PropertyCacheLevel cacheLevel, object source, bool preview)
        {
            var isMultiple   = IsMultipleDataType(propertyType.DataType);
            var isOnlyImages = IsOnlyImagesDataType(propertyType.DataType);

            var udis       = (Udi[])source;
            var mediaItems = isOnlyImages
                ? _publishedModelFactory.CreateModelList(ImageTypeAlias)
                : new List <IPublishedContent>();

            if (source == null)
            {
                return(isMultiple ? mediaItems : null);
            }

            if (udis.Any())
            {
                foreach (var udi in udis)
                {
                    var guidUdi = udi as GuidUdi;
                    if (guidUdi == null)
                    {
                        continue;
                    }
                    var item = _publishedSnapshotAccessor.PublishedSnapshot.Media.GetById(guidUdi.Guid);
                    if (item != null)
                    {
                        mediaItems.Add(item);
                    }
                }

                return(isMultiple ? mediaItems : FirstOrDefault(mediaItems));
            }

            return(source);
        }