private async Task <Faction> ConvertJsonToFaction(string json) { var faction = new Faction(); var request = EliteBgsFactionRequest.FromJson(json); if (request.Docs.Count == 0) { return(faction); } faction.Name = request.Docs[0].Name; faction.UpdatedOn = request.Docs[0].UpdatedAt.UtcDateTime; foreach (var system in request.Docs[0].FactionPresence) { var solarSystem = new SolarSystem(); solarSystem.Name = system.SystemName; foreach (var conflict in system.Conflicts) { solarSystem.Conflicts.Add(new Entities.Conflict { Status = conflict.Status, Type = conflict.Type, Factions = new List <ConflictFaction> { new ConflictFaction { DaysWon = (int)conflict.DaysWon, FactionName = faction.Name, Stake = conflict.Stake }, new ConflictFaction { FactionName = conflict.OpponentName } } }); } solarSystem.UpdatedOn = system.UpdatedAt.UtcDateTime; solarSystem.ActiveStates = system.ActiveStates.Select(e => e.State).ToList(); solarSystem.PendingStates = system.PendingStates.Select(e => e.State).ToList(); solarSystem.State = system.State; var subFaction = new SubFaction(); subFaction.Name = faction.Name; subFaction.Influence = system.Influence; subFaction.ActiveStates = system.ActiveStates.Select(e => e.State).ToList(); subFaction.PendingStates = system.PendingStates.Select(e => e.State).ToList(); subFaction.UpdatedOn = system.UpdatedAt.UtcDateTime; solarSystem.SubFactions.Add(subFaction); faction.SolarSystems.Add(solarSystem); } return(faction); }
private async Task <SolarSystem> ConvertJsonToSolarSystem(string json) { var system = new SolarSystem(); var request = EliteBgsSystemRequest.FromJson(json); system.Name = request.Docs[0].Name; system.ControllingFaction = request.Docs[0].ControllingMinorFaction; system.UpdatedOn = request.Docs[0].UpdatedAt.UtcDateTime; if (!string.IsNullOrEmpty(request.Docs[0].State)) { system.State = request.Docs[0].State; } foreach (var subFaction in request.Docs[0].Factions) { var faction = new SubFaction(); faction.Name = subFaction.Name; if (subFaction?.FactionDetails?.FactionPresence?.Influence != null) { faction.Influence = subFaction.FactionDetails.FactionPresence.Influence; } else { faction.Influence = 0; } system.SubFactions.Add(faction); } foreach (var conflict in request.Docs[0].Conflicts) { system.Conflicts.Add(new Entities.Conflict { Status = conflict.Status, Type = conflict.Type, Factions = new List <ConflictFaction> { new ConflictFaction { DaysWon = (int)conflict.Faction1.DaysWon, FactionName = conflict.Faction1.Name, Stake = conflict.Faction1.Stake }, new ConflictFaction { DaysWon = (int)conflict.Faction2.DaysWon, FactionName = conflict.Faction2.Name, Stake = conflict.Faction2.Stake } } }); } return(system); }
private static string FormatFaction(SubFaction faction) { switch (faction) { case SubFaction.RebelAlliance: return("Rebel Alliance"); case SubFaction.Resistance: return("Resistance"); case SubFaction.GalacticEmpire: return("Galactic Empire"); case SubFaction.FirstOrder: return("First Order"); case SubFaction.ScumAndVillainy: return("Scum and Villainy"); default: throw new NotImplementedException(); } }