Пример #1
0
 /// <summary>
 /// Save Converted Data to File
 /// </summary>
 /// <param name="returnResult2"></param>
 private static void SaveToDisk(XmlResultv2 returnResult2)
 {
     var serializer = ParserIATIv2.serializer;
     TextWriter writer = new StreamWriter("D:\\xxv2.01.xml");
     serializer.Serialize(writer, returnResult2);
     Logger.Write("INFO: " + "Saved Converted Data to File");
 }
Пример #2
0
        /// <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;
        }