private static string GetCommaDelimitedListValue(string consumerClass, AgencyObject obj, Func <AgencyRateStructure, AgencyList> fnGetList, string key, string dependsOn = null) { AgencyRateStructure rateStructure = GetRateStructure(obj, consumerClass); return(rateStructure != null ? string.Join(", ", GetValueList(fnGetList(rateStructure), key, dependsOn)) : null); }
private static string GetFirstListValue(string consumerClass, AgencyObject obj, Func <AgencyRateStructure, AgencyList> fnGetList, string key, string dependsOn = null) { AgencyRateStructure rateStructure = GetRateStructure(obj, consumerClass); return(rateStructure != null ? GetValueList(fnGetList(rateStructure), key, dependsOn).FirstOrDefault() : null); }
static void Main(string[] args) { string outputPath = Path.Combine(Path.GetDirectoryName(Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\\'))), "Agencies.xlsx"); const string allFilesPath = @"C:\Code\Open-Water-Rate-Specification\full_utility_rates\California"; List <string> fileNames = Directory.GetDirectories(allFilesPath).Select(x => Directory.GetFiles(x).FirstOrDefault()).Where(x => x != null).ToList(); List <AgencyObject> objects = new List <AgencyObject>(); foreach (var fileName in fileNames) { AgencyObject agencyObject = new AgencyObject(); objects.Add(agencyObject); using (StringReader reader = new StringReader(File.ReadAllText(fileName))) { var deserializer = new DeserializerBuilder().Build(); var yamlObject = deserializer.Deserialize(reader); var serializer = new SerializerBuilder().JsonCompatible().Build(); var json = serializer.Serialize(yamlObject); JObject jItems = JObject.Parse(json); foreach (KeyValuePair <string, JToken> jItem in jItems) { if (jItem.Key.Equals("metadata", StringComparison.InvariantCultureIgnoreCase)) { agencyObject.Metadata = ParseMetadata(jItem.Value); } else if (jItem.Key.Equals("rate_structure", StringComparison.InvariantCultureIgnoreCase)) { agencyObject.RateStructures = ParseRateStructure(jItem.Value); } else if (jItem.Key.Equals("capacity_charge", StringComparison.InvariantCultureIgnoreCase)) { agencyObject.CapacityCharge = ParseAgencyList(jItem.Value); } else { } } } } ExportToExcelFile(outputPath, objects); }
private static AgencyRateStructure GetRateStructure(AgencyObject obj, string consumerClass) { return(obj != null?obj.RateStructures.FirstOrDefault(x => x.ConsumerClass == consumerClass) : null); }