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> > BuildFights(int contestId) { var acceptedFighterRequests = await _contestRequestRepository.GetContestAcceptedFighterRequests(contestId); var fighters = acceptedFighterRequests.Select(r => r.User).ToList(); var categories = acceptedFighterRequests.Select(r => r.ContestCategory).Distinct().ToList(); List <Fight> fights = new List <Fight>(); foreach (var category in categories) { FightsTree fightsTree = new FightsTree(contestId: contestId, contestCategoryId: category.Id, fightStructureId: category.FightStructureId, fighterCount: fighters.Count); _fightersTossupper.Tossup(fighters, fightsTree); var categoryFights = fightsTree.ToList(); fights.AddRange(categoryFights); } return(_mapper.Map <List <FightResponseModel> >(fights)); }
public async Task <IEnumerable <ContestCategoryWithFightersModel> > GetContestCategories(int contestId) { var requests = await _contestRequestsRepository.GetContestAcceptedFighterRequests(contestId); var contestCategoriesWithFighters = requests.GroupBy(r => r.ContestCategory) .Select(g => { var contestCategory = _mapper.Map <ContestCategoryWithFightersModel>(g.Key); var fighters = g.Select(request => request.User); contestCategory.Fighters = _mapper.Map <List <FighterModel> >(fighters); return(contestCategory); } ).ToList(); return(contestCategoriesWithFighters); }