public async Task <AchievementResponse> SaveAsync(Achievement achievement) { try { await _achievementRepository.AddAsync(achievement); await _unitOfWork.CompleteAsync(); return(new AchievementResponse(achievement)); } catch (Exception ex) { return(new AchievementResponse($"An error ocurred while saving the achievement: {ex.Message}")); } }
public async Task <ReadAchievementModel> AddAchievementAsync(CreateAchievementModel model, CancellationToken cancellationToken) { var achievement = new Achievement() { Name = model.Name, Description = model.Description, XP = model.XP }; achievement.IconId = await _fileService.AddOrUpdateFileByIdAsync(model.Icon, achievement.IconId, cancellationToken); await _achievementRepository.AddAsync(achievement, cancellationToken); await _unitOfWork.SaveChangesAsync(cancellationToken); return(_mapper.Map <ReadAchievementModel>(achievement)); }
public async Task <IActionResult> Post([FromBody] FeedbackCommand command) { try { var user = await _userManager.FindByNameAsync(User.Identity.Name); var receiver = (await _userInfo.GetUserProfileById(command.ReceiverId)).User; await _repository.AddAsync(new Feedback { CreatorId = user.Id, ReceiverId = receiver.Id, Description = command.Description, ProposalId = command.ProposalId, CreationDate = DateTime.Now }); if (command.Achievement != null) { var achievement = _achievements.GetAll().Where(x => x.User.UserInfoId == command.ReceiverId && x.Code == command.Achievement).FirstOrDefault(); if (achievement == null) { await _achievements.AddAsync(new Achievement { Points = 1, Code = command.Achievement.GetValueOrDefault(), UserId = receiver.Id }); } else { achievement.Points++; } } await _unitOfWork.Commit(); return(Ok()); } catch (Exception ex) { return(BadRequest(ex.Message)); } }