public async Task <ActionResult <PageRS <AnalysisTestDTO> > > GetTestsAsync([FromBody] SearchPaginatedRQ body) { var entities = _analysisRepo.GetPaginated(body, out int pageCnt, out int pageNo); #region Get_CreatedBy_Users_Details var createdByIds = entities.Select(e => e.CreatedBy); var createdByDetails = await _msGraph.GetStudentsByIds(createdByIds); #endregion #region Get_Student_Users_Details var studentIds = entities.Select(e => e.STS_StudentId); var studentDetails = await _msGraph.GetStudentsByIds(studentIds); #endregion #region Map_Result var res = entities.Select(entity => { var createdByDetail = createdByDetails.Single(ud => ud.MicrosoftId == entity.CreatedBy); var studentDetail = studentDetails.Single(ud => ud.MicrosoftId == entity.STS_StudentId); return(new AnalysisTestDTO(entity, createdByDetail, studentDetail)); }); #endregion return(new PageRS <AnalysisTestDTO>(res, pageCnt, pageNo)); }
public async Task <ActionResult <PageRS <TaskDTO> > > GetTasksAsync([FromBody] SearchPaginatedRQ body) { var entities = _taskRepo.GetPaginated(body, out int pageCnt, out int pageNo); #region Get_CreatedBy_Users_Details var createdByIds = entities.Select(e => e.CreatedBy); var createdByDetails = await _msGraph.GetStudentsByIds(createdByIds); #endregion #region Map_Result var res = entities.Select(te => { var createdByDetail = createdByDetails.Single(ud => ud.MicrosoftId == te.CreatedBy); return(new TaskDTO(te, createdByDetail)); }); #endregion return(new PageRS <TaskDTO>(res, pageCnt, pageNo)); }
public List <TaskEntity> GetPaginated(SearchPaginatedRQ request, out int pageCnt, out int pageNo) { var qry = _context.Tasks .Include(x => x.Template) .AsNoTracking(); #region Filter foreach (var filter in request.Filters) { var filterValue = filter.Value.ToLower(); switch (filter.Key) { case "name": qry = qry.Where(x => x.Name.ToLower().Contains(filterValue)); break; case "template_name": qry = qry.Where(x => x.Template.Name.ToLower().Contains(filterValue)); break; } } #endregion #region Page_Count_and_Number pageNo = request.Page > 0 ? request.Page : 1; pageCnt = 1; if (request.PageSize > 0) { var total = qry.Count(); pageCnt = total / request.PageSize; if (total % request.PageSize > 0) { pageCnt++; } } #endregion #region Sort if (string.IsNullOrEmpty(request.SortBy)) { qry = qry.OrderBy(x => x.DateCreated); } else { switch (request.SortBy) { case "name": qry = request.SortDescending ? qry.OrderByDescending(x => x.Name) : qry.OrderBy(x => x.Name); break; case "template_name": qry = request.SortDescending ? qry.OrderByDescending(x => x.Template.Name) : qry.OrderBy(x => x.Template.Name); break; case "date_created": qry = request.SortDescending ? qry.OrderByDescending(x => x.DateCreated) : qry.OrderBy(x => x.DateCreated); break; } } #endregion #region Skip if (request.Page > 0 && request.PageSize > 0) { qry = qry.Skip((request.Page - 1) * request.PageSize) .Take(request.PageSize); } #endregion return(qry.ToList()); }
public List <AnalysisTestEntity> GetPaginated(SearchPaginatedRQ request, out int pageCnt, out int pageNo) { var qry = _context.AnalysisTests .Include(at => at.SynthesisTestStudent) .ThenInclude(sts => sts.SynthesisTest) .ThenInclude(st => st.Task) .ThenInclude(t => t.Template) .Include(at => at.SynthesisTestStudent) .ThenInclude(sts => sts.Student) .AsNoTracking(); #region Filter foreach (var filter in request.Filters) { var filterValue = filter.Value.ToLower(); switch (filter.Key) { case "name": qry = qry.Where(x => x.Name.ToLower().Contains(filterValue)); break; case "task_name": qry = qry.Where(x => x.SynthesisTestStudent.SynthesisTest.Task.Name.ToLower().Contains(filterValue)); break; case "template_name": qry = qry.Where(x => x.SynthesisTestStudent.SynthesisTest.Task.Template.Name.ToLower().Contains(filterValue)); break; case "test_status": var statusId = int.Parse(filter.Value); if (statusId > 0) { qry = qry.Where(x => x.Status == (TestStatus)statusId); } break; } } #endregion #region Page_Count_and_Number pageNo = request.Page > 0 ? request.Page : 1; pageCnt = 1; if (request.PageSize > 0) { var total = qry.Count(); pageCnt = total / request.PageSize; if (total % request.PageSize > 0) { pageCnt++; } } #endregion #region Sort if (string.IsNullOrEmpty(request.SortBy)) { qry = qry.OrderBy(x => x.DateCreated); } else { switch (request.SortBy) { case "name": qry = request.SortDescending ? qry.OrderByDescending(x => x.Name) : qry.OrderBy(x => x.Name); break; case "task_name": qry = request.SortDescending ? qry.OrderByDescending(x => x.SynthesisTestStudent.SynthesisTest.Task.Name) : qry.OrderBy(x => x.SynthesisTestStudent.SynthesisTest.Task.Name); break; case "template_name": qry = request.SortDescending ? qry.OrderByDescending(x => x.SynthesisTestStudent.SynthesisTest.Task.Template.Name) : qry.OrderBy(x => x.SynthesisTestStudent.SynthesisTest.Task.Template.Name); break; case "date_created": qry = request.SortDescending ? qry.OrderByDescending(x => x.DateCreated) : qry.OrderBy(x => x.DateCreated); break; case "test_status": qry = request.SortDescending ? qry.OrderByDescending(x => x.Status) : qry.OrderBy(x => x.Status); break; } } #endregion #region Skip if (request.Page > 0 && request.PageSize > 0) { qry = qry.Skip((request.Page - 1) * request.PageSize) .Take(request.PageSize); } #endregion return(qry.ToList()); }