コード例 #1
0
ファイル: ModuleService.cs プロジェクト: LeszekR/EduBot
        // PUBLIC
        // =============================================================================================
        public List <ModuleResultDTO> AllUserEasyModules(int userId)
        {
            var modules     = _moduleRepository.All().Where(m => m.difficulty == "easy").ToList();
            var user        = _userService.GetUserEntity(userId);
            var userModules = user.edumodule.ToList();

            // TODO uporządkować to!!!

            var moduleResultDtos = new List <ModuleResultDTO>();

            for (int i = 0; i < modules.Count(); i++)
            {
                if (modules[i].test_question.Count() > 0 || modules[i].test_code.Count() > 0)
                {
                    moduleResultDtos.Add(GetModuleResultDTO(modules[i], user));
                }
                else
                {
                    moduleResultDtos.Add(new ModuleResultDTO()
                    {
                        id             = modules[i].id,
                        group_position = modules[i].group_position,
                        noQuizCode     = true
                    });
                }
            }


            // sorting the modules
            moduleResultDtos.Sort((a, b) => {
                if (a.group_position == b.group_position)
                {
                    return(0);
                }
                return(a.group_position > b.group_position ? 1 : -1);
            });

            return(moduleResultDtos);
        }
コード例 #2
0
ファイル: EduAlgorithmService.cs プロジェクト: LeszekR/EduBot
        // PUBLIC
        // =============================================================================================
        public GameScoreDTO GetScore(int userId)
        {
            var user = _userService.GetUserEntity(userId);

            // obliczenie aktualnego postępu = procentu przerobionych modułów
            var userModulesAll = user.edumodule.ToList();
            int nDone          = 0;
            List <edumodule> children;

            foreach (var m in userModulesAll)
            {
                // pobranie dzieci modułu
                children = _moduleService.SelectChildren(m.id);

                // jeżeli nie ma dzieci - dodajemy 1
                if (children.Count() == 0)
                {
                    nDone++;
                    continue;
                }

                // jeżeli którekolwiek dziecko też jest na liście - pomijamy ten moduł
                // a jeśli dzieci nie ma - dodajemy liczbę dzieci modułu, uwzględaniając
                // ich dzieci - liczymy tylko moduły na poziomie 'easy'
                if (children.FirstOrDefault(c => userModulesAll.Contains(c)) == null)
                {
                    foreach (var child in children)
                    {
                        nDone += countEasiestChildren(child);
                    }
                }
            }

            var nTotal   = _moduleRepository.All().Count();
            var progress = nTotal == 0 ? 0 : 100 * nDone / nTotal;


            //DistractorDTO distractorDto = GamePromotionDistractor(userId, ref user);

            return(new GameScoreDTO()
            {
                progress = progress,
                life = (int)(user.user_game.life / 10),
                shield = (int)(user.user_game.shield),
                rank = (MilitaryRank)user.user_game.rank,
                //distractor = distractorDto
            });
        }