private static void GenerateMasterFile(List <CrewMember> crewMembers, DateTime startDate, double totalDays) { StringBuilder sb = new StringBuilder(); SetHeaders(sb, startDate, totalDays); List <List <RosterDay> > rsbPatterns = RosterDay.BuildRsbPatterns(); foreach (CrewMember crew in crewMembers) { List <RosterDay> rsbPattern = rsbPatterns[crew.MostEfficientWorkPatternIndex]; sb.Append($"{crew.ThreeLetter},{crew.PersNr},{crew.Rank},{crew.HomeBase},{crew.MostEfficientWorkPatternIndex}"); int rsbPatternIndex = 0; foreach (RosterDay day in crew.MostEfficientRosterDays) { if (day.RosterCode == "0") { sb.Append(",0"); } else { sb.Append($",{rsbPattern[rsbPatternIndex].RosterCode}"); rsbPatternIndex++; } if (rsbPatternIndex == rsbPattern.Count()) { rsbPatternIndex = 0; } } sb.AppendLine(); } System.IO.File.WriteAllText("C:\\Users\\david.bracken\\OneDrive - TUI\\Documents\\Furlough\\CCMasterRoster.csv", sb.ToString()); }
public bool IsWorkDay(DateTime date) { RosterDay rosterDay = MostEfficientRosterDays.FirstOrDefault(n => n.Date == date); if (rosterDay != null && rosterDay.IsWorkingDay) { return(true); } return(false); }
private void BuildCrewRosters(CrewMember crewMember, DataRow patternRow) { List <List <RosterDay> > rsbPatterns = RosterDay.BuildRsbPatterns(); for (int workingRsbPattern = 0; workingRsbPattern < rsbPatterns.Count; workingRsbPattern++) { List <RosterDay> rosterDays = new List <RosterDay>(); int RsbPatternDay = 0; for (int i = 5; i < patternRow.Table.Columns.Count; i++) { RosterDay rosterDay = new RosterDay { Date = DateTime.Parse(patternRow.Table.Columns[i].ColumnName) }; string patternResult = patternRow[i].ToString(); if (patternResult == "0") { rosterDay.RosterCode = "0"; rosterDays.Add(rosterDay); } else if (patternResult == "X") { rosterDay.RosterCode = "X"; rosterDays.Add(rosterDay); RsbPatternDay++; } else { rosterDay.RosterCode = rsbPatterns[workingRsbPattern][RsbPatternDay].RosterCode; rosterDays.Add(rosterDay); RsbPatternDay++; } if (RsbPatternDay == rsbPatterns[workingRsbPattern].Count) { RsbPatternDay = 0; } } crewMember.AddRsbPattern(workingRsbPattern, rosterDays); } }