/// <summary> /// Convert IATI /// </summary> /// <returns></returns> //public IXmlResult ConvertIATIXML(IXmlResult objSource, IXmlResult objDestinaiton) //{ // if(objDestinaiton == null) // objDestinaiton = new XmlResultv2(); // //parse and assign // return objDestinaiton; //} public XmlResultv2 ConvertIATI105to201XML(XmlResultv1 objSource, XmlResultv2 objDestinaiton) { if (objDestinaiton == null) objDestinaiton = new XmlResultv2(); //iatiactivities if (objSource != null && objSource.iatiactivities != null && objSource.iatiactivities.Items != null) { objSource.iatiactivities.version = (decimal)2.02; //activity foreach (var item in objSource.iatiactivities.Items) { if (item.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.iatiactivity)) { var activity = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.iatiactivity)item; string srcIatiidentifier = ""; if (activity.Items != null) { foreach (var activityItem in activity.Items) { //iati-identifier if (activityItem.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.iatiidentifier)) { var iatiidentifier = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.iatiidentifier)activityItem; srcIatiidentifier = iatiidentifier.Text.n(0); } } var desActivity = objDestinaiton.iatiactivities.iatiactivity.FirstOrDefault(q => q.IatiIdentifier == srcIatiidentifier); //desActivity.AnyAttr[0].Prefix = ""; desActivity.AnyAttr[0].Value = "2.02"; var locations = new List<location>(); int otherIdentifierCounter = 0; foreach (var activityItem in activity.Items) { #region reporting-org if (activityItem.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.reportingorg)) { var reportingorg = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.reportingorg)activityItem; narrative[] arrynarrative = getNarrativeArray(reportingorg); desActivity.reportingorg.narrative = arrynarrative; } #endregion #region title else if (activityItem.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.textType)) { var title = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.textType)activityItem; narrative[] arrynarrative = getNarrativeArray(title); desActivity.title.narrative = arrynarrative; } #endregion #region description else if (activityItem.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.description)) { var description = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.description)activityItem; narrative[] arrynarrative = getNarrativeArray(description); desActivity.description = new iatiactivityDescription[1]; desActivity.description[0] = new iatiactivityDescription(); desActivity.description[0].narrative = arrynarrative; } #endregion #region participating-org else if (activityItem.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.participatingorg)) { var participatingorg = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.participatingorg)activityItem; narrative[] arrynarrative = getNarrativeArray(participatingorg); var targetParticipatingOrg = desActivity.participatingorg.FirstOrDefault(x => x.role == participatingorg.role && x.@ref == participatingorg.@ref && x.type == participatingorg.type); targetParticipatingOrg.role = getOrgRoleCode(participatingorg.role); targetParticipatingOrg.narrative = arrynarrative; } #endregion //recipient-country //Same //activity-status //Same #region activity-date else if (activityItem.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.activitydate)) { var activitydate = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.activitydate)activityItem; var targetActivitydate = desActivity.activitydate.FirstOrDefault(x => x.type == activitydate.type); targetActivitydate.type = getActivityDateCode(activitydate.type); } #endregion #region contact-info else if (activityItem.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.contactinfo)) { var contactinfo = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.contactinfo)activityItem; if (desActivity.contactinfo == null) desActivity.contactinfo = new contactinfo[1]; if (desActivity.contactinfo[0] == null) desActivity.contactinfo[0] = new contactinfo(); var desContactInfo = desActivity.contactinfo; foreach (var it in contactinfo.Items) { //organisation if (it.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.textType)) //[textType has multiple] { var org = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.textType)it; narrative[] arrynarrative2 = getNarrativeArray(org); desActivity.contactinfo[0].organisation = new textRequiredType(); desActivity.contactinfo[0].organisation.narrative = arrynarrative2; } //mailingaddress if (it.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.contactinfoMailingaddress)) { var addr = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.contactinfoMailingaddress)it; narrative[] arrynarrative2 = getNarrativeArray2(addr); desActivity.contactinfo[0].mailingaddress = new textRequiredType[1]; desActivity.contactinfo[0].mailingaddress[0] = new textRequiredType(); desActivity.contactinfo[0].mailingaddress[0].narrative = arrynarrative2; } } } #endregion #region location else if (activityItem.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.location)) { var location = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.location)activityItem; var locationV2 = new location(); foreach (var it in location.Items) { if (it.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.locationCoordinates)) { var coordinate = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.locationCoordinates)it; locationV2.point = new locationPoint { pos = coordinate.latitude + " " + coordinate.longitude }; } else if (it.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.locationPoint)) { var point = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.locationPoint)it; locationV2.point = new locationPoint { pos = point.Items.n(0).ToString() }; } else if (it.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.locationAdministrative)) { var adm = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.locationAdministrative)it; locationV2.administrative.Add(new locationAdministrative { vocabulary = adm.vocabulary, level = adm.level, code = adm.code }); } } locations.Add(locationV2); } #endregion //sector //same //policy-marker //same //collaboration-type //same //default-finance-type //same #region budget else if (activityItem.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.budget)) { var budget = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.budget)activityItem; foreach (var b in desActivity.budget) { b.type = budget.type == "Original" ? "1" : "2"; } } #endregion //planned-disbursement //not in 1.05 #region transaction else if (activityItem.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.transaction)) { var transaction = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.transaction)activityItem; var targettransaction = desActivity.transaction.FirstOrDefault(x => x.transactiontype.code == transaction.transactiontype.code); targettransaction.transactiontype.code = gettransactionCode(transaction.transactiontype.code); //------------------ } #endregion #region document - link else if (activityItem.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.documentlink)) { var documentlink = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.documentlink)activityItem; var d = documentlink.Items.FirstOrDefault(x => x.GetType() == typeof(textType)); if (d != null) { narrative[] arrynarrative = getNarrativeArray((textType)d); var targetdocumentlink = desActivity.documentlink.FirstOrDefault(x => x.url == documentlink.url); targetdocumentlink.title = new textRequiredType(); targetdocumentlink.title.narrative = arrynarrative; } } #endregion //conditions //Not in 1.05 //result //Not in 1.05 #region other-identifier else if (activityItem.GetType() == typeof(AIMS_BD_IATI.Library.Parser.ParserIATIv1.otheridentifier)) { var otheridentifier = (AIMS_BD_IATI.Library.Parser.ParserIATIv1.otheridentifier)activityItem; narrative[] arrynarrative = Statix.getNarativeArray(otheridentifier.ownername); var targetotheridentifier = desActivity.otheridentifier[otherIdentifierCounter]; targetotheridentifier.@ref = otheridentifier.Text.n(0); targetotheridentifier.type = "A1"; targetotheridentifier.ownerorg = new otheridentifierOwnerorg(); targetotheridentifier.ownerorg.@ref = otheridentifier.ownerref; targetotheridentifier.ownerorg.narrative = arrynarrative; targetotheridentifier.AnyAttr = null; otherIdentifierCounter++; } #endregion } desActivity.location = locations.ToArray(); } } } } //parse and assign return objDestinaiton; }