public void Execute() { var userCore = new Mock <IUserCore>(); var profile = new Mock <IProfile>(); var profiles = new List <UserPublicProfile>(); var userProfile = new UserPublicProfile() { PreferedProfile = true, GitHubHandle = StringHelper.ValidString(), }; profiles.Add(userProfile); userCore.Setup(u => u.PublicProfilesFull(It.IsAny <Application>(), true)).Returns(profiles); userCore.Setup(u => u.Save(It.IsAny <ProfilePage>())); profile.Setup(p => p.Evaluate(userProfile)).Returns(0); var game = new Gamification(userCore.Object, profile.Object); game.Execute(); userCore.Verify(u => u.PublicProfilesFull(It.IsAny <Application>(), true), Times.Once()); userCore.Verify(u => u.Save(It.IsAny <ProfilePage>()), Times.Once()); profile.Verify(p => p.Evaluate(userProfile), Times.Once()); }
public async Task <IActionResult> Edit(int id, [Bind("GamificationID,PointsPerComment,PointsPerEvaluation,PointsPerService,GamificationName")] Gamification gamification) { if (id != gamification.GamificationID) { return(View("/Views/Shared/NotFound.cshtml")); } if (ModelState.IsValid) { try { _context.Update(gamification); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!GamificationExists(gamification.GamificationID)) { return(View("/Views/Shared/NotFound.cshtml")); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(gamification)); }
public async Task <IActionResult> ActivateConfirmed([Bind("GamificationID,PointsPerComment,PointsPerEvaluation,PointsPerService,GamificationName")] Gamification newConfiguration) { if (_context.Gamification.Find(newConfiguration.GamificationID) == null) { return(View("/Views/Shared/NotFound.cshtml")); } //Deactivate current active configurations var currentConfigurations = await _context.Gamification.Where(c => c.IsActive == true).ToListAsync(); foreach (var configuration in currentConfigurations) { configuration.IsActive = false; _context.Gamification.Update(configuration); } //Activate chosen configuration newConfiguration.IsActive = true; _context.Gamification.Update(newConfiguration); //Update Database await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Configurations))); }
public OperationResultVo FillProfileGamificationDetails(Guid currentUserId, ref ProfileViewModel vm) { try { Gamification gamification = gamificationDomainService.GetByUserId(vm.UserId); GamificationLevel currentLevel = gamificationDomainService.GetLevel(gamification.CurrentLevelNumber); if (currentLevel == null) { currentLevel = new GamificationLevel { Name = "No Levels On The Database" }; } vm.IndieXp.LevelName = currentLevel.Name; vm.IndieXp.CurrentLevelNumber = gamification.CurrentLevelNumber; vm.IndieXp.XpCurrentLevel = gamification.XpCurrentLevel; vm.IndieXp.XpCurrentLevelMax = gamification.XpToNextLevel + gamification.XpCurrentLevel; return(new OperationResultVo(true)); } catch (Exception ex) { return(new OperationResultVo(ex.Message)); } }
public ActionResult DeleteConfirmed(Guid id) { Gamification gamification = db.Gamifications.Find(id); db.Gamifications.Remove(gamification); db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult Edit([Bind(Include = "ID,gamificationId")] Gamification gamification) { if (ModelState.IsValid) { db.Entry(gamification).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(gamification)); }
public int ProcessAction(Guid userId, PlatformAction action) { int scoreValue = 5; GamificationAction actionToProcess = Task.Run(async() => await gamificationActionRepository.GetByAction(action)).Result; if (actionToProcess != null) { scoreValue = actionToProcess.ScoreValue; } Task <IEnumerable <Gamification> > userGamificationTask = gamificationRepository.GetByUserId(userId); userGamificationTask.Wait(); Gamification userGamification = userGamificationTask.Result.FirstOrDefault(); if (userGamification == null) { GamificationLevel newLevel = Task.Run(async() => await gamificationLevelRepository.GetByNumber(1)).Result; userGamification = GenerateNewGamification(userId); userGamification.XpCurrentLevel += scoreValue; userGamification.XpTotal += scoreValue; userGamification.XpToNextLevel = (newLevel.XpToAchieve - scoreValue); gamificationRepository.Add(userGamification); } else { userGamification.XpCurrentLevel += scoreValue; userGamification.XpTotal += scoreValue; userGamification.XpToNextLevel -= scoreValue; if (userGamification.XpToNextLevel <= 0) { GamificationLevel currentLevel = Task.Run(async() => await gamificationLevelRepository.GetByNumber(userGamification.CurrentLevelNumber)).Result; GamificationLevel newLevel = Task.Run(async() => await gamificationLevelRepository.GetByNumber(userGamification.CurrentLevelNumber + 1)).Result; if (newLevel != null) { userGamification.CurrentLevelNumber = newLevel.Number; userGamification.XpCurrentLevel = (userGamification.XpCurrentLevel - currentLevel.XpToAchieve); userGamification.XpToNextLevel = (newLevel.XpToAchieve - userGamification.XpCurrentLevel); } } gamificationRepository.Update(userGamification); } return(scoreValue); }
public ActionResult Create([Bind(Include = "ID,gamificationId")] Gamification gamification) { if (ModelState.IsValid) { gamification.ID = Guid.NewGuid(); db.Gamifications.Add(gamification); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(gamification)); }
// GET: Gamifications/Delete/5 public ActionResult Delete(Guid?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Gamification gamification = db.Gamifications.Find(id); if (gamification == null) { return(HttpNotFound()); } return(View(gamification)); }
public Gamification GetByUserId(Guid userId) { Task <IEnumerable <Gamification> > userGamificationTask = gamificationRepository.GetByUserId(userId); userGamificationTask.Wait(); Gamification userGamification = userGamificationTask.Result.FirstOrDefault(); if (userGamification == null) { userGamification = GenerateNewGamification(userId); gamificationRepository.Add(userGamification); } return(userGamification); }
private Gamification GenerateNewGamification(Guid userId) { Gamification userGamification; GamificationLevel firstLevel = Task.Run(async() => await gamificationLevelRepository.GetByNumber(1)).Result; userGamification = new Gamification { CurrentLevelNumber = firstLevel.Number, UserId = userId, XpCurrentLevel = 0, XpToNextLevel = firstLevel.XpToAchieve, XpTotal = 0 }; return(userGamification); }
public async Task <IActionResult> Create([Bind("GamificationID,PointsPerComment,PointsPerEvaluation,PointsPerService,GamificationName")] Gamification gamification) { var activeConfiguration = await _context.Gamification.Where(g => g.IsActive == true).FirstOrDefaultAsync(); if (ModelState.IsValid) { if (activeConfiguration == null) { gamification.IsActive = true; } else { gamification.IsActive = false; } _context.Add(gamification); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(gamification)); }
public async void Create_ReturnRedirect() { var size = Context.Gamification.Count(); var gamification = new Gamification() { GamificationID = 4, PointsPerComment = 5, GamificationName = "Teste 4", PointsPerEvaluation = 5, PointsPerService = 5, IsActive = false }; Controller.ControllerContext.HttpContext = new DefaultHttpContext { User = ModeradorLog }; var result = await Controller.Create(gamification); var actionResult = Assert.IsType <RedirectToActionResult>(result); Assert.Equal("Index", actionResult.ActionName); Assert.Equal(size + 1, Context.Gamification.Count()); }
public bool Register(UserRegisterRequest user) { if (_userRepository.GetUserByEmail(user.Email) != null) { return(false); } var gamification = new Gamification { LevelName = "Nivel 1", Experience = 0, WeeklyExp = 0, Tokens = 0, }; Group defaultGroup = new Group { GroupName = "MyGroup", }; User userCreate = new User { Email = user.Email, Password = user.Password, FCMToken = user.FCMToken, Level = gamification, }; if (user.InviteCode != null) { var groupGet = _groupRepository.GetByInviteCode(user.InviteCode); if (groupGet != null) { userCreate.Group = groupGet; userCreate.GroupId = groupGet.GroupId; } else { return(false); } } else { userCreate.Group = defaultGroup; _groupRepository.InsertGroup(defaultGroup); } _userRepository.Insert(userCreate); _gamificationRepository.Insert(gamification); if (_context.SaveChanges() > 0) { return(true); } return(false); }