예제 #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);
        }
예제 #2
0
        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));
        }
예제 #3
0
        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);
        }