public async Task <string> GenerateFightsDraws(int contestId, int categoryId) { var acceptedFighterRequests = await _contestRequestRepository.GetContestAcceptedFighterRequests(contestId, categoryId); var fighters = acceptedFighterRequests.Select(r => r.User).ToList(); var category = await _contestCategoriesRepository.Get(categoryId); FightsTree fightsTree = new FightsTree(contestId: contestId, contestCategoryId: categoryId, fightStructureId: category.FightStructureId, fighterCount: fighters.Count); _fightersTossupper.Tossup(fighters, fightsTree); var fights = fightsTree.ToList(); await _fightsRepository.SaveFights(fights); _fightsDiagramBuilder.GenerateFightDiagram(fights); string fightsDrawsJson = _fightsDiagramBuilder.ToJson(); return(fightsDrawsJson); }
public async Task <List <FightResponseModel> > MoveFight(FightMoving fightMoving) { var fight = await _fightsRepository.Get(fightMoving.SourceFightId); var fights = await _fightsRepository.GetFights(fight.ContestId); var sourceFight = fights.First(f => f.Id == fightMoving.SourceFightId); var targetFight = fights.First(f => f.Id == fightMoving.TargetFightId); DateTime?startTime = sourceFight.StartDate; sourceFight.StartDate = targetFight.StartDate; targetFight.StartDate = startTime; fights = fights.Where(f => f.Ring == fight.Ring).OrderBy(f => f.StartDate).ToList(); for (int i = 0; i < fights.Count; i++) { fights[i].StartNumber = i + 1; } await _fightsRepository.SaveFights(fights); return(_mapper.Map <List <FightResponseModel> >(fights)); }
public async Task <List <Fight> > MoveFighterToFight(FighterMoving fighterMoving) { Fight sourceFight = await _repository.Get(fighterMoving.SourceFightId); Fight targetFight = fighterMoving.SourceFightId != fighterMoving.TargetFightId ? await _repository.Get(fighterMoving.TargetFightId) : sourceFight; string sourceRedFighterId = sourceFight.RedAthleteId; string sourceBlueFighterId = sourceFight.BlueAthleteId; if (targetFight.RedAthleteId == fighterMoving.TargetFighterId) { targetFight.RedAthleteId = fighterMoving.SourceFighterId; } if (targetFight.BlueAthleteId == fighterMoving.TargetFighterId) { targetFight.BlueAthleteId = fighterMoving.SourceFighterId; } if (sourceRedFighterId == fighterMoving.SourceFighterId) { sourceFight.RedAthleteId = fighterMoving.TargetFighterId; } if (sourceBlueFighterId == fighterMoving.SourceFighterId) { sourceFight.BlueAthleteId = fighterMoving.TargetFighterId; } var fights = new List <Fight> { sourceFight, targetFight }; await _repository.SaveFights(fights); return(fights); }