// 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); }
// 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 }); }