private static IList <SsObjects.Race> MakeRaces( SwObjects.Series series, SsObjects.Club club, SsObjects.BoatClass boatClass, SsObjects.Fleet fleet, int year) { var retList = new List <SsObjects.Race>(); foreach (var swRace in series.Races) { DateTime date = GetDate(swRace, year); int rank = GetRaceRank(swRace); var ssRace = new SsObjects.Race { Name = swRace.Name, Order = rank, ClubId = club.Id, Date = date, Fleet = fleet }; ssRace.Scores = MakeScores(swRace, series.Competitors, boatClass, fleet); retList.Add(ssRace); } return(retList); }
private IList <RaceDto> MakeRaces(SwObjects.Series series) { var retList = new List <RaceDto>(); foreach (var swRace in series.Races) { DateTime date = GetDate(swRace, _season); int rank = GetRaceRank(swRace); var ssRace = new RaceDto { Name = swRace.Name, Order = rank, ClubId = _club.Id, Date = date, FleetId = _fleet.Id, SeriesIds = new List <Guid> { _series.Id } }; ssRace.Scores = MakeScores(swRace, series.Competitors, _boatClass, _fleet); retList.Add(ssRace); } return(retList); }
private async Task <IDictionary <int, CompetitorDto> > GetCompetitors(SwObjects.Series series) { List <CompetitorDto> competitors; if (_fleet.FleetType == Api.Enumerations.FleetType.SelectedBoats) { competitors = await _apiClient.GetCompetitors(_club.Id, null); } else { competitors = await _apiClient.GetCompetitors(_club.Id, _fleet.Id); } List <CompetitorDto> existingCompetitors = GetMatchedCompetitors(competitors, series); foreach (var comp in existingCompetitors) { if (!(comp.FleetIds.Contains(_fleet.Id))) { comp.FleetIds.Add(_fleet.Id); await _apiClient.SaveCompetitor(comp); } } List <CompetitorDto> competitorsToCreate = GetCompetitorsToCreate(competitors, series); foreach (var comp in competitorsToCreate) { comp.FleetIds = new List <Guid> { _fleet.Id }; await _apiClient.SaveCompetitor(comp); } var shouldBeAllCompetitors = await _apiClient.GetCompetitors(_club.Id, _fleet.Id); // build the dictionary var returnDict = new Dictionary <int, CompetitorDto>(); foreach (var swComp in series.Competitors) { if (series.Races.SelectMany(r => r.Results) .Any(r => r.CompetitorId == swComp.Id && (r.Code != null || r.Place != 0))) { var match = FindMatch(shouldBeAllCompetitors, swComp); if (match == null) { throw new InvalidOperationException("Failed to find a competitor that should have just been created."); } returnDict.Add(swComp.Id, FindMatch(shouldBeAllCompetitors, swComp)); } } return(returnDict); }
public async Task WriteSwSeriesToSS(SwObjects.Series series) { _club = await GetClub(); _boatClass = await GetBoatClass(); _fleet = await GetFleet(); _season = await GetSeason(); _series = await MakeSeries(series); _competitors = await GetCompetitors(series); await SaveRaces(series); }
private void SaveSeriesToClub(SwObjects.Series series, SsObjects.Club club) { var boatClass = GetBoatClass(club); var fleet = GetFleet(club); int year = GetYear(); var ssSeries = MakeSeries(club); ssSeries.Races = MakeRaces(series, club, boatClass, fleet, year); try { var createTask = _coreSeriesService.SaveNewSeries(ssSeries, club); createTask.Wait(); //createTask.GetAwaiter().GetResult(); } catch (Exception ex) { Console.WriteLine($"Oh Noes! There was an exception: {ex}"); } }
private async Task <SeriesDto> MakeSeries(SwObjects.Series series) { Console.Write("What is the name of this series? > "); var result = Console.ReadLine(); var seriesDto = new SeriesDto { ClubId = _club.Id, Name = result, SeasonId = _season.Id }; try { var guid = await _apiClient.SaveSeries(seriesDto); seriesDto.Id = guid; } catch (Exception ex) { Console.WriteLine($"Oh Noes! There was an exception: {ex}"); throw; } return(seriesDto); }
public void WriteSwSeriesToSS(SwObjects.Series series) { Console.WriteLine($"About to import a series with {series.Races.Count} race(s)."); SsObjects.Club club = GetClub(); SaveSeriesToClub(series, club); }
private async Task SaveRaces(SwObjects.Series series) { var races = MakeRaces(series); await PostRaces(races); }
private List <CompetitorDto> GetCompetitorsToCreate(List <CompetitorDto> competitors, SwObjects.Series series) { var returnList = new List <CompetitorDto>(); foreach (var comp in series.Competitors) { if (series.Races.SelectMany(r => r.Results) .Any(r => r.CompetitorId == comp.Id && (r.Code != null || r.Place != 0)) && FindMatch(competitors, comp) == null) { returnList.Add( new CompetitorDto { Name = comp.HelmName, BoatName = comp.Boat, SailNumber = comp.SailNumber, BoatClassId = _boatClass.Id, ClubId = _club.Id }); } } return(returnList); }
private List <CompetitorDto> GetMatchedCompetitors(List <CompetitorDto> competitors, SwObjects.Series series) { var returnList = new List <CompetitorDto>(); foreach (var comp in series.Competitors) { if (series.Races.SelectMany(r => r.Results) .Any(r => r.CompetitorId == comp.Id && (r.Code != null || r.Place != 0))) { var match = FindMatch(competitors, comp); if (match != null) { returnList.Add(match); } } } return(returnList); }