Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
0
        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());
        }