//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); }
//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); }