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}"));
            }
        }
Example #2
0
        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));
        }
Example #3
0
        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));
            }
        }