Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }