示例#1
0
        //public CurrencyImportManager ImportManager;

        protected override Core.Services.ServiceOutcome DoPipelineWork()
        {
            List <CurrencyRate> rates = new List <CurrencyRate>();

            //TO DO : USE MAPPING CONFIGURATION FOR THIS SERVICE.

            foreach (DeliveryFile ReportFile in this.Delivery.Files)
            {
                bool isAttribute  = Boolean.Parse(ReportFile.Parameters["XML.IsAttribute"].ToString());
                var  ReportReader = new XmlDynamicReader
                                        (ReportFile.OpenContents(), ReportFile.Parameters["XML.Path"].ToString());


                using (ReportReader)
                {
                    dynamic reader;

                    while (ReportReader.Read())
                    {
                        if (isAttribute)
                        {
                            reader = ReportReader.Current.Attributes;
                        }
                        else
                        {
                            reader = ReportReader.Current;
                        }

                        CurrencyRate currencyUnit = new CurrencyRate();

                        //Currency Code
                        List <object> CurrencyData = reader["field"];

                        currencyUnit.Currency.Code = (((XmlDynamicObject)CurrencyData[0]).InnerText.Split('/')).Count() > 1 ?((XmlDynamicObject)CurrencyData[0]).InnerText.Split('/')[1]: string.Empty;

                        if (string.IsNullOrEmpty(currencyUnit.Currency.Code))
                        {
                            continue;
                        }

                        //Currecy Date
                        currencyUnit.RateDate = DateTime.Now;

                        //Currency Rate
                        currencyUnit.RateValue = Convert.ToDecimal(((XmlDynamicObject)CurrencyData[1]).InnerText) == 0?0: 1 / Convert.ToDecimal(((XmlDynamicObject)CurrencyData[1]).InnerText);
                        rates.Add(currencyUnit);
                    }
                }

                CurrencyRate.SaveCurrencyRates(rates);

                //ImportManager.EndImport();
                //}
            }
            return(Core.Services.ServiceOutcome.Success);
        }
        protected override Core.Services.ServiceOutcome DoPipelineWork()
        {
            MappingContainer metricsUnitMapping;

            if (!this.Mappings.Objects.TryGetValue(typeof(GenericMetricsUnit), out metricsUnitMapping))
            {
                throw new MappingConfigurationException("Missing mapping definition for GenericMetricsUnit.");
            }
            currentOutput          = this.Delivery.Outputs.First();
            currentOutput.Checksum = new Dictionary <string, double>();

            foreach (var ReportFile in Delivery.Files)
            {
                bool isAttribute  = Boolean.Parse(ReportFile.Parameters["Bo.IsAttribute"].ToString());
                var  ReportReader = new XmlDynamicReader
                                        (ReportFile.OpenContents(), ReportFile.Parameters["Bo.Xpath"].ToString());



                using (this.ImportManager = new GenericMetricsImportManager(this.Instance.InstanceID, new MetricsImportManagerOptions()
                {
                    MeasureOptions = MeasureOptions.IsBackOffice,
                    MeasureOptionsOperator = OptionsOperator.Or,
                    SegmentOptions = Data.Objects.SegmentOptions.All,
                    SegmentOptionsOperator = OptionsOperator.And
                }))
                {
                    ImportManager.BeginImport(this.Delivery);
                    //checksum init
                    foreach (var m in ImportManager.Measures.Values)
                    {
                        if (m.Options.HasFlag(MeasureOptions.ValidationRequired))
                        {
                            currentOutput.Checksum[m.Name] = 0;
                        }
                    }
                    using (ReportReader)
                    {
                        dynamic readerHelper;

                        while (ReportReader.Read())
                        {
                            if (isAttribute)
                            {
                                readerHelper = ReportReader.Current.Attributes;
                            }
                            else
                            {
                                readerHelper = ReportReader.Current;
                            }

                            this.Mappings.OnFieldRequired = field => readerHelper[field];
                            GenericMetricsUnit genericMetricsUnit = new GenericMetricsUnit();

                            metricsUnitMapping.Apply(genericMetricsUnit);

                            foreach (var m in genericMetricsUnit.MeasureValues)
                            {
                                if (m.Key.Options.HasFlag(MeasureOptions.ValidationRequired))
                                {
                                    if (!currentOutput.Checksum.ContainsKey(m.Key.Name))
                                    {
                                        currentOutput.Checksum.Add(m.Key.Name, m.Value);
                                    }
                                    else
                                    {
                                        currentOutput.Checksum[m.Key.Name] += m.Value;
                                    }
                                }
                            }
                            genericMetricsUnit.Output = currentOutput;
                            ImportManager.ImportMetrics(genericMetricsUnit);
                        }
                    }

                    ImportManager.EndImport();
                }
            }
            return(Core.Services.ServiceOutcome.Success);
        }
示例#3
0
        //public CurrencyImportManager ImportManager;

        protected override Core.Services.ServiceOutcome DoPipelineWork()
        {
            List <CurrencyRate> rates = new List <CurrencyRate>();

            //TO DO : USE MAPPING CONFIGURATION FOR THIS SERVICE.

            //ImportManager = new CurrencyImportManager(this.Instance.InstanceID, null);

            foreach (DeliveryFile ReportFile in this.Delivery.Files)
            {
                bool isAttribute  = Boolean.Parse(ReportFile.Parameters["XML.IsAttribute"].ToString());
                var  ReportReader = new XmlDynamicReader
                                        (ReportFile.OpenContents(), ReportFile.Parameters["XML.Path"].ToString());

                //using (ImportManager)
                //{
                //    ImportManager.BeginImport(this.Delivery);

                //DeliveryOutput currentOutput = Delivery.Outputs.First();

                using (ReportReader)
                {
                    dynamic reader;

                    while (ReportReader.Read())
                    {
                        if (isAttribute)
                        {
                            reader = ReportReader.Current.Attributes;
                        }
                        else
                        {
                            reader = ReportReader.Current;
                        }

                        CurrencyRate currencyUnit = new CurrencyRate();


                        //Currency Code
                        currencyUnit.Currency.Code = Regex.Replace(Convert.ToString(reader["Symbol"]), "USD", string.Empty);

                        //Currecy Date
                        string[] date = (reader["Date"] as string).Split('/');
                        try { currencyUnit.RateDate = new DateTime(Int32.Parse(date[2]), Int32.Parse(date[0]), Int32.Parse(date[1])); }
                        catch (Exception ex)
                        {
                            throw new Exception(String.Format("Could not parse the date parts (y = '{0}', m = '{1}', d = '{2}'.", date[2], date[0], date[1]), ex);
                        }

                        //Currency Rate
                        double rate = Convert.ToDouble(reader["Last"]);
                        currencyUnit.RateValue = Convert.ToDecimal(rate.ToString("#0.0000"));

                        ////Output

                        //currencyUnit.Output = new DeliveryOutput()
                        //{
                        //    Signature = string.Format("{0}_{1}", currencyUnit.Currency.Code, currencyUnit.RateDate),
                        //    TimePeriodStart = currencyUnit.DateCreated,
                        //    TimePeriodEnd = currencyUnit.DateCreated,
                        //};
                        //this.Delivery.Outputs.Add(currencyUnit.Output);

                        //ImportManager.ImportCurrency(currencyUnit);

                        rates.Add(currencyUnit);
                    }
                }

                CurrencyRate.SaveCurrencyRates(rates);

                //ImportManager.EndImport();
                //}
            }
            return(Core.Services.ServiceOutcome.Success);
        }