public IHttpActionResult GetStudents([FromBody] StudentConditionSearch conditionSearch) { try { return(Ok(_studentManagementService.GetListStudents(conditionSearch))); } catch (System.Exception e) { return(InternalServerError(e)); } }
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)); }