public MediaResource MakeBackgroundImage(
            string key,
            User createdByUser,
            DateTime createdOn,
            string originalFileName,
            ImageDimensions originalImageDimensions,
            string originalImageMimeType,
            List<ImageCreationTask> imageCreationTasks)
        {
            var mediaResource = new ImageMediaResource(Constants.MediaResourceTypes.Image, createdByUser, createdOn, key, null);
            _documentSession.Store(mediaResource);
            _documentSession.SaveChanges();

            mediaResource.Image.Original = MakeOriginalImageFile(originalImageMimeType, MakeUri(mediaResource, "Original", originalImageMimeType), originalImageDimensions.Width, originalImageDimensions.Height, null, originalFileName, null);
            mediaResource.Image.Small = MakeDerivedMediaResourceFile(MakeUri(mediaResource, "Small", Constants.ImageMimeTypes.Jpeg), ImageDimensions.MakeRectangle(512, 100).Width, ImageDimensions.MakeRectangle(512, 100).Height, imageCreationTasks, "Small", ImageResizeMode.Crop, Constants.ImageMimeTypes.Jpeg);
            mediaResource.Image.Large = MakeDerivedMediaResourceFile(MakeUri(mediaResource, "Large", Constants.ImageMimeTypes.Jpeg), ImageDimensions.MakeRectangle(1024, 200).Width, ImageDimensions.MakeRectangle(1024, 200).Height, imageCreationTasks, "Large", ImageResizeMode.Crop, Constants.ImageMimeTypes.Jpeg);

            _documentSession.Store(mediaResource);
            _documentSession.SaveChanges();

            return mediaResource;
        }
        public MediaResource MakeDefaultAvatarImage(AvatarDefaultType avatarType)
        {
            var mediaResource = new ImageMediaResource(Constants.MediaResourceTypes.Image, null, DateTime.UtcNow, Guid.NewGuid().ToString(), null);
            _documentSession.Store(mediaResource);
            _documentSession.SaveChanges();

            string avatarTypeName = avatarType.ToString().ToLower();
            string uriFormat = "/img/{0}-Square{1}.jpg";

            mediaResource.Image.Original = MakeOriginalImageFile(Constants.ImageMimeTypes.Jpeg, string.Format(uriFormat, avatarTypeName, 400), 400, 400, null, null, null);
            mediaResource.Image.Square50 = MakeDerivedMediaResourceFile(string.Format(uriFormat, avatarTypeName, 100), 100, 100);
            mediaResource.Image.Square100 = MakeDerivedMediaResourceFile(string.Format(uriFormat, avatarTypeName, 200), 200, 200);
            mediaResource.Image.Square200 = MakeDerivedMediaResourceFile(string.Format(uriFormat, avatarTypeName, 400), 400, 400);

            return mediaResource;
        }
        public MediaResource MakeDefaultBackgroundImage(string type)
        {
            var mediaResource = new ImageMediaResource(Constants.MediaResourceTypes.Image, null, DateTime.UtcNow, Guid.NewGuid().ToString(), null);
            _documentSession.Store(mediaResource);
            _documentSession.SaveChanges();

            string uriFormat = "/img/{0}-background-{1}.png";

            mediaResource.Image.Original = MakeOriginalImageFile(Constants.ImageMimeTypes.Png, string.Format(uriFormat, type, "large"), 1024, 200, null, null, null);
            mediaResource.Image.Small = MakeDerivedMediaResourceFile(string.Format(uriFormat, type, "small"), 512, 100);
            mediaResource.Image.Large = MakeDerivedMediaResourceFile(string.Format(uriFormat, type, "large"), 1024, 200);

            return mediaResource;
        }
        public MediaResource MakeContributionImage(
            string key,
            User createdByUser,
            DateTime createdOn,
            string originalFileName,
            ImageDimensions originalImageDimensions,
            long originalSize,
            IDictionary<string, object> originalExifData,
            string originalImageMimeType,
            Dictionary<string, string> metadata,
            List<ImageCreationTask> imageCreationTasks)
        {
            var mediaResource = new ImageMediaResource(Constants.MediaResourceTypes.Image, createdByUser, createdOn, key, metadata);
            _documentSession.Store(mediaResource);
            _documentSession.SaveChanges();

            mediaResource.Image.Original = MakeOriginalImageFile(originalImageMimeType, MakeUri(mediaResource, "Original", originalImageMimeType), originalImageDimensions.Width, originalImageDimensions.Height, originalExifData, originalFileName, originalSize);
            mediaResource.Image.Square50 = MakeDerivedMediaResourceFile(MakeUri(mediaResource, "Square50", Constants.ImageMimeTypes.Jpeg), ImageDimensions.MakeSquare(100).Width, ImageDimensions.MakeSquare(100).Height, imageCreationTasks, "Square50", ImageResizeMode.Crop, Constants.ImageMimeTypes.Jpeg);
            mediaResource.Image.Square100 = MakeDerivedMediaResourceFile(MakeUri(mediaResource, "Square100", Constants.ImageMimeTypes.Jpeg), ImageDimensions.MakeSquare(200).Width, ImageDimensions.MakeSquare(200).Height, imageCreationTasks, "Square100", ImageResizeMode.Crop, Constants.ImageMimeTypes.Jpeg);
            mediaResource.Image.Square200 = MakeDerivedMediaResourceFile(MakeUri(mediaResource, "Square200", Constants.ImageMimeTypes.Jpeg), ImageDimensions.MakeSquare(400).Width, ImageDimensions.MakeSquare(400).Height, imageCreationTasks, "Square200", ImageResizeMode.Crop, Constants.ImageMimeTypes.Jpeg);
            mediaResource.Image.Constrained240 = MakeDerivedMediaResourceFile(MakeUri(mediaResource, "Constrained240", Constants.ImageMimeTypes.Jpeg), ImageDimensions.MakeRectangle(320, 240).Width, ImageDimensions.MakeRectangle(320, 240).Height, imageCreationTasks, "Constrained240", ImageResizeMode.Crop, Constants.ImageMimeTypes.Jpeg);
            mediaResource.Image.Constrained480 = MakeDerivedMediaResourceFile(MakeUri(mediaResource, "Constrained480", Constants.ImageMimeTypes.Jpeg), ImageDimensions.MakeRectangle(640, 480).Width, ImageDimensions.MakeRectangle(640, 480).Height, imageCreationTasks, "Constrained480", ImageResizeMode.Crop, Constants.ImageMimeTypes.Jpeg);
            mediaResource.Image.Constrained600 = MakeDerivedMediaResourceFile(MakeUri(mediaResource, "Constrained600", Constants.ImageMimeTypes.Jpeg), ImageDimensions.MakeRectangle(800, 600).Width, ImageDimensions.MakeRectangle(800, 600).Height, imageCreationTasks, "Constrained600", ImageResizeMode.Crop, Constants.ImageMimeTypes.Jpeg);
            mediaResource.Image.Full640 = MakeDerivedMediaResourceFile(MakeUri(mediaResource, "Full640", Constants.ImageMimeTypes.Jpeg), originalImageDimensions.ResizeWithTargetDimensions(640, 640).Width, originalImageDimensions.ResizeWithTargetDimensions(640, 640).Height, imageCreationTasks, "Full640", ImageResizeMode.Normal, Constants.ImageMimeTypes.Jpeg);
            mediaResource.Image.Full800 = MakeDerivedMediaResourceFile(MakeUri(mediaResource, "Full800", Constants.ImageMimeTypes.Jpeg), originalImageDimensions.ResizeWithTargetDimensions(800, 800).Width, originalImageDimensions.ResizeWithTargetDimensions(800, 800).Height, imageCreationTasks, "Full800", ImageResizeMode.Normal, Constants.ImageMimeTypes.Jpeg);
            mediaResource.Image.Full1024 = MakeDerivedMediaResourceFile(MakeUri(mediaResource, "Full1024", Constants.ImageMimeTypes.Jpeg), originalImageDimensions.ResizeWithTargetDimensions(1024, 1024).Width, originalImageDimensions.ResizeWithTargetDimensions(1024, 1024).Height, imageCreationTasks, "Full1024", ImageResizeMode.Normal, Constants.ImageMimeTypes.Jpeg);

            _documentSession.Store(mediaResource);
            _documentSession.SaveChanges();

            return mediaResource;
        }