public ActionResult GetSlideData(int id)
        {
            var contentReference = new ContentReference(id);

            if (contentReference == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            if (id == 0)
            {
                return(new JsonDataResult()
                {
                    ContentType = "application/json",
                    Data = new SimpleImageModel()
                    {
                        Url = "https://assets3.thrillist.com/v1/image/2546883/size/tmg-article_tall.jpg",
                        Text = "Some text that caused this image"
                    },
                    JsonRequestBehavior = JsonRequestBehavior.AllowGet
                });
            }

            var contentLoader        = ServiceLocator.Current.GetInstance <ContentLoader>();
            var contentLoaderWrapper = ServiceLocator.Current.GetInstance <ContentLoaderWrapper>();
            var images = contentLoader.GetChildren <ImageModel>(contentReference);

            var          clickerPage      = contentLoaderWrapper.FindPagesOfType <ClickerPage>(ContentReference.StartPage, false).FirstOrDefault();
            var          latestSensorData = contentLoaderWrapper.FindPagesOfType <StupidClickerModel>(clickerPage?.ContentLink, false).FirstOrDefault();
            ClickerModel clickerModel     = null;

            if (latestSensorData != null)
            {
                clickerModel = new ClickerModel(latestSensorData);
            }


            SimpleImageModel image = null;

            if (images != null && images.Any())
            {
                var firstImage = images.First();

                image = new SimpleImageModel()
                {
                    Url          = firstImage.Url,
                    Text         = firstImage.Text,
                    ClickerModel = clickerModel
                };
            }


            return(new JsonDataResult()
            {
                ContentType = "application/json",
                Data = image,
                JsonRequestBehavior = JsonRequestBehavior.AllowGet
            });
        }
        public async Task <ActionResult> UploadSlideData([FromBody] SimpleImageModel model)
        {
            if (model == null || model.Id == 0)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            var contentRepository    = ServiceLocator.Current.GetInstance <IContentRepository>();
            var contentLoaderWrapper = ServiceLocator.Current.GetInstance <ContentLoaderWrapper>();

            var reference    = new ContentReference(model.Id);
            var presentation = contentLoaderWrapper.GetPageFromReference <PresentationModel>(reference);


            var images   = contentRepository.GetChildren <ImageModel>(reference);
            var prevText = images.FirstOrDefault()?.Text ?? "";


            if (presentation != null)
            {
                var imageList = await ImageProvider.GetImage(model.Text, GetRandomWord(), prevText) as ImageList;

                if (imageList == null)
                {
                    throw new HttpResponseException(HttpStatusCode.InternalServerError);
                }

                var imageModel = contentRepository.GetDefault <ImageModel>(presentation.ContentLink);
                imageModel.PageName = "New imagemodel number" + new Random().Next();
                imageModel.Text     = model.Text;
                imageModel.Url      = imageList?.Slides?.FirstOrDefault().Url;

                // Need AccessLevel.NoAccess to get permission to create and save this new page.
                contentRepository.Save(imageModel, SaveAction.Publish, AccessLevel.NoAccess);

                // Just changing the page name to contain its ContentLink ID, to make it more clear in the CMS
                imageModel.PageName = "Imagemodel nr. " + imageModel.ContentLink.ID;
                contentRepository.Save(imageModel, SaveAction.Publish, AccessLevel.NoAccess);

                throw new HttpResponseException(HttpStatusCode.Accepted);
            }

            throw new HttpResponseException(HttpStatusCode.BadRequest);
        }