public ArchivedVenueContract(Venue venue, VenueDiff diff)
        {
            ParamIs.NotNull(() => venue);

            Address            = venue.Address;
            AddressCountryCode = venue.AddressCountryCode;
            Coordinates        = new OptionalGeoPointContract(venue.Coordinates);
            Description        = venue.Description;
            Id             = venue.Id;
            Names          = diff.IncludeNames ? venue.Names.Names.Select(n => new LocalizedStringContract(n)).ToArray() : null;
            TranslatedName = new ArchivedTranslatedStringContract(venue.TranslatedName);
            WebLinks       = diff.IncludeWebLinks ? venue.WebLinks.Links.Select(l => new ArchivedWebLinkContract(l)).ToArray() : null;
        }
        public VenueContract(Venue venue, ContentLanguagePreference languagePreference, bool includeLinks = false)
        {
            ParamIs.NotNull(() => venue);

            AdditionalNames    = venue.Names.GetAdditionalNamesStringForLanguage(languagePreference);
            Address            = venue.Address;
            AddressCountryCode = venue.AddressCountryCode;
            Coordinates        = new OptionalGeoPointContract(venue.Coordinates);
            Deleted            = venue.Deleted;
            Description        = venue.Description;
            Id      = venue.Id;
            Name    = venue.TranslatedName[languagePreference];
            Status  = venue.Status;
            Version = venue.Version;

            if (includeLinks)
            {
                WebLinks = venue.WebLinks.Links.Select(w => new WebLinkContract(w)).OrderBy(w => w.DescriptionOrUrl).ToArray();
            }
        }
        public VenueForApiContract(Venue venue, ContentLanguagePreference languagePreference, VenueOptionalFields fields)
        {
            ParamIs.NotNull(() => venue);

            Id                 = venue.Id;
            Address            = venue.Address;
            AddressCountryCode = venue.AddressCountryCode;
            Coordinates        = new OptionalGeoPointContract(venue.Coordinates);
            Deleted            = venue.Deleted;
            Name               = venue.TranslatedName[languagePreference];
            Status             = venue.Status;
            Version            = venue.Version;

            if (fields.HasFlag(VenueOptionalFields.AdditionalNames))
            {
                AdditionalNames = venue.Names.GetAdditionalNamesStringForLanguage(languagePreference);
            }

            if (fields.HasFlag(VenueOptionalFields.Description))
            {
                Description = venue.Description;
            }

            if (fields.HasFlag(VenueOptionalFields.Events))
            {
                Events = venue.Events.OrderBy(e => e.SeriesNumber).ThenBy(e => e.Date.DateTime).Select(e => new ReleaseEventContract(e, languagePreference)).ToArray();
            }

            if (fields.HasFlag(VenueOptionalFields.Names))
            {
                Names = venue.Names.Select(n => new LocalizedStringContract(n)).ToArray();
            }

            if (fields.HasFlag(VenueOptionalFields.WebLinks))
            {
                WebLinks = venue.WebLinks.Links.Select(w => new WebLinkForApiContract(w, WebLinkOptionalFields.DescriptionOrUrl)).ToArray();
            }
        }
 public EmbedGoogleMapsViewModel(OptionalGeoPointContract coordinates)
 {
     Coordinates = coordinates;
 }