public async Task <IActionResult> Update([FromBody] UpdateAchievementModel model) { return(await ProcessAsync(async() => { await _achievementService.Update(model); return Ok("Achievement updated."); }, Permissions.Behaviour.Achievements.EditAchievements)); }
public static Achievement GetEntity(UpdateAchievementModel updateModel) { return(new Achievement { Name = updateModel.Name, Description = updateModel.Description, XP = updateModel.XP, IconId = Guid.NewGuid() }); }
public async Task <IActionResult> Update([FromBody] UpdateAchievementModel model) { try { await _behaviourService.UpdateAchievement(model); return(Ok()); } catch (Exception e) { return(HandleException(e)); } }
public async Task <ReadAchievementModel> UpdateAchievementAsync(UpdateAchievementModel model, Guid id, CancellationToken cancellationToken) { var achievement = await _achievementRepository.GetByIdAsync(id, cancellationToken); achievement.Name = model.Name; achievement.Description = model.Description; var difference = achievement.XP - model.XP; if (difference != 0) { var pagingInfo = new PagingInfo { CurrentPage = 1, PageSize = 0 }; var userAchievements = await _userAchievementRepository.GetAllUsersByAchievementAsync(pagingInfo, id, cancellationToken); foreach (var userAchievement in userAchievements.Data) { if (userAchievement.Achievement.Id == id) { var user = await _userRepository.GetByIdAsync(userAchievement.User.Id, cancellationToken); user.XP -= difference; user.XP = user.XP >= 0 ? user.XP : 0; _userRepository.Update(user); await _unitOfWork.SaveChangesAsync(cancellationToken); } } } achievement.XP = model.XP; achievement.IconId = await _fileService.AddOrUpdateFileByIdAsync(model.Icon, achievement.IconId, cancellationToken); _achievementRepository.Update(achievement); await _unitOfWork.SaveChangesAsync(cancellationToken); return(_mapper.Map <ReadAchievementModel>(achievement)); }
public async Task <IActionResult> UpdateAchievementAsync([FromForm] UpdateAchievementModel model, Guid achievementId, CancellationToken cancellationToken) { var achievement = await _achievementService.GetAchievementByIdAsync(achievementId, cancellationToken); if (achievement == null) { return(NotFound()); } var resultValidation = await _updateAchievementModelValidator.ValidateAsync(model, cancellationToken); resultValidation.AddToModelState(ModelState, null); if (!ModelState.IsValid) { return(UnprocessableEntity(ModelState)); } var item = await _achievementService.UpdateAchievementAsync(model, achievementId, cancellationToken); return(Ok(item)); }
public async Task UpdateAchievementAsync_UpdateAchievementModel_ReturnsReadAchievementModel(UpdateAchievementModel model) { //Arrange var achievement = AchievementDumbData.GetEntity(model); var user = UserDumbData.GetRandomEntity(); var userAchievements = UserAchievementDumbData.GetRandomEntities(5, user, achievement); var returnPagingInfo = ReturnPagingInfoDumbData.GetForModel(new PagingInfo(), userAchievements); var expectedValue = _mapper.Map <ReadAchievementModel>(achievement); var cancellationToken = new CancellationToken(); _achievementRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken)).Returns(Task.FromResult(achievement)); _userAchievementRepository.Setup(x => x.GetAllUsersByAchievementAsync(It.IsAny <PagingInfo>(), It.IsAny <Guid>(), cancellationToken)).Returns(Task.FromResult(returnPagingInfo)); _userRepository.Setup(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken)).Returns(Task.FromResult(user)); _achievementRepository.Setup(x => x.Update(It.IsAny <Achievement>())); _fileService.Setup(x => x.AddOrUpdateFileByIdAsync(It.IsAny <IFormFile>(), It.IsAny <Guid?>(), cancellationToken)).Returns(Task.FromResult(expectedValue.IconId)); _unitOfWork.Setup(x => x.SaveChangesAsync(cancellationToken)).Returns(Task.CompletedTask); // Act var response = await _achievementService.UpdateAchievementAsync(model, achievement.Id, cancellationToken); // Assert _achievementRepository.Verify(x => x.GetByIdAsync(It.IsAny <Guid>(), cancellationToken), Times.Once); _achievementRepository.Verify(x => x.Update(It.IsAny <Achievement>()), Times.Once); _fileService.Verify(x => x.AddOrUpdateFileByIdAsync(It.IsAny <IFormFile>(), It.IsAny <Guid?>(), cancellationToken), Times.Once); _unitOfWork.Verify(x => x.SaveChangesAsync(cancellationToken), Times.Once); response.Should().BeEquivalentTo(expectedValue); }