예제 #1
0
        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();
                }
            }
        }
예제 #2
0
        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();
                        }
                    }
        }