Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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}");
            }
        }
Пример #6
0
        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);
        }
Пример #7
0
 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);
 }
Пример #8
0
        private async Task SaveRaces(SwObjects.Series series)
        {
            var races = MakeRaces(series);

            await PostRaces(races);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
        }