public void MarkWorkorderAsFilled(string workorderId, DateTime fillUTC, WorkorderResources resources) { using (var context = new WorkorderContext()) { var work = context.Workorders .Include(w => w.Parts) .Single(x => x.WorkorderId == workorderId); if (work != null) { work.FilledUTC = fillUTC; //You will likely also want to store the WorkorderResources somewhere. context.SaveChanges(); } } }
public void MarkWorkorderAsFilled(string workorderId, DateTime filledUTC, WorkorderResources resources) { if (!Directory.Exists(Path.Combine(CSVBasePath, FilledWorkordersPath))) { Directory.CreateDirectory(Path.Combine(CSVBasePath, FilledWorkordersPath)); } using (var f = File.OpenWrite(Path.Combine(CSVBasePath, Path.Combine(FilledWorkordersPath, workorderId + ".csv")))) using (var stream = new StreamWriter(f)) using (var csv = new CsvHelper.CsvWriter(stream)) { csv.WriteField("CompletedTimeUTC"); csv.WriteField("ID"); csv.WriteField("Part"); csv.WriteField("Quantity"); csv.WriteField("Serials"); var activeStations = new HashSet <string>(); var elapsedStations = new HashSet <string>(); foreach (var p in resources.Parts) { foreach (var k in p.ActiveOperationTime.Keys) { activeStations.Add(k); } foreach (var k in p.ElapsedOperationTime.Keys) { elapsedStations.Add(k); } } var actualKeys = activeStations.OrderBy(x => x).ToList(); foreach (var k in actualKeys) { csv.WriteField("Active " + k + " (minutes)"); } var plannedKeys = elapsedStations.OrderBy(x => x).ToList(); foreach (var k in plannedKeys) { csv.WriteField("Elapsed " + k + " (minutes)"); } csv.NextRecord(); foreach (var p in resources.Parts) { csv.WriteField(filledUTC.ToString("yyyy-MM-ddTHH:mm:ssZ")); csv.WriteField(workorderId); csv.WriteField(p.Part); csv.WriteField(p.PartsCompleted); csv.WriteField(string.Join(";", resources.Serials)); foreach (var k in actualKeys) { if (p.ActiveOperationTime.ContainsKey(k)) { csv.WriteField(p.ActiveOperationTime[k].TotalMinutes); } else { csv.WriteField(0); } } foreach (var k in plannedKeys) { if (p.ElapsedOperationTime.ContainsKey(k)) { csv.WriteField(p.ElapsedOperationTime[k].TotalMinutes); } else { csv.WriteField(0); } } csv.NextRecord(); } } }