コード例 #1
0
        public async Task <int> AddExperienceAsync(ExperienceForListDTO experienceForListDTO)
        {
            var experience = _mapper.Map <Experience>(experienceForListDTO);
            await _repository.AddExperienceAsync(experience);

            return(experience.Id);
        }
コード例 #2
0
        public async Task <Badges> UpdateExperienceAsync(int courseId, ExperienceForListDTO experienceForListDTO)
        {
            var category = await _repository.GetCategoryOfExamAsync(courseId);

            int categoryID = category.CategoryId;

            var experience_current = await _repository.GetUserExperienceByCategoryAsync(experienceForListDTO.UserId, categoryID);

            if (experience_current == null)
            {
                experienceForListDTO.CategoryId = categoryID;
                var exp_to_post = _mapper.Map <Experience>(experienceForListDTO);
                await _repository.AddExperienceAsync(exp_to_post);
            }
            else
            {
                var experience    = _repository.GetExperienceFromBase(experience_current.Id);
                var exp_from_base = experience.ExperiencePoints;

                experienceForListDTO.CategoryId = categoryID;

                var exp_to_add = exp_from_base + experienceForListDTO.ExperiencePoints;
                experienceForListDTO.ExperiencePoints = exp_to_add;
                experience.CategoryId = categoryID;

                var exp = _mapper.Map(experienceForListDTO, experience);
                await _repository.UpdateExperienceAsync(exp);

                // przydzielanie odznaki


                var badges_by_category = await _badgeRepository.GetBadgeByCategoryAsync(exp.CategoryId);

                foreach (var badge in badges_by_category)
                {
                    var assign = await _badgeRepository.GetAssignment(exp.UserId, badge.Id);

                    if (assign == null)
                    {
                        if (exp.ExperiencePoints >= badge.ExperiencePoints)
                        {
                            assignmentBadge = true;
                            BadgeAssignment assignment = new BadgeAssignment();
                            assignment.BadgeId = badge.Id;
                            assignment.UserId  = exp.UserId;

                            obtainedBadgeId = badge.Id;

                            await _badgeRepository.AssignBadge(assignment);
                        }
                    }
                }
                if (assignmentBadge == true)
                {
                    obtainedBadge = await _badgeRepository.GetBadgeAsync(obtainedBadgeId);
                }
            }
            return(obtainedBadge);
        }
コード例 #3
0
        public async Task <IActionResult> AddExperienceAsync([FromBody] ExperienceForListDTO experienceForListDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var result = await _service.AddExperienceAsync(experienceForListDTO);

            return(Ok(result));
        }
コード例 #4
0
        public async Task <IActionResult> UpdateExperienceAsync(int id, ExperienceForListDTO experienceForListDTO)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            if (experienceForListDTO == null)
            {
                throw new ArgumentNullException(nameof(experienceForListDTO));
            }



            var result = await _service.UpdateExperienceAsync(id, experienceForListDTO);

            return(Ok(result));
        }