public async Task <List <AlgorithmTaskListForDisplayDTO> > GetAlgorithmTasksForDisplayAsync() { int rateCounter = 0; int rateSum = 0; var tasks = await _repository.GetAlgorithmTasksForDisplayAsync(); var mappedTask = _mapper.Map <List <AlgorithmTaskListForDisplayDTO> >(tasks); foreach (var item in mappedTask) { var result = await _repository.GetRateListByIdAsync(item.Id); rateCounter = 0; rateSum = 0; foreach (var rate in result) { rateSum += rate.Points; rateCounter++; } if (rateCounter > 0 && rateSum > 0) { int rateAverage = rateSum / rateCounter; item.RatePoints = rateAverage; } } return(mappedTask); }
public async Task <List <AlgorithmTaskListForDisplayDTO> > GetTasksAssignedToUserAsync(int userId) { int rateCounter; int rateSum; List <AlgorithmTask> tasks = new List <AlgorithmTask>(); List <AlgorithmTask> filteredTasks = new List <AlgorithmTask>(); List <AlgorithmTask> correctTasks = new List <AlgorithmTask>(); var user = await _repository.GetTasksAssignedToUserAsync(userId); var verdicts = await _verdictRepository.GetUserVerdictsAsync(userId); foreach (var assignment in user.GroupAssignment) { foreach (var courseAssignment in assignment.Group.TaskToGroupAssignment) { tasks.Add(courseAssignment.AlgorithmTask); } } foreach (var task in tasks.ToList()) { if (!filteredTasks.Contains(task)) { filteredTasks.Add(task); } } foreach (var task in filteredTasks) { var taskDB = await _repository.GetAlgorithmTaskAsync(task.Id); correctTasks.Add(taskDB); } var mappedTasks = _mapper.Map <List <AlgorithmTaskListForDisplayDTO> >(correctTasks); foreach (var item in mappedTasks) { var result = await _taskRepository.GetRateListByIdAsync(item.Id); rateCounter = 0; rateSum = 0; foreach (var rate in result) { rateSum += rate.Points; rateCounter++; } if (rateCounter > 0 && rateSum > 0) { int rateAverage = rateSum / rateCounter; item.RatePoints = rateAverage; } } foreach (var item in mappedTasks.ToList()) { foreach (var verdict in verdicts) { if (verdict.AlgorithmTaskId == item.Id) { mappedTasks.Remove(item); break; } } } return(mappedTasks); }