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); }
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); } }