Esempio n. 1
0
        public async Task <IActionResult> Students(StudentsSearchRequest searchRequest)
        {
            var model = new StudentSearchModel();

            if (searchRequest != null)
            {
                var searchParameters = RequestParameters.CreateFromModel(searchRequest); // Generates url parameters from searchRequest object
                searchParameters.Add("Test", true);                                      // Also, you can specify additional parameters

                var response = await GetRequest($@"{_settings.Value.ApiUrl}/api/Student/search", searchParameters);

                var responseObject = JsonConvert.DeserializeObject <StudentsSearchResponse>(
                    await response.Content.ReadAsStringAsync());

                model.SearchResult = responseObject.Students;
            }

            model.SearchParameters = searchRequest;

            var gradeResponse = await GetRequest($@"{_settings.Value.ApiUrl}/api/Grade/get-all");

            var greadesList = JsonConvert.DeserializeObject <List <Grade> >(
                await gradeResponse.Content.ReadAsStringAsync());

            model.AvailableGrades = greadesList.Select(x =>
                                                       new SelectListItem(x.GradeName, x.Id.ToString(),
                                                                          searchRequest.SelectedGradeIds == null ? false : searchRequest.SelectedGradeIds.Contains(x.Id))).ToList();

            return(View(model));
        }
Esempio n. 2
0
        public async Task <StudentInfo[]> Search(StudentsSearchRequest request)
        {
            IQueryable <DbStudent> query = GetFilteredQuery(request);

            var withGroups = from q in query
                             join sg in _context.StudentGroups on q.Id equals sg.StudentId into sgs
                             from sg in sgs.DefaultIfEmpty()
                             join g in _context.Groups on sg.GroupId equals g.Id into gs
                             from g in gs.DefaultIfEmpty()
                             select new { Student = q, Group = g.Name };

            var listGroups = await withGroups.ToListAsync();

            var grouped = from s in listGroups
                          group s by s.Student into g
                          select new { Student = g.Key, Groups = g.Select(x => x.Group) };

            return(grouped.Select(x => new StudentInfo
            {
                Id = x.Student.Id,
                FIO = $"{x.Student.LastName} {x.Student.FirstName} {x.Student.MiddleName}",
                UniqueCode = x.Student.UniqueCode,
                Groups = string.Join(", ", x.Groups)
            }).ToArray());
        }
Esempio n. 3
0
        private IQueryable <DbStudent> GetFilteredQuery(StudentsSearchRequest request)
        {
            var query = _context.Students.AsQueryable();

            if (!string.IsNullOrEmpty(request.FIO))
            {
                query = query.Where(x => x.FirstName.Contains(request.FIO) || x.LastName.Contains(request.FIO) || x.MiddleName.Contains(request.FIO));
            }

            if (!string.IsNullOrEmpty(request.UniqueCode))
            {
                query = query.Where(x => x.UniqueCode == request.UniqueCode);
            }

            if (!string.IsNullOrEmpty(request.Gender))
            {
                query = query.Where(x => x.Gender == request.Gender);
            }

            if (!string.IsNullOrEmpty(request.GroupName))
            {
                var studentsInGroup = from sg in _context.StudentGroups
                                      join g in _context.Groups on sg.GroupId equals g.Id
                                      where g.Name == request.GroupName
                                      select sg.StudentId;

                query = query.Where(x => studentsInGroup.Contains(x.Id));
            }

            return(query.OrderBy(x => x.Id).Skip(request.PageSize * (request.PageNumber - 1)).Take(request.PageSize));
        }
        public StudentsSearchResponse SearchStudents([FromQuery] StudentsSearchRequest request, [FromQuery] bool test)
        {
            var students = _studentRepository.GetAllQ();

            if (request.HeightFrom != null)
            {
                students = students.Where(x => x.Height > request.HeightFrom);
            }
            if (request.HeightTo != null)
            {
                students = students.Where(x => x.Height < request.HeightTo);
            }

            if (request.WeightFrom != null)
            {
                students = students.Where(x => x.Weight > request.WeightFrom);
            }
            if (request.WeightTo != null)
            {
                students = students.Where(x => x.Weight < request.WeightTo);
            }

            if (!String.IsNullOrEmpty(request.NameSearchText))
            {
                students = students.Where(x => x.StudentName.Contains(request.NameSearchText) || request.NameSearchText.Contains(x.StudentName));
            }

            if (request.SelectedGradeIds != null && request.SelectedGradeIds.Count > 0)
            {
                students = students.Where(x => request.SelectedGradeIds.Contains(x.GradeId));
            }

            var searchResponse = new StudentsSearchResponse();

            searchResponse.Students = students.ToList();

            return(searchResponse);
        }
Esempio n. 5
0
 public async Task <StudentInfo[]> GetStudents(StudentsSearchRequest request)
 {
     return(await _studentsRepository.Search(request));
 }
Esempio n. 6
0
 public async Task <ActionResult <StudentInfo[]> > GetStudents([FromQuery] StudentsSearchRequest request)
 {
     return(await _educationService.GetStudents(request));
 }