public async Task <OperationDetailDTO <StudentDTO> > GetProfileDataAsync() { var detail = new OperationDetailDTO <StudentDTO>(); try { var currentUserEntity = await GetUserFromClaimsAsync(); var studentEntity = await _context.Students .Include(s => s.User) .Include(s => s.Group) .ThenInclude(g => g.Faculty) .Where(s => s.UserId == currentUserEntity.Id) .FirstOrDefaultAsync(); var dto = StudentDTO.Map(studentEntity); detail.Succeeded = true; detail.Data = dto; return(detail); } catch (Exception e) { detail.Succeeded = false; detail.ErrorMessages.Add(_serverErrorMessage + e.Message); return(detail); } }
// список существующих студентов public async Task <OperationDetailDTO <List <StudentDTO> > > GetExistStudentsAsync() { var resultList = new List <StudentDTO>(); try { var entityList = await _context.Students .Include(s => s.Group) .AsNoTracking() .ToListAsync(); foreach (var entity in entityList) { var studentDTO = StudentDTO.Map(entity); resultList.Add(studentDTO); } return(new OperationDetailDTO <List <StudentDTO> > { Succeeded = true, Data = resultList }); } catch (Exception e) { return(new OperationDetailDTO <List <StudentDTO> > { Succeeded = false, ErrorMessages = { _entityGettingError + _serverErrorMessage + e.Message } }); } }
// список заявок студентов public async Task <OperationDetailDTO <List <StudentDTO> > > GetStudentRegisterRequestsAsync() { var resultList = new List <StudentDTO>(); try { var entityList = await _context.StudentRegisterRequests .AsNoTracking() .ToListAsync(); foreach (var entity in entityList) { var studentDTO = StudentDTO.Map(entity); studentDTO.GroupNumber = _context.Groups.FirstOrDefault(g => g.Id == entity.GroupId).NumberName; resultList.Add(studentDTO); } return(new OperationDetailDTO <List <StudentDTO> > { Succeeded = true, Data = resultList }); } catch (Exception e) { return(new OperationDetailDTO <List <StudentDTO> > { Succeeded = false, ErrorMessages = { _entityGettingError + _serverErrorMessage + e.Message } }); } }
// TEST: files for solutions // done public async Task <OperationDetailDTO <TaskDTO> > GetTaskByIDAsync(int id) { var detail = new OperationDetailDTO <TaskDTO>(); var resultTaskDTO = new TaskDTO(); var resSolutionDTOList = new List <SolutionDTO>(); var resStudentDTOList = new List <StudentDTO>(); try { var entity = await _context.TaskModels .Include(t => t.Group) .Include(t => t.TaskStudentItems) .Include(t => t.Solutions) .Include(t => t.Subject) .Include(t => t.Type) .Include(t => t.File) .Include(t => t.Teacher) .FirstOrDefaultAsync(t => t.Id == id); if (entity == null) { detail.ErrorMessages.Add("Задача не найдена."); return(detail); } foreach (var ts in entity.TaskStudentItems) { var studentEntuty = await _context.Students.FindAsync(ts.StudentId); resStudentDTOList.Add(StudentDTO.Map(studentEntuty)); } // [files] foreach (var solution in entity.Solutions) { var solutionEntity = await _context.Solutions .Include(s => s.File) .Where(s => s == solution) .FirstOrDefaultAsync(); resSolutionDTOList.Add(SolutionDTO.Map(solutionEntity)); } resultTaskDTO = TaskDTO.Map(entity); _taskService.GetCurrentTimePercentage(ref resultTaskDTO); resultTaskDTO.Solutions = resSolutionDTOList; resultTaskDTO.Students = resStudentDTOList; detail.Data = resultTaskDTO; detail.Succeeded = true; return(detail); } catch (Exception e) { detail.ErrorMessages.Add(_serverErrorMessage + e.Message); return(detail); } }
public static GroupDTO Map(Group entity) { var dto = new GroupDTO { Id = entity.Id, Name = entity.NumberName, FacultyId = entity.FacultyId }; if (entity.Students != null) { foreach (var s in entity.Students) { dto.Students.Add(StudentDTO.Map(s)); } } return(dto); }
// отфильтрованный список существующих студентов public async Task <OperationDetailDTO <List <StudentDTO> > > GetExistStudentsAsync(FilterDTO[] filters = null) { var resultList = new List <StudentDTO>(); try { var students = from s in _context.Students.Include(s => s.User).Include(s => s.Group).ThenInclude(g => g.Faculty) select s; students = students.OrderBy(s => s.Surname); if (filters != null) { foreach (var filter in filters) { switch (filter.Name) { case "facultyId": { var value = Convert.ToInt32(filter.Value); if (value > 0) { students = students.Where(s => s.Group.FacultyId == value); } break; } case "groupId": { var value = Convert.ToInt32(filter.Value); if (value > 0) { students = students.Where(s => s.GroupId == value); } break; } case "searchString": { var value = filter.Value.ToUpper(); if (!String.IsNullOrEmpty(value)) { students = students.Where(s => s.Name.ToUpper().Contains(value) || s.Surname.ToUpper().Contains(value) || s.Patronymic.ToUpper().Contains(value) || s.Group.NumberName.Contains(value) || s.User.NormalizedUserName.Contains(value)); } break; } } } } foreach (var entity in await students.ToListAsync()) { var studentDTO = StudentDTO.Map(entity); studentDTO.GroupNumber = _context.Groups.FirstOrDefault(g => g.Id == entity.GroupId).NumberName; resultList.Add(studentDTO); } return(new OperationDetailDTO <List <StudentDTO> > { Succeeded = true, Data = resultList }); } catch (Exception e) { return(new OperationDetailDTO <List <StudentDTO> > { Succeeded = false, ErrorMessages = { _entityGettingError + _serverErrorMessage + e.Message } }); } }