Esempio n. 1
0
 public IHttpActionResult GetDocuments([FromBody] DocumentConditionSearch conditionSearch)
 {
     try
     {
         return(Ok(_documentManagementService.GetListDocuments(conditionSearch)));
     }
     catch (System.Exception e)
     {
         return(InternalServerError(e));
     }
 }
Esempio n. 2
0
        public DocumentResponseDto GetListDocuments(DocumentConditionSearch conditionSearch)
        {
            if (conditionSearch == null)
            {
                conditionSearch = new DocumentConditionSearch();
            }
            var ListClassId = conditionSearch.ProgramId == 0 ? new List <int>() : GetClassIdByProgramId(conditionSearch.ProgramId);

            var ListStudentId = (conditionSearch.DocumentTypeId == 0 && conditionSearch.StatusId == 0) ? new List <int>()
                : GetStudentIdByDocument(conditionSearch.DocumentTypeId, conditionSearch.StatusId);

            // 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)))
                                           //Search loại và trạng thái
                                           && (conditionSearch.DocumentTypeId == 0 || conditionSearch.StatusId == 0 ||
                                               ((conditionSearch.DocumentTypeId != 0 || conditionSearch.StatusId != 0) &&
                                                ListStudentId.Contains(x.Id)))
                                           )
                                    , 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 &&
                                       //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)))
                                       //Search loại và trạng thái
                                       && (conditionSearch.DocumentTypeId == 0 || conditionSearch.StatusId == 0 ||
                                           ((conditionSearch.DocumentTypeId != 0 || conditionSearch.StatusId != 0) &&
                                            ListStudentId.Contains(x.Id)))).ToList()
                                .OrderBy(x => x.Id)
                                .Skip((paging.CurrentPage - 1) * paging.PageSize)
                                .Take(paging.PageSize)
                                .Select(x => new StudentForDocumentDto(x, GetListDocumentByStudentId(x.Id)))
                                .ToList();


            return(new DocumentResponseDto(listOfstudent ?? null, GetListClasses(), GetListDepartments(), GetListPrograms(), GetListDocumentTypes(), GetListStatuses(), paging));
        }