public override BaseResource[] TransformSource(XDocument doc) { Member member = new Member(); XElement seatIncumbencyElement = doc.Element(atom + "entry") .Element(atom + "content") .Element(m + "properties"); ParliamentaryIncumbency incumbency = new ParliamentaryIncumbency(); incumbency.ParliamentaryIncumbencyStartDate = seatIncumbencyElement.Element(d + "StartDate").GetDate(); incumbency.ParliamentaryIncumbencyEndDate = seatIncumbencyElement.Element(d + "EndDate").GetDate(); string memberId = seatIncumbencyElement.Element(d + "Member_Id").GetText(); Uri memberUri = IdRetrieval.GetSubject("memberMnisId", memberId, false, logger); if (memberUri == null) { logger.Warning($"No member found for {memberId}"); return(null); } incumbency.ParliamentaryIncumbencyHasMember = new Member() { Id = memberUri }; incumbency.CommonsSeatIncumbencyMnisId = seatIncumbencyElement.Element(d + "MemberConstituency_Id").GetText(); ParliamentPeriod parliamentPeriod = generateSeatIncumbencyParliamentPeriod(incumbency.ParliamentaryIncumbencyStartDate.Value, incumbency.ParliamentaryIncumbencyEndDate); if (parliamentPeriod != null) { incumbency.SeatIncumbencyHasParliamentPeriod = new ParliamentPeriod[] { parliamentPeriod } } ; string constituencyId = seatIncumbencyElement.Element(d + "Constituency_Id").GetText(); string houseSeatCommand = @" construct { ?id a parl:HouseSeat. } where { ?id parl:houseSeatHasConstituencyGroup ?houseSeatHasConstituencyGroup. ?houseSeatHasConstituencyGroup parl:constituencyGroupMnisId @constituencyGroupMnisId. }"; SparqlParameterizedString seatSparql = new SparqlParameterizedString(houseSeatCommand); seatSparql.Namespaces.AddNamespace("parl", new Uri(schemaNamespace)); seatSparql.SetLiteral("constituencyGroupMnisId", constituencyId); Uri houseSeatUri = IdRetrieval.GetSubject(seatSparql.ToString(), false, logger); if (houseSeatUri != null) { incumbency.SeatIncumbencyHasHouseSeat = new HouseSeat() { Id = houseSeatUri } } ; return(new BaseResource[] { incumbency }); }
private ParliamentaryIncumbency generateIncumbency(XElement contactPointElement) { ParliamentaryIncumbency incumbency = null; string incumbencyCommand = @" construct { ?id a parl:ParliamentaryIncumbency. } where { ?id parl:parliamentaryIncumbencyHasMember ?parliamentaryIncumbencyHasMember; parl:parliamentaryIncumbencyStartDate ?parliamentaryIncumbencyStartDate. ?parliamentaryIncumbencyHasMember parl:memberMnisId @memberMnisId. } order by desc(?parliamentaryIncumbencyStartDate) limit 1"; Uri incumbencyUri; string mnisId = contactPointElement.Element(d + "Member_Id").GetText(); if (string.IsNullOrWhiteSpace(mnisId)) { logger.Warning("No member info found"); return(null); } SparqlParameterizedString incumbencySparql = new SparqlParameterizedString(incumbencyCommand); incumbencySparql.Namespaces.AddNamespace("parl", new Uri(schemaNamespace)); incumbencySparql.SetLiteral("memberMnisId", mnisId); incumbencyUri = IdRetrieval.GetSubject(incumbencySparql.ToString(), false, logger); if (incumbencyUri != null) { incumbency = new ParliamentaryIncumbency() { Id = incumbencyUri } } ; else { logger.Verbose("No contact found"); } return(incumbency); }
public override BaseResource[] TransformSource(XDocument doc) { MnisContactPoint contactPoint = new MnisContactPoint(); XElement contactPointElement = doc.Element(atom + "entry") .Element(atom + "content") .Element(m + "properties"); contactPoint.ContactPointMnisId = contactPointElement.Element(d + "MemberAddress_Id").GetText(); contactPoint.Email = contactPointElement.Element(d + "Email").GetText(); contactPoint.FaxNumber = contactPointElement.Element(d + "Fax").GetText(); contactPoint.PhoneNumber = contactPointElement.Element(d + "Phone").GetText(); contactPoint.ContactPointHasPostalAddress = GeneratePostalAddress(contactPointElement); ParliamentaryIncumbency incumbency = generateIncumbency(contactPointElement); if (incumbency != null) { contactPoint.ContactPointHasParliamentaryIncumbency = new ParliamentaryIncumbency[] { incumbency } } ; return(new BaseResource[] { contactPoint }); }
public override BaseResource[] TransformSource(JObject jsonResponse) { ParliamentaryIncumbency parliamentaryIncumbency = new ParliamentaryIncumbency(); string id = ((JValue)jsonResponse.SelectToken("OData__x0049_D0")).GetText(); Uri uri = null; if (string.IsNullOrWhiteSpace(id)) { logger.Warning("No Id info found"); return(null); } else { if (Uri.TryCreate($"{idNamespace}{id}", UriKind.Absolute, out uri)) { parliamentaryIncumbency.Id = uri; } else { logger.Warning($"Invalid url '{id}' found"); return(null); } } Uri houseSeatUri = giveMeUri(jsonResponse, "Seat_x0020_ID_x0020__x0028_for_x"); if (houseSeatUri == null) { return(null); } else { parliamentaryIncumbency.SeatIncumbencyHasHouseSeat = new HouseSeat() { Id = houseSeatUri } }; Uri personUri = giveMeUri(jsonResponse, "Person_x0020_ID_x0020__x0028_for"); if (personUri == null) { return(null); } else { parliamentaryIncumbency.ParliamentaryIncumbencyHasMember = new Member() { Id = personUri } }; float?mnisId = ((JValue)jsonResponse.SelectToken("MNIS_x0020_ID")).GetFloat(); if (mnisId.HasValue) { parliamentaryIncumbency.LordsSeatIncumbencyMnisId = Convert.ToInt32(mnisId.Value).ToString(); } parliamentaryIncumbency.ParliamentaryIncumbencyStartDate = ((JValue)jsonResponse.SelectToken("Start_x0020_Date")).GetDate(); parliamentaryIncumbency.ParliamentaryIncumbencyEndDate = ((JValue)jsonResponse.SelectToken("End_x0020_Date")).GetDate(); parliamentaryIncumbency.SeatIncumbencyHasParliamentPeriod = giveMeParliamentPeriods(parliamentaryIncumbency.ParliamentaryIncumbencyStartDate.Value, parliamentaryIncumbency.ParliamentaryIncumbencyEndDate); if (parliamentaryIncumbency.SeatIncumbencyHasParliamentPeriod == null) { return(null); } return(new BaseResource[] { parliamentaryIncumbency }); }