private async Task <GroupCoords> CreateTournamentAndStages(IDbConnection c, IDbTransaction t, Competition competition)
        {
            var result = new GroupCoords();

            var tournament = new Tournament
            {
                Name   = competition.Caption,
                Status = (int)TournamentStatus.Playing,
                Type   = 1
            };

            tournament.Id = await c.InsertAsync(tournament, t);

            result.IdTournament = tournament.Id;
            result.Tournament   = tournament;

            var stage = new TournamentStage
            {
                Name          = "Liga",
                IdTournament  = result.IdTournament,
                SequenceOrder = 1,
                Type          = (int)CalendarType.League
            };

            stage.Id = await c.InsertAsync(stage, t);

            result.IdStage = stage.Id;
            result.Stage   = stage;

            var group = new StageGroup
            {
                Name          = "Grupo único",
                IdTournament  = result.IdTournament,
                IdStage       = result.IdStage,
                SequenceOrder = 1,
                NumTeams      = competition.NumberOfTeams,
                NumRounds     = 1
            };

            group.Id = await c.InsertAsync(group, t);

            result.IdGroup = group.Id;
            result.Group   = group;

            return(result);
        }
        private async Task CreateMatch(IDbConnection c, IDbTransaction t, Fixture fixture, Competition competition, GroupCoords coords)
        {
            var homeTeam    = GetTeamByName(coords.Tournament.Teams, fixture.HomeTeamName);
            var visitorTeam = GetTeamByName(coords.Tournament.Teams, fixture.AwayTeamName);

            if (homeTeam == null || visitorTeam == null)
            {
                throw new Exception("Invalid team name");
            }

            var dbDay = await GetDay(c, t, coords, fixture.Matchday, fixture.Date);

            var dbMatch = new Match
            {
                IdTournament  = coords.IdTournament,
                IdStage       = coords.IdStage,
                IdGroup       = coords.IdGroup,
                IdDay         = dbDay.Id,
                IdHomeTeam    = homeTeam.Id,
                IdVisitorTeam = visitorTeam.Id,
                HomeTeam      = homeTeam,
                VisitorTeam   = visitorTeam,
                Status        = (int)MatchStatus.Created
            };

            if (fixture.Date != null)
            {
                dbMatch.StartTime = fixture.Date.Value.DateTime;
            }

            dbMatch.Id = await c.InsertAsync(dbMatch, t);

            dbMatch.Day = dbDay;
            dbDay.Matches.Add(dbMatch);

            await AddMatchEvents(c, t, fixture, dbMatch);
            await AddMatchPlayers(c, t, fixture, dbMatch);
        }
        private async Task CreateMatches(IDbConnection c, IDbTransaction t, Competition competition, GroupCoords coords)
        {
            coords.Tournament.Days = new PlayDay[competition.NumberOfMatchdays];

            foreach (var fixture in competition.Fixtures)
            {
                await CreateMatch(c, t, fixture, competition, coords);
            }
        }
        private static async Task <Models.Db.Team> CreateTeam(IDbConnection c, IDbTransaction t, IStorageProvider storage, GroupCoords coords, FootballData.Team team, int sequenceOrder)
        {
            var logoImgUrl = ImportImage(c, t, storage, team.CrestUrl);

            var dbTeam = new Models.Db.Team
            {
                Name       = team.Name,
                KeyName    = String.IsNullOrWhiteSpace(team.Code) ? team.Name.Substring(0, 3) : team.Code,
                LogoImgUrl = logoImgUrl,
                Status     = (int)TeamStatus.Inscribed
            };

            dbTeam.Id = await c.InsertAsync(dbTeam, t);

            await c.InsertAsync(new TournamentTeam
            {
                IdTeam       = dbTeam.Id,
                IdTournament = coords.IdTournament
            }, t);

            var teamGroup = new TeamGroup
            {
                IdTeam        = dbTeam.Id,
                IdGroup       = coords.IdGroup,
                IdStage       = coords.IdStage,
                IdTournament  = coords.IdTournament,
                SequenceOrder = sequenceOrder
            };

            await c.InsertAsync(teamGroup, t);

            return(dbTeam);
        }
        private async Task CreateTeams(IDbConnection c, IDbTransaction t, IStorageProvider storage, Competition competition, GroupCoords coords)
        {
            var teams = new List <Models.Db.Team>();

            var sequenceOrder = 1;

            foreach (var team in competition.Teams)
            {
                Models.Db.Team dbTeam = await CreateTeam(c, t, storage, coords, team, sequenceOrder ++);

                teams.Add(dbTeam);

                await CreateTeamPlayers(c, t, team, dbTeam, coords.IdTournament);
            }

            coords.Tournament.Teams = teams;
        }
        private static async Task <PlayDay> GetDay(IDbConnection c, IDbTransaction t, GroupCoords coords, int dayIdx, DateTimeOffset?dayDate)
        {
            var days  = coords.Tournament.Days as PlayDay[];
            var dbDay = days.ElementAt(dayIdx - 1);

            if (dbDay == null)
            {
                dbDay = new PlayDay
                {
                    IdTournament  = coords.IdTournament,
                    IdStage       = coords.IdStage,
                    IdGroup       = coords.IdGroup,
                    Name          = Localization.Get("Jornada {0}", null, dayIdx),
                    SequenceOrder = dayIdx,
                    Matches       = new List <Match>()
                };

                if (dayDate != null)
                {
                    dbDay.DatesList.Add(dayDate.Value.DateTime);
                    dbDay.SetDatesFromDatesList();
                }

                days[dayIdx - 1] = dbDay;

                dbDay.Id = await c.InsertAsync(dbDay, t);
            }

            return(dbDay);
        }
예제 #7
0
        public ParseResult Parse(int range = 0, Axis Column = Axis.X)
        {
            try
            {
                GroupList.Clear();
                var    Lines = AddWhiteSpaces(ParseLineFromCSV());
                int    Part  = 1;
                string ChosedColumn;
                range = Math.Abs(range);

                if (range == 0)
                {
                    foreach (var data in Lines)
                    {
                        if (GroupList.Count == 0 || !data.Name.ToString().Equals(GroupList.Last().Name))
                        {
                            var Group = new GroupCoords
                            {
                                Name = data.Name.ToString()
                            };
                            Group.Data.Add(data);
                            GroupList.Add(Group);
                        }
                        else
                        {
                            GroupList.Last().Data.Add(data);
                        }
                    }
                }
                else
                {
                    int AbsRange      = Math.Abs(range);
                    int OriginalRange = Math.Abs(range);

                    foreach (var data in Lines)
                    {
                        ChosedColumn = data.X;
                        if (Column == Axis.Y)
                        {
                            ChosedColumn = data.Y;
                        }
                        if (GroupList.Count == 0)
                        {
                            var Group = new GroupCoords
                            {
                                Name = data.Name.ToString()
                            };
                            Group.Data.Add(data);
                            GroupList.Add(Group);
                            continue;
                        }
                        if (Math.Abs(double.Parse(ChosedColumn, CultureInfo.InvariantCulture)) < AbsRange)
                        {
                            if (GroupList.Last().Name[0].Equals(data.Name))
                            {
                                GroupList.Last().Data.Add(data);
                            }
                            else
                            {
                                var Group = new GroupCoords
                                {
                                    Name = data.Name.ToString()
                                };
                                Group.Data.Add(data);
                                GroupList.Add(Group);
                                Part     = 1;                   //nie robi sie to sprowdz yfa
                                AbsRange = OriginalRange;
                            }
                        }
                        else
                        {
                            do
                            {
                                AbsRange += OriginalRange;
                                Part++;
                            } while(Math.Abs(double.Parse(ChosedColumn, CultureInfo.InvariantCulture)) > AbsRange);
                            var Group = new GroupCoords
                            {
                                Name = data.Name.ToString() + (Part - 1).ToString()
                            };
                            Group.Data.Add(data);
                            GroupList.Add(Group);
                        }
                    }
                }

                return(ParseResult.OK);
            }
            catch (GroupException)
            {
                return(Result = ParseResult.InvalidGroup);
            }
            catch (FormatException)
            {
                return(Result = ParseResult.InvalidCell);
            }
            catch (InvalidCellFormatException ex)
            {
                throw ex;
            }
            catch (Exception)
            {
                return(Result = ParseResult.UnknownError);
            }
        }