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)); }
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"); }