private static int GetConveyorWidth(SpantechPart part) { int number; if (!Int32.TryParse(part.PartNumber.Substring(4, 4), out number)) { Int32.TryParse(part.PartNumber.Substring(3, 4), out number); } return(number); }
private void ExtractDataFromCsv(string file) { var fullName = string.Format(@"{0}\{1}", RootDirectory, file); var strategy = new StripSpantechExcelFile(fullName); var lines = strategy.Parse(); string projectNumber = ""; bool spantechMode = !string.IsNullOrWhiteSpace(lines[0][0]); int offset = spantechMode ? 1 : 0; var lastCode = 0; var stack = new Stack <SpantechPart>(); foreach (var line in lines) { if (!spantechMode && line.Count() > 1 && string.IsNullOrWhiteSpace(line[0]) && !string.IsNullOrWhiteSpace(line[1])) { projectNumber = line[1]; } else if (!string.IsNullOrWhiteSpace(line[4 + offset]) && line[1] != "Code") { try { var part = new SpantechPart { ProjectNumber = (spantechMode ? line[0] : projectNumber).Trim(), Code = int.Parse(line[0 + offset]), PartNumber = line[1 + offset], PartDesc = line[2 + offset], UnitOfMeasurement = line[3 + offset], TotalAmount = Double.Parse(line[4 + offset]), Info1 = line[7 + offset], Info2 = line[8 + offset] }; if (part.Code <= lastCode) { while (stack.Count > 0 && stack.Peek().Code >= part.Code) { stack.Pop(); } } stack.Push(part); lastCode = part.Code; if (spantechMode && stack.All(p => p.UnitOfMeasurement == "EA")) { part.TotalAmount = stack.Aggregate <SpantechPart, double>(1, (current, p) => current * p.TotalAmount); } _parts.Add(part); } catch (Exception e) { Trace.WriteLine(e.Message); } } } // Load all filtered data. Use this to filter the data loaded unfiltered data in-place. var filter = string.Format(@"{0}\{1}", RootDirectory, PdfConverterRules); var filterValues = System.IO.File.ReadAllLines(filter, Encoding.Default).Select(line => line.Split(';')).ToArray(); _filteredParts.AddRange(filterValues.Select(line => new SpantechPart { PartDesc = line[0], PartDescNo = line[1], PartDescSe = line[2], PartReference = line[3], Drawing = line[4], Unit = line[5], SpareAmount = line[6] })); }