Beispiel #1
0
        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);
            }
        }
Beispiel #5
0
        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 }
                });
            }
        }