public async Task <IHttpActionResult> CreateNewCompetitionWizard([FromBody] CompetitionCreationInfoDTO competitionSettings) { try { using (var competitionService = new CompetitionService()) { int competitionId = await competitionService.CreateNewCompetitionWizard(competitionSettings); return(Ok(competitionId)); } } catch (Exception e) { return(BadRequest()); } }
public async Task <IHttpActionResult> CreateNewCompetition([FromBody] CompetitionCreationInfoDTO competitionSettings) { try { using (var competitionService = new CompetitionService()) using (var competitorService = new CompetitorService(competitionService.DbContext)) { var competition = competitionService.CreateNewCompetition(competitionSettings.Options); competitorService.InsertNewCompetitors(competition, competitionSettings.Competitors); await competitionService.DbContext.SaveChangesAsync(); return(Ok(competition.Id)); } } catch (Exception e) { return(BadRequest()); } }
public async Task <int> CreateNewCompetitionWizard(CompetitionCreationInfoDTO competitionSettings) { using (var competitorService = new CompetitorService(DbContext)) using (var competitionPhaseService = new CompetitionPhaseService(DbContext)) { Competition competition = new Competition(); CompetitionPhase competitionPhase; Dictionary <int, Competitor> competitors; competition = CreateNewCompetition(competitionSettings.Options); competitors = competitorService.InsertNewCompetitors(competition, competitionSettings.Competitors); competitionPhase = competitionPhaseService.InsertNewCompetitionPhase(competition, 1, competitionSettings.AdvancedOptions.CompetitionPhaseType); var scheduleGenerator = ScheduleGeneratorFactory.Instance.GetScheduleGenerator(competitionSettings.AdvancedOptions.ScheduleType); var matchesByGroup = scheduleGenerator.GenerateSchedule(competitionSettings.CompetitorsAllocation as JArray, competitors, competitionPhase); foreach (var matches in matchesByGroup) { foreach (var match in matches.Value) { DbContext.Matches.Add(match); } } await SaveChangesAsync(); var allCompetitors = new List <Competitor>(); foreach (var competitor in competitors) { allCompetitors.Add(competitor.Value); } competitionPhaseService.UpdateCompetitionPhaseSettings(competitionPhase, competitionSettings.AdvancedOptions, matchesByGroup, competitionSettings.CompetitorsAllocation as JArray, competitors); competitorService.InsertNewCompetitorPhaseInfos(competitionPhase, allCompetitors); await SaveChangesAsync(); return(competition.Id); } }
// TODO: works only for existing competition public async Task <int> CreateNewCompetitionPhase(int competitionId, int stageId, CompetitionCreationInfoDTO competitionSettings) { using (var competitorService = new CompetitorService(DbContext)) { var competitionPhase = InsertNewCompetitionPhase(competitionId, stageId, competitionSettings.AdvancedOptions.CompetitionPhaseType); var competitorIds = competitionSettings.Competitors.Select(x => x.Id).ToList(); var competitorsLookup = competitorService.GetCompetitorsLookup(competitionId); var competitors = new Dictionary <int, Competitor>(); foreach (var competitor in competitorsLookup) { if (competitorIds.Contains(competitor.Key)) { competitors.Add(competitor.Key, competitor.Value); } } var scheduleGenerator = ScheduleGeneratorFactory.Instance.GetScheduleGenerator(competitionSettings.AdvancedOptions.ScheduleType); var matchesByGroup = scheduleGenerator.GenerateSchedule(competitionSettings.CompetitorsAllocation as JArray, competitors, competitionPhase); foreach (var matches in matchesByGroup) { foreach (var match in matches.Value) { DbContext.Matches.Add(match); } } await SaveChangesAsync(); var allCompetitors = new List <Competitor>(); foreach (var competitor in competitors) { allCompetitors.Add(competitor.Value); } UpdateCompetitionPhaseSettings(competitionPhase, competitionSettings.AdvancedOptions, matchesByGroup, competitionSettings.CompetitorsAllocation as JArray, competitors); competitorService.InsertNewCompetitorPhaseInfos(competitionPhase, allCompetitors); await SaveChangesAsync(); return(competitionPhase.Id); } }
public async Task <IHttpActionResult> InsertCompetitionPhase(int competitionId, [FromBody] CompetitionCreationInfoDTO competitionSettings) { try { using (var competitionPhaseService = new CompetitionPhaseService()) { // TODO: HACK competitionPhaseService.DeleteCompetitionPhase(competitionId); var competitionPhaseId = await competitionPhaseService.CreateNewCompetitionPhase(competitionId, 1, competitionSettings); return(Ok(competitionPhaseId)); } } catch (Exception e) { return(BadRequest()); } }