Exemple #1
0
        public async Task <IActionResult> AddUserToGroup([FromBody] int groupId, int userId)
        {
            var groupUserForCreationDto = new GroupUserForCreationDto();

            groupUserForCreationDto.GroupId = groupId;
            groupUserForCreationDto.UserId  = userId;
            var groupUser = _mapper.Map <GroupUser>(groupUserForCreationDto);


            var user = await _repo.GetUser(userId);

            if (user.Role.Equals("teacher"))
            {
                var permissions = new GroupPermissionsForCreation {
                    UserId = userId
                };
                var permissionsForCreation = _mapper.Map <GroupPermissions>(permissions);
                _repo.AddToRepo(permissionsForCreation);
            }

            _repo.AddToRepo(groupUser);
            if (await _repo.SaveAll())
            {
                return(Ok());
            }
            throw new Exception("Nie udało się dodać użytkownika do grupy");
        }
        public async Task <IActionResult> GetUser(int id)
        {
            var user = await _repo.GetUser(id);

            var userToReturn = _map.Map <UserForDetailedDto>(user);

            return(Ok(userToReturn));
        }
Exemple #3
0
        public async Task <IActionResult> SendMessage(int userId, CreateMessageDto messageForCreationDto)
        {
            var source = await _szkolniakRepo.GetUser(userId);

            messageForCreationDto.SenderId = userId;
            var message = _map.Map <Message>(messageForCreationDto);

            _szkolniakRepo.AddToRepo(message);
            await _szkolniakRepo.SaveAll();

            var messageToReturn = _map.Map <MessageToReturnDto>(message);

            return(CreatedAtRoute("GetMessage", new { userId, id = message.Id }, messageToReturn));
        }
        public async Task <IActionResult> UpdateRanking(int result)
        {
            var userId          = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);
            var resultsFromRepo = await _repo.GetQuizzesResults(userId);

            var resultFromRepo = 0;

            foreach (var row in resultsFromRepo)
            {
                resultFromRepo += row.Result;
            }
            resultFromRepo += result;
            var rankingFromRepo = await _repo.GetRanking();

            int rankingCount = 0;

            foreach (var rowRankingFromRepo in rankingFromRepo)
            {
                if (rowRankingFromRepo.UserId == userId)
                {
                    var rankingRowToDelete = await _repo.GetRankingRow(rowRankingFromRepo.Id);

                    _repo.DeleteFromRepo(rankingRowToDelete);
                }
                else
                {
                    rankingCount++;
                }
            }

            var rankingForCration = new RankingForCreationDto();

            var user = await _repo.GetUser(userId);

            rankingForCration.Username    = user.Username;
            rankingForCration.TotalPoints = resultFromRepo;
            rankingForCration.userId      = userId;
            if (rankingCount >= 10)
            {
                int min = 10000;
                foreach (var rowRankingFrom in rankingFromRepo)
                {
                    if (rowRankingFrom.TotalPoints < min)
                    {
                        min = rowRankingFrom.TotalPoints;
                    }
                }
                foreach (var rowRankingFrom in rankingFromRepo)
                {
                    if (rowRankingFrom.TotalPoints == min)
                    {
                        _repo.DeleteFromRepo(rowRankingFrom);
                        break;
                    }
                }
            }

            var ranking = new Ranking();

            _mapper.Map(rankingForCration, ranking);
            _repo.AddToRepo(ranking);
            if (await _repo.SaveAll())
            {
                return(Ok());
            }
            throw new Exception("Nie udalo się zaktualizować rankingu");
        }