コード例 #1
0
 public IHttpActionResult GetStudents([FromBody] StudentConditionSearch conditionSearch)
 {
     try
     {
         return(Ok(_studentManagementService.GetListStudents(conditionSearch)));
     }
     catch (System.Exception e)
     {
         return(InternalServerError(e));
     }
 }
コード例 #2
0
        public StudentResponseDto GetListStudents(StudentConditionSearch conditionSearch)
        {
            if (conditionSearch == null)
            {
                conditionSearch = new StudentConditionSearch();
            }
            var ListClassId = conditionSearch.ProgramId == 0 ? new List <int>() : GetClassIdByProgramId(conditionSearch.ProgramId);

            // Lấy các thông tin dùng để phân trang
            var paging = new Paging(db.Students.Include(x => x.UserInfo).Include(d => d.Class).Count(x => !x.DelFlag &&
                                                                                                     //Search tên hoặc cmnd
                                                                                                     (conditionSearch.Keyword == null ||
                                                                                                      (conditionSearch.Keyword != null && (x.UserInfo.FirstName.Contains(conditionSearch.Keyword) ||
                                                                                                                                           x.UserInfo.LastName.Contains(conditionSearch.Keyword) || x.IdentificationNumber.Contains(conditionSearch.Keyword))))
                                                                                                     //Search lớp
                                                                                                     && (conditionSearch.ClassId == 0 ||
                                                                                                         (conditionSearch.ClassId != 0 && (x.ClassId == conditionSearch.ClassId)))
                                                                                                     //Search ngành
                                                                                                     && (conditionSearch.DepartmentId == 0 ||
                                                                                                         (conditionSearch.DepartmentId != 0 && (x.Class.DepartmentId == conditionSearch.DepartmentId)))

                                                                                                     //search chương trình
                                                                                                     && (conditionSearch.ProgramId == 0 ||
                                                                                                         (conditionSearch.ProgramId != 0 && ListClassId.Contains(x.ClassId)))
                                                                                                     )
                                    , conditionSearch.CurrentPage, conditionSearch.PageSize);

            // Tìm kiếm và lấy dữ liệu theo trang
            var listOfstudent = db.Students.Include(x => x.UserInfo).Include(d => d.Class).Where(x => !x.DelFlag &&
                                                                                                 (conditionSearch.Keyword == null ||
                                                                                                  (conditionSearch.Keyword != null && (x.UserInfo.FirstName.Contains(conditionSearch.Keyword) ||
                                                                                                                                       x.UserInfo.LastName.Contains(conditionSearch.Keyword) || x.IdentificationNumber.Contains(conditionSearch.Keyword)))) &&
                                                                                                 (conditionSearch.ClassId == 0 ||
                                                                                                  (conditionSearch.ClassId != 0 && (x.ClassId == conditionSearch.ClassId))) &&
                                                                                                 (conditionSearch.DepartmentId == 0 ||
                                                                                                  (conditionSearch.DepartmentId != 0 && (x.Class.DepartmentId == conditionSearch.DepartmentId))) &&
                                                                                                 (conditionSearch.ProgramId == 0 ||
                                                                                                  (conditionSearch.ProgramId != 0 && ListClassId.Contains(x.ClassId)))).ToList()
                                .OrderBy(x => x.Id)
                                .Skip((paging.CurrentPage - 1) * paging.PageSize)
                                .Take(paging.PageSize)
                                .Select(x => new StudentDto(x, GetBirthInfoById(x.UserInfo.BirthInfoId), GetContactInfoById(x.UserInfo.ContactId), GetDepartmentById(x.Class.DepartmentId)))
                                .ToList();


            return(new StudentResponseDto(listOfstudent ?? null, GetListClasses(), GetListDepartments(), GetListPrograms(), paging));
        }