/// <summary>
        /// Initializes a new instance of a type derived from <see cref="BaseViewModelFromUmbracoBuilder" />.
        /// </summary>
        /// <param name="umbracoContent">Content from Umbraco.</param>
        /// <param name="relatedLinksService">The related links service.</param>
        /// <param name="mediaUrlTransformer">The media URL transformer.</param>
        /// <exception cref="System.ArgumentNullException">umbracoContent
        /// or
        /// mediaUrlTransformer</exception>
        protected BaseViewModelFromUmbracoBuilder(IPublishedContent umbracoContent, IRelatedLinksService relatedLinksService = null, IMediaUrlTransformer mediaUrlTransformer = null)
        {
            if (umbracoContent == null)
            {
                throw new ArgumentNullException(nameof(umbracoContent));
            }

            UmbracoContent      = umbracoContent;
            RelatedLinksService = relatedLinksService;
            MediaUrlTransformer = mediaUrlTransformer;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="CampaignLandingViewModelFromUmbraco"/> class.
        /// </summary>
        /// <param name="umbracoContent">The content.</param>
        /// <param name="relatedLinksService">The related links service.</param>
        /// <param name="mediaUrlTransformer">The media URL transformer.</param>
        /// <exception cref="ArgumentNullException">
        /// </exception>
        public CampaignLandingViewModelFromUmbraco(IPublishedContent umbracoContent, IRelatedLinksService relatedLinksService, IMediaUrlTransformer mediaUrlTransformer)
        {
            if (umbracoContent == null)
            {
                throw new ArgumentNullException(nameof(umbracoContent));
            }
            if (relatedLinksService == null)
            {
                throw new ArgumentNullException(nameof(relatedLinksService));
            }
            if (mediaUrlTransformer == null)
            {
                throw new ArgumentNullException(nameof(mediaUrlTransformer));
            }

            _umbracoContent      = umbracoContent;
            _relatedLinksService = relatedLinksService;
            _mediaUrlTransformer = mediaUrlTransformer;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="GuideStepViewModelFromUmbraco" /> class.
        /// </summary>
        /// <param name="content">The content.</param>
        /// <param name="relatedLinksService">The related links service.</param>
        /// <param name="mediaUrlTransformer">The media URL transformer.</param>
        /// <exception cref="System.ArgumentNullException">content
        /// or
        /// relatedLinksService
        /// or
        /// mediaUrlTransformer</exception>
        public GuideStepViewModelFromUmbraco(IPublishedContent content, IRelatedLinksService relatedLinksService, IMediaUrlTransformer mediaUrlTransformer)
        {
            if (content == null)
            {
                throw new ArgumentNullException(nameof(content));
            }
            if (relatedLinksService == null)
            {
                throw new ArgumentNullException(nameof(relatedLinksService));
            }
            if (mediaUrlTransformer == null)
            {
                throw new ArgumentNullException(nameof(mediaUrlTransformer));
            }

            _content             = content;
            _relatedLinksService = relatedLinksService;
            _mediaUrlTransformer = mediaUrlTransformer;
        }
        /// <summary>
        /// Builds a <see cref="TaskViewModel"/> from Umbraco content
        /// </summary>
        /// <param name="umbracoContent">Content from Umbraco.</param>
        /// <param name="relatedLinksService">The related links service.</param>
        /// <param name="elibraryLinkConverter">The elibrary link converter.</param>
        /// <param name="mediaUrlTransformer">A service to update links to items in the media library</param>
        /// <exception cref="ArgumentNullException">
        /// </exception>
        public TaskViewModelFromUmbraco(IPublishedContent umbracoContent, IRelatedLinksService relatedLinksService, IElibraryProxyLinkConverter elibraryLinkConverter, IMediaUrlTransformer mediaUrlTransformer)
        {
            _umbracoContent        = umbracoContent;
            _relatedLinksService   = relatedLinksService;
            _elibraryLinkConverter = elibraryLinkConverter;
            _mediaUrlTransformer   = mediaUrlTransformer;

            if (umbracoContent == null)
            {
                throw new ArgumentNullException(nameof(umbracoContent));
            }
            if (relatedLinksService == null)
            {
                throw new ArgumentNullException(nameof(relatedLinksService));
            }
            if (elibraryLinkConverter == null)
            {
                throw new ArgumentNullException(nameof(elibraryLinkConverter));
            }
            if (mediaUrlTransformer == null)
            {
                throw new ArgumentNullException(nameof(mediaUrlTransformer));
            }
        }
        /// <summary>
        /// For each related link, create a <see cref="LandingSectionViewModel" />
        /// </summary>
        /// <param name="content">The content.</param>
        /// <param name="relatedLinksService">The related links service.</param>
        /// <returns></returns>
        private static IList <LandingSectionViewModel> BuildLandingLinksViewModelFromUmbracoContent(IPublishedContent content, IRelatedLinksService relatedLinksService)
        {
            var sections = new List <LandingSectionViewModel>()
            {
            };
            var relatedLinks = relatedLinksService.BuildRelatedLinksViewModelFromUmbracoContent(content, "LandingNavigation_Content");

            foreach (var link in relatedLinks)
            {
                var section = new LandingSectionViewModel()
                {
                    Heading = link,
                    Links   = new HtmlLink[0]
                };
                sections.Add(section);
            }
            return(sections);
        }
示例#6
0
        /// <summary>
        /// For each Umbraco Related Links property that has some data, create a <see cref="LandingSectionViewModel" /> with a heading link and list of child links.
        /// </summary>
        /// <param name="content">The content.</param>
        /// <param name="relatedLinksService">The related links service.</param>
        /// <returns></returns>
        private static IList <LandingSectionViewModel> BuildLandingLinksViewModelFromUmbracoContent(IPublishedContent content, IRelatedLinksService relatedLinksService)
        {
            var sections = new List <LandingSectionViewModel>();

            for (var i = 1; i <= 15; i++)
            {
                var relatedLinks = relatedLinksService.BuildRelatedLinksViewModelFromUmbracoContent(content, "links" + i + "_Content");
                if (relatedLinks.Count > 0)
                {
                    var section = new LandingSectionViewModel()
                    {
                        Links = relatedLinks
                    };

                    section.Heading = section.Links[0];
                    section.Links.RemoveAt(0);

                    sections.Add(section);
                }
            }
            return(sections);
        }
示例#7
0
        private static async Task <LandingViewModel> MapUmbracoContentToViewModel(HttpRequestBase request, IPublishedContent content, DateTime?expiryDate, latest.ILatestService latestService, ISocialMediaService socialMediaService, IEastSussex1SpaceService eastSussex1SpaceService, IWebChatSettingsService webChatSettingsService, IRelatedLinksService relatedLinksService, IContentExperimentSettingsService contentExperimentSettingsService, IEscisService escisService, IRatingSettingsProvider ratingSettings, ISkinToApplyService skinService)
        {
            var model = new LandingViewModel();

            model.Navigation.Sections = BuildLandingLinksViewModelFromUmbracoContent(content, relatedLinksService);
            model.Navigation.LandingNavigationLayout = LandingNavigationLayout.ThreeColumn;
            var selectedLayout = content.GetPropertyValue <string>("layout_Content");

            if (!String.IsNullOrEmpty(selectedLayout))
            {
                var selectedOption =
                    umbraco.library.GetPreValueAsString(Int32.Parse(selectedLayout, CultureInfo.InvariantCulture));

                if (selectedOption.ToUpperInvariant().Contains("TWO"))
                {
                    model.Navigation.LandingNavigationLayout = LandingNavigationLayout.TwoColumn;
                }
            }

            // Add common properties to the model
            var modelBuilder = new BaseViewModelBuilder(new EastSussexGovUKTemplateRequest(request, webChatSettingsService: webChatSettingsService));
            await modelBuilder.PopulateBaseViewModel(model, content, contentExperimentSettingsService,
                                                     expiryDate,
                                                     UmbracoContext.Current.InPreviewMode, skinService);

            modelBuilder.PopulateBaseViewModelWithInheritedContent(model, latestService, socialMediaService, eastSussex1SpaceService, escisService, ratingSettings);

            return(model);
        }
        protected override async Task <LocationViewModel> MapUmbracoContentToViewModel(IPublishedContent content, DateTime?expiryDate, latest.ILatestService latestService, ISocialMediaService socialMediaService, IEastSussex1SpaceService eastSussex1SpaceService, IWebChatSettingsService webChatSettingsService, IRelatedLinksService relatedLinksService, IContentExperimentSettingsService contentExperimentSettingsService, IEscisService escisService, IRatingSettingsProvider ratingSettings, IMediaUrlTransformer mediaUrlTransformer, ISkinToApplyService skinService)
        {
            var model = await base.MapUmbracoContentToViewModel(content, expiryDate, latestService, socialMediaService, eastSussex1SpaceService, webChatSettingsService, relatedLinksService, contentExperimentSettingsService, escisService, ratingSettings, mediaUrlTransformer, skinService);

            // Get the types of waste which have been selected for this recycling site
            var recycledTypes = content.GetPropertyValue <IEnumerable <string> >("wasteTypes_Content");

            if (recycledTypes != null)
            {
                ((List <string>)model.WasteTypesRecycled).AddRange(recycledTypes);
            }

            var acceptedTypes = content.GetPropertyValue <IEnumerable <string> >("acceptedWasteTypes_Content");

            if (acceptedTypes != null)
            {
                ((List <string>)model.WasteTypesAccepted).AddRange(acceptedTypes);
            }

            // Get the authority responsible for this site
            var preValueId = content.GetPropertyValue <int>("responsibleAuthority_Content");

            if (preValueId > 0)
            {
                model.ResponsibleAuthority = umbraco.library.GetPreValueAsString(preValueId);
            }

            return(model);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="HomePageViewModel" /> class.
 /// </summary>
 /// <param name="umbracoContent">Content from Umbraco using the 'Home page' document type.</param>
 /// <param name="relatedLinksService">The related links service.</param>
 /// <exception cref="System.ArgumentNullException">umbracoContent
 /// or
 /// mediaUrlTransformer</exception>
 public HomePageViewModelFromUmbraco(IPublishedContent umbracoContent, IRelatedLinksService relatedLinksService) :
     base(umbracoContent, relatedLinksService)
 {
 }
        private PersonViewModel MapUmbracoContentToViewModel(IPublishedContent content, ILatestService latestService, ISocialMediaService socialMediaService, IEastSussex1SpaceService eastSussex1SpaceService, IWebChatSettingsService webChatSettingsService, IRelatedLinksService relatedLinksService, IContentExperimentSettingsService contentExperimentSettingsService, IEscisService escisService, IMediaUrlTransformer mediaUrlTransformer)
        {
            var model = new PersonViewModel
            {
                JobTitle    = content.GetPropertyValue <string>("jobTitle_Content"),
                LeadingText = new HtmlString(mediaUrlTransformer.ParseAndTransformMediaUrlsInHtml(content.GetPropertyValue <string>("leadingText_Content"))),
                Subheading1 = content.GetPropertyValue <string>("subheading1_Content"),
                Content1    = new HtmlString(mediaUrlTransformer.ParseAndTransformMediaUrlsInHtml(content.GetPropertyValue <string>("content1_Content"))),
                Subheading2 = content.GetPropertyValue <string>("subheading2_Content"),
                Content2    = new HtmlString(mediaUrlTransformer.ParseAndTransformMediaUrlsInHtml(content.GetPropertyValue <string>("content2_Content"))),
                Contact     = new HtmlString(mediaUrlTransformer.ParseAndTransformMediaUrlsInHtml(content.GetPropertyValue <string>("contact_Content")))
            };

            model.Metadata.PersonAbout.Name.Titles.Add(content.GetPropertyValue <string>("HonorificTitle_Content"));
            model.Metadata.PersonAbout.Name.GivenNames.Add(content.GetPropertyValue <string>("GivenName_Content"));
            model.Metadata.PersonAbout.Name.FamilyName = content.GetPropertyValue <string>("FamilyName_Content");
            model.Metadata.PersonAbout.Name.Suffixes.Add(content.GetPropertyValue <string>("HonorificSuffix_Content"));
            model.Metadata.PersonAbout.EmailAddresses.Add(content.GetPropertyValue <string>("email_Content"));
            model.Metadata.PersonAbout.TelephoneNumbers.Add(content.GetPropertyValue <string>("phone_Content"));
            model.Metadata.Person = model.Metadata.PersonAbout.Name.ToString();
            if (!String.IsNullOrEmpty(model.JobTitle))
            {
                model.Metadata.Person += ", " + model.JobTitle;
            }

            var relatedLinksGroups = new RelatedLinksModelBuilder().OrganiseAsHeadingsAndSections(relatedLinksService.BuildRelatedLinksViewModelFromUmbracoContent(content, "relatedLinks_Content"));

            foreach (var linkGroup in relatedLinksGroups)
            {
                model.RelatedLinksGroups.Add(linkGroup);
            }

            var imageData = content.GetPropertyValue <IPublishedContent>("photo_Content");

            if (imageData != null)
            {
                model.Photo = new Image()
                {
                    AlternativeText = imageData.Name,
                    ImageUrl        = new Uri(imageData.Url, UriKind.Relative),
                    Width           = imageData.GetPropertyValue <int>("umbracoWidth"),
                    Height          = imageData.GetPropertyValue <int>("umbracoHeight")
                };
                model.Metadata.PageImageUrl = new Uri(Request.Url, model.Photo.ImageUrl).ToString();
            }

            // Add common properties to the model
            var modelBuilder = new BaseViewModelBuilder();

            modelBuilder.PopulateBaseViewModel(model, content, contentExperimentSettingsService, UmbracoContext.Current.InPreviewMode);
            modelBuilder.PopulateBaseViewModelWithInheritedContent(model, latestService, socialMediaService, eastSussex1SpaceService, webChatSettingsService, escisService);

            return(model);
        }
示例#11
0
        protected override LocationViewModel MapUmbracoContentToViewModel(IPublishedContent content, ILatestService latestService, ISocialMediaService socialMediaService, IEastSussex1SpaceService eastSussex1SpaceService, IWebChatSettingsService webChatSettingsService, IRelatedLinksService relatedLinksService, IContentExperimentSettingsService contentExperimentSettingsService, IEscisService escisService, IMediaUrlTransformer mediaUrlTransformer)
        {
            var model = base.MapUmbracoContentToViewModel(content, latestService, socialMediaService, eastSussex1SpaceService, webChatSettingsService, relatedLinksService, contentExperimentSettingsService, escisService, mediaUrlTransformer);

            // Get the types of waste which have been selected for this recycling site
            var recycledTypes = ReadWasteTypesFromProperty(content, "wasteTypes_Content");

            if (recycledTypes != null)
            {
                ((List <string>)model.WasteTypesRecycled).AddRange(recycledTypes);
            }

            var acceptedTypes = ReadWasteTypesFromProperty(content, "acceptedWasteTypes_Content");

            if (acceptedTypes != null)
            {
                ((List <string>)model.WasteTypesAccepted).AddRange(acceptedTypes);
            }

            // Get the authority responsible for this site
            var preValueId = content.GetPropertyValue <int>("responsibleAuthority_Content");

            if (preValueId > 0)
            {
                model.ResponsibleAuthority = umbraco.library.GetPreValueAsString(preValueId);
            }

            return(model);
        }
示例#12
0
        /// <summary>
        /// Maps the Umbraco content to the view model.
        /// </summary>
        /// <param name="content">The content.</param>
        /// <param name="expiryDate">The expiry date.</param>
        /// <param name="latestService">The latest service.</param>
        /// <param name="socialMediaService">The social media service.</param>
        /// <param name="eastSussex1SpaceService">The East Sussex One Space service.</param>
        /// <param name="webChatSettingsService">The web chat settings service.</param>
        /// <param name="relatedLinksService">The related links service.</param>
        /// <param name="contentExperimentSettingsService">The content experiment settings service.</param>
        /// <param name="escisService">The escis service.</param>
        /// <param name="ratingSettings">The rating settings.</param>
        /// <param name="mediaUrlTransformer">The media URL transformer.</param>
        /// <param name="skinService">The skin service.</param>
        /// <returns></returns>
        /// <exception cref="ArgumentNullException">content
        /// or
        /// latestService
        /// or
        /// socialMediaService
        /// or
        /// eastSussex1SpaceService
        /// or
        /// webChatSettingsService
        /// or
        /// relatedLinksService</exception>
        /// <exception cref="System.ArgumentNullException">content
        /// or
        /// latestService
        /// or
        /// socialMediaService
        /// or
        /// eastSussex1SpaceService
        /// or
        /// webChatSettingsService
        /// or
        /// relatedLinksService
        /// or
        /// contentExperimentSettingsService</exception>
        /// <remarks>
        /// Method is virtual so that document types which inherit from the 'Location' type can also inherit and extend the controller
        /// </remarks>
        protected virtual async Task <LocationViewModel> MapUmbracoContentToViewModel(IPublishedContent content, DateTime?expiryDate, latest.ILatestService latestService, ISocialMediaService socialMediaService, IEastSussex1SpaceService eastSussex1SpaceService, IWebChatSettingsService webChatSettingsService, IRelatedLinksService relatedLinksService, IContentExperimentSettingsService contentExperimentSettingsService, IEscisService escisService, IRatingSettingsProvider ratingSettings, IMediaUrlTransformer mediaUrlTransformer, ISkinToApplyService skinService)
        {
            if (content == null)
            {
                throw new ArgumentNullException("content");
            }
            if (latestService == null)
            {
                throw new ArgumentNullException("latestService");
            }
            if (socialMediaService == null)
            {
                throw new ArgumentNullException("socialMediaService");
            }
            if (eastSussex1SpaceService == null)
            {
                throw new ArgumentNullException("eastSussex1SpaceService");
            }
            if (webChatSettingsService == null)
            {
                throw new ArgumentNullException("webChatSettingsService");
            }
            if (relatedLinksService == null)
            {
                throw new ArgumentNullException("relatedLinksService");
            }
            if (contentExperimentSettingsService == null)
            {
                throw new ArgumentNullException("contentExperimentSettingsService");
            }
            if (ratingSettings == null)
            {
                throw new ArgumentNullException(nameof(ratingSettings));
            }
            if (skinService == null)
            {
                throw new ArgumentNullException(nameof(skinService));
            }

            var model = new LocationViewModel
            {
                Content             = new HtmlString(mediaUrlTransformer.ParseAndTransformMediaUrlsInHtml(content.GetPropertyValue <string>("content_Content"))),
                OpeningHoursDetails = new HtmlString(mediaUrlTransformer.ParseAndTransformMediaUrlsInHtml(content.GetPropertyValue <string>("openingHoursDetails_Content"))),
                Tab1Title           = content.GetPropertyValue <string>("tab1title_Content"),
                Tab1Content         = new HtmlString(mediaUrlTransformer.ParseAndTransformMediaUrlsInHtml(content.GetPropertyValue <string>("tab1content_Content"))),
                Tab2Title           = content.GetPropertyValue <string>("tab2title_Content"),
                Tab2Content         = new HtmlString(mediaUrlTransformer.ParseAndTransformMediaUrlsInHtml(content.GetPropertyValue <string>("tab2content_Content"))),
                Tab3Title           = content.GetPropertyValue <string>("tab3title_Content"),
                Tab3Content         = new HtmlString(mediaUrlTransformer.ParseAndTransformMediaUrlsInHtml(content.GetPropertyValue <string>("tab3content_Content"))),
                Location            = content.GetPropertyValue <AddressInfo>("location_Content"),
                Email1Label         = content.GetPropertyValue <string>("email1label_Content"),
                Email2Label         = content.GetPropertyValue <string>("email2label_Content"),
                Email1      = content.GetPropertyValue <string>("email1_Content"),
                Email2      = content.GetPropertyValue <string>("email2_Content"),
                Phone1Label = content.GetPropertyValue <string>("phone1label_Content"),
                Phone2Label = content.GetPropertyValue <string>("phone2label_Content"),
                Phone1      = content.GetPropertyValue <string>("phone1_Content"),
                Phone2      = content.GetPropertyValue <string>("phone2_Content"),
                Fax1Label   = content.GetPropertyValue <string>("fax1label_Content"),
                Fax2Label   = content.GetPropertyValue <string>("fax2label_Content"),
                Fax1        = content.GetPropertyValue <string>("fax1_Content"),
                Fax2        = content.GetPropertyValue <string>("fax2_Content")
            };

            var relatedLinksGroups = new RelatedLinksModelBuilder().OrganiseAsHeadingsAndSections(relatedLinksService.BuildRelatedLinksViewModelFromUmbracoContent(content, "relatedLinks_Content"));

            foreach (var linkGroup in relatedLinksGroups)
            {
                model.RelatedLinksGroups.Add(linkGroup);
            }

            // Opening times
            model.OpeningHours = DeserialiseOpeningHours(content);
            WorkOutRelativeOpeningTimes(model);
            WorkOutNextOpenRelativeTime(model);

            // Photo
            var imageData = content.GetPropertyValue <IPublishedContent>("photo_Content");

            if (imageData != null)
            {
                model.Photo = new Image()
                {
                    AlternativeText = imageData.Name,
                    ImageUrl        = new Uri(imageData.Url, UriKind.Relative),
                    Width           = imageData.GetPropertyValue <int>("umbracoWidth"),
                    Height          = imageData.GetPropertyValue <int>("umbracoHeight")
                };
                model.Metadata.PageImageUrl = new Uri(Request.Url, model.Photo.ImageUrl).ToString();
            }

            // Add common properties to the model
            var modelBuilder = new BaseViewModelBuilder(new EastSussexGovUKTemplateRequest(Request, webChatSettingsService: webChatSettingsService));
            await modelBuilder.PopulateBaseViewModel(model, content, contentExperimentSettingsService,
                                                     expiryDate,
                                                     UmbracoContext.Current.InPreviewMode, skinService);

            modelBuilder.PopulateBaseViewModelWithInheritedContent(model, latestService, socialMediaService, eastSussex1SpaceService, escisService, ratingSettings);

            return(model);
        }
 /// <summary>
 /// Creates a new instance of <see cref="LocationViewModelFromUmbraco"/>
 /// </summary>
 /// <param name="content"></param>
 /// <param name="mediaUrlTransformer"></param>
 /// <param name="relatedLinksService"></param>
 public LocationViewModelFromUmbraco(IPublishedContent content, IMediaUrlTransformer mediaUrlTransformer, IRelatedLinksService relatedLinksService)
 {
     _content             = content ?? throw new ArgumentNullException(nameof(content));
     _mediaUrlTransformer = mediaUrlTransformer ?? throw new ArgumentNullException(nameof(mediaUrlTransformer));
     _relatedLinksService = relatedLinksService ?? throw new ArgumentNullException(nameof(relatedLinksService));
 }
        private static LandingViewModel MapUmbracoContentToViewModel(IPublishedContent content, ILatestService latestService, ISocialMediaService socialMediaService, IEastSussex1SpaceService eastSussex1SpaceService, IWebChatSettingsService webChatSettingsService, IRelatedLinksService relatedLinksService, IContentExperimentSettingsService contentExperimentSettingsService, IEscisService escisService)
        {
            var model = new LandingViewModel();

            model.Navigation.Sections = BuildLandingLinksViewModelFromUmbracoContent(content, relatedLinksService);
            model.Navigation.LandingNavigationLayout = LandingNavigationLayout.ThreeColumn;
            var selectedLayout = content.GetPropertyValue <string>("layout_Content");

            if (!String.IsNullOrEmpty(selectedLayout))
            {
                var selectedOption =
                    umbraco.library.GetPreValueAsString(Int32.Parse(selectedLayout, CultureInfo.InvariantCulture));

                if (selectedOption.ToUpperInvariant().Contains("TWO"))
                {
                    model.Navigation.LandingNavigationLayout = LandingNavigationLayout.TwoColumn;
                }
            }

            // Add common properties to the model
            var modelBuilder = new BaseViewModelBuilder();

            modelBuilder.PopulateBaseViewModel(model, content, contentExperimentSettingsService, UmbracoContext.Current.InPreviewMode);
            modelBuilder.PopulateBaseViewModelWithInheritedContent(model, latestService, socialMediaService, eastSussex1SpaceService, webChatSettingsService, escisService);

            return(model);
        }