private static string BuildDescription(ParcelSyndicationQueryResult parcel, string naamruimte) { if (!parcel.ContainsEvent && !parcel.ContainsObject) { return("No data embedded"); } var content = new SyndicationContent(); if (parcel.ContainsObject) { content.Object = new ParcelSyndicationContent( parcel.ParcelId, naamruimte, parcel.CaPaKey, parcel.LastChangedOn.ToBelgianDateTimeOffset(), parcel.Status.MapToPerceelStatus(), parcel.AddressIds, parcel.IsComplete, parcel.Organisation, parcel.Reason); } if (parcel.ContainsEvent) { var doc = new XmlDocument(); doc.LoadXml(parcel.EventDataAsXml); content.Event = doc.DocumentElement; } return(content.ToXml()); }
public static async Task WriteParcel( this ISyndicationFeedWriter writer, IOptions <ResponseOptions> responseOptions, AtomFormatter formatter, string category, ParcelSyndicationQueryResult parcel) { var item = new SyndicationItem { Id = parcel.Position.ToString(CultureInfo.InvariantCulture), Title = $"{parcel.ChangeType}-{parcel.Position}", Published = parcel.RecordCreatedAt.ToBelgianDateTimeOffset(), LastUpdated = parcel.LastChangedOn.ToBelgianDateTimeOffset(), Description = BuildDescription(parcel, responseOptions.Value.Naamruimte) }; item.AddLink( new SyndicationLink( new Uri($"{responseOptions.Value.Naamruimte}/{parcel.CaPaKey}"), AtomLinkTypes.Related)); item.AddLink( new SyndicationLink( new Uri(string.Format(responseOptions.Value.DetailUrl, parcel.CaPaKey)), AtomLinkTypes.Self)); item.AddLink( new SyndicationLink( new Uri(string.Format($"{responseOptions.Value.DetailUrl}.xml", parcel.CaPaKey)), AtomLinkTypes.Alternate) { MediaType = MediaTypeNames.Application.Xml }); item.AddLink( new SyndicationLink( new Uri(string.Format($"{responseOptions.Value.DetailUrl}.json", parcel.CaPaKey)), AtomLinkTypes.Alternate) { MediaType = MediaTypeNames.Application.Json }); item.AddCategory( new SyndicationCategory(category)); item.AddContributor( new SyndicationPerson( "agentschap Informatie Vlaanderen", "*****@*****.**", AtomContributorTypes.Author)); await writer.Write(item); }