public WarZones GetWarZones() { var data = _anspiritSheetsService.GetWarPlacementValues(); var warZones = new WarZones(); for (int column = 0; column < data.Count; column += 2) { for (int row = 1; row < data[column].Count; row++) { var player = (string)data[column][row]; var team = (string)data[column + 1][row]; if (string.IsNullOrWhiteSpace(player)) { throw new Exception($"Player name is null or whitespace, at column {0}, row {row}"); } if (string.IsNullOrWhiteSpace(team)) { throw new Exception($"Team name is null or whitespace, at column {0 + 1}, row {row}"); } warZones[column].Add(new Deployment { Player = player, Team = team }); } } return(warZones); }
public List <Tuple <string, Deployment> > GetWarOrdersSortedByZone(WarZones orders) { PropertyInfo[] properties = typeof(WarZones).GetProperties(BindingFlags.Public | BindingFlags.Instance); var allOrders = new List <Tuple <string, Deployment> >(); foreach (PropertyInfo p in properties) { // Only work with strings if (p.PropertyType == typeof(List <Deployment>) && p.CanRead && p.CanWrite) { var zone = (List <Deployment>)p.GetValue(orders); var data = zone.Select(x => new Tuple <string, Deployment>(p.Name, x)); allOrders.AddRange(data); } } return(allOrders); }