/// <summary> /// Find the comissioning file. /// </summary> /// <param name="serial">Serial number of the device.</param> /// <param name="basicDirectory">Basic derictory to search. (Use other constructor to use defaut directory).</param> public FindComissioningFile(int serial, string basicDirectory) { DateTime start = DateTime.Now; SerialNumber = serial; Elements = new List <CommissionElement>(); try { IEnumerable <string> installDirectories = Directory.GetDirectories(basicDirectory); foreach (var currentDirectory in installDirectories) { DirectoryInfo currentInfo = new DirectoryInfo(currentDirectory); string directoryName = currentInfo.Name; int directoryVal = 0; if (!int.TryParse(directoryName, out directoryVal)) { continue; } //Find whether the folder is a placement folder.. those folders always begin by a number. if (char.IsDigit(directoryName[0])) { IEnumerable <string> install = Directory.GetDirectories(currentDirectory); /*.Where(s => s.Contains(propertyNumber));*/ foreach (var intribe in install) { string[] installIntribe = Directory.GetDirectories(intribe, "inbetriebnahme", SearchOption.AllDirectories); foreach (var intribefilesDirectory in installIntribe) { int installationYear = 0; string[] dataFromPath = intribefilesDirectory.Split('\\'); string year = dataFromPath[5]; int.TryParse(year, out installationYear); YearOfInstallation = installationYear; PDAInstallationNumBer = dataFromPath[7]; string[] files = Directory.GetFiles(intribefilesDirectory, "*.xml", SearchOption.AllDirectories); foreach (var file in files) { long rnn = 0; string[] dataFromFile = file.Split('\\'); string[] extractDate = dataFromFile[dataFromFile.Length - 1].Split('_'); string one = extractDate[0]; if (!long.TryParse(extractDate[0], out rnn)) { continue; } Console.WriteLine(file); if (!TryLoadXmlFile(file)) { Console.WriteLine("error in xml file."); continue; } if (FindSerial(file, serial)) { //FullPath = intribefilesDirectory; FullPath = file; InstallationDate = new DateTime(int.Parse(extractDate[3]), int.Parse(extractDate[2]), int.Parse(extractDate[1]), int.Parse(extractDate[4]), int.Parse(extractDate[5]), int.Parse(extractDate[6])); CommissionElement element = new CommissionElement(); element.ArticleNumber = ArticleNumber; element.SerialNumber = serial; element.YearOfInstallation = YearOfInstallation; element.Floor = Floor; element.NumAppart = NumAppart; element.TypeOfFloor = TypeOfFloor; element.FullPath = FullPath; element.PropertyNumber = PropertyNumber; element.EndOfBillingDate = EndOfBillingDate; element.StartOfCountingdate = StartOfCountingdate; element.RNN = RNN; element.InstallationDate = InstallationDate; element.PDAInstallationNumBer = PDAInstallationNumBer; Elements.Add(element); } } } } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } DateTime fin = DateTime.Now; TimeSpan totalTime = fin - start; }
//public FindComissioningFile(string propertyNumber, int article, int serial, string[] directories) //{ // SerialNumber = serial; // ArticleNumber = article; // PropertyNumber = propertyNumber; // Elements = new List<CommissionElement>(); // try // { // } // catch (Exception ex) // { // throw new Exception("Error while searching file", ex); // } //} /// <summary> /// Find the comissioning file. /// </summary> /// <param name="propertyNumber">Property number of where the device is.</param> /// <param name="article">Article number of the device.</param> /// <param name="serial">Serial number of the device.</param> /// <param name="basicDirectory">Basic derictory to search. (Use other constructor to use defaut directory).</param> public FindComissioningFile(string propertyNumber, int article, int serial, string basicDirectory) { PropertyNumber = propertyNumber; ArticleNumber = article; SerialNumber = serial; Elements = new List <CommissionElement>(); try { IEnumerable <string> installDirectories = Directory.GetDirectories(basicDirectory); foreach (var currentDirectory in installDirectories) { DirectoryInfo currentInfo = new DirectoryInfo(currentDirectory); string directoryName = currentInfo.Name; int directoryVal = 0; if (!int.TryParse(directoryName, out directoryVal)) { continue; } IEnumerable <string> install = Directory.GetDirectories(currentDirectory).Where(s => s.Contains(propertyNumber)); foreach (var intribe in install) { string[] installIntribe = Directory.GetDirectories(intribe, "inbetriebnahme", SearchOption.AllDirectories); foreach (var intribefilesDirectory in installIntribe) { int installationYear = 0; string[] dataFromPath = intribefilesDirectory.Split('\\'); string year = dataFromPath[5]; int.TryParse(year, out installationYear); YearOfInstallation = installationYear; PDAInstallationNumBer = dataFromPath[7]; string[] files = Directory.GetFiles(intribefilesDirectory, "*.xml", SearchOption.AllDirectories); foreach (var file in files) { long rnn = 0; string[] dataFromFile = file.Split('\\'); string[] extractDate = dataFromFile[dataFromFile.Length - 1].Split('_'); string one = extractDate[0]; if (!long.TryParse(extractDate[0], out rnn)) { continue; } if (FindSerial(file, serial, article)) { //FullPath = intribefilesDirectory; FullPath = file; //TO DO tryparse de la date InstallationDate = new DateTime(int.Parse(extractDate[3]), int.Parse(extractDate[2]), int.Parse(extractDate[1]), int.Parse(extractDate[4]), int.Parse(extractDate[5]), int.Parse(extractDate[6])); CommissionElement element = new CommissionElement(); element.ArticleNumber = article; element.SerialNumber = serial; element.YearOfInstallation = YearOfInstallation; element.Floor = Floor; element.NumAppart = NumAppart; element.TypeOfFloor = TypeOfFloor; element.FullPath = FullPath; element.PropertyNumber = propertyNumber; element.EndOfBillingDate = EndOfBillingDate; element.StartOfCountingdate = StartOfCountingdate; element.RNN = RNN; element.InstallationDate = InstallationDate; element.PDAInstallationNumBer = PDAInstallationNumBer; Elements.Add(element); } } } } } } catch (Exception ex) { Console.WriteLine("{0} - {1} - {2}", propertyNumber, article, serial); Console.WriteLine(ex.Message); Console.WriteLine(ex.StackTrace); throw new Exception("Error while searching file", ex); } }