private static bool SearchByMultipleProperties(DocumentsPagingQueryModel query, Document doc) { var documentHistory = doc.DocumentHistory.Where(d => d.DocumentId == doc.DocumentId).OrderBy(document => document.ModifiedAt).ToList(); if (query.CreatedDateFrom?.Date != null && !(documentHistory.FirstOrDefault()?.ModifiedAt.Date >= query.CreatedDateFrom?.Date)) { return(false); } if (query.CreatedDateTo?.Date != null && !(documentHistory.FirstOrDefault()?.ModifiedAt.Date <= query.CreatedDateTo?.Date)) { return(false); } if (query.ModifiedDateFrom?.Date != null && !(documentHistory.LastOrDefault()?.ModifiedAt.Date >= query.ModifiedDateFrom?.Date)) { return(false); } if (query.ModifiedDateTo?.Date != null && !(documentHistory.LastOrDefault()?.ModifiedAt.Date <= query.ModifiedDateTo?.Date)) { return(false); } if (query.SearchByCategoryId != 0 && query.SearchByCategoryId != null && doc.DocumentCategoryId != query.SearchByCategoryId) { return(false); } if (query.SearchByCaseId != 0 && query.SearchByCaseId != null && doc.CaseId != query.SearchByCaseId) { return(false); } if (!string.IsNullOrEmpty(query.SearchByTitle) && !doc.Title.ToLower().Contains(query.SearchByTitle.ToLower())) { return(false); } return(string.IsNullOrEmpty(query.SearchByDescription) || doc.Description.ToLower().Contains(query.SearchByDescription.ToLower())); }
public PagingResultModel <DocumentDetails> GetDocumentsByPage(DocumentsPagingQueryModel query) { if (query.PageNumber < 0) { throw new ArgumentException("Page number is not valid"); } return(_documentRepository.GetAllDocumentsByPage(query)); }
public IActionResult GetDocumentsByPage([FromBody] DocumentsPagingQueryModel queryDto) { try { return(Ok(DocumentManipulation.GetDocumentsByPage(queryDto))); } catch (Exception ex) { Logger.Logger.LogError(ex.Message); throw new Exception(ex.Message); } }
public IActionResult GetDocumentsByPage([FromBody] DocumentsPagingQueryModel queryDto) { try { return(Ok(DocumentManipulation.GetDocumentsByPage(queryDto))); } catch (Exception ex) { Logger.LogError(ex.Message); throw new NSIException(ex.Message, DC.Exceptions.Enums.Level.Error, DC.Exceptions.Enums.ErrorType.InvalidParameter); } }
public void GetDocuments_InvalidId_ThrowException() { // Arrange & Act var documentRepo = new Mock <IDocumentRepository>(); var documentManipulation = new DocumentManipulation(documentRepo.Object); var logger = new Mock <Microsoft.Extensions.Logging.ILogger <DocumentController> >().Object; var controller = new DocumentController(documentManipulation, logger); // Act var page = -1; var perPage = 100; var description = ""; var pageM = new DocumentsPagingQueryModel() { PageNumber = page, ResultsPerPage = perPage, SearchByDescription = description }; controller.GetDocumentsByPage(pageM); }
public void GetDocuments_ReturnsOK() { // Arrange & Act var documentRepo = new Mock <IDocumentRepository>(); var documentManipulation = new DocumentManipulation(documentRepo.Object); var controller = new DocumentController(documentManipulation); // Act int page = 1; int perPage = 100; string description = ""; var pageM = new DocumentsPagingQueryModel() { PageNumber = page, ResultsPerPage = perPage, SearchByDescription = description }; var result = controller.GetDocumentsByPage(pageM); // Assert Assert.IsType <OkObjectResult>(result); }
private static bool SearchByMultipleProperties(DocumentsPagingQueryModel query, Document doc) { if (doc.IsDeleted) { return(false); } var documentHistory = doc.DocumentHistory.Where(d => d.DocumentId == doc.DocumentId).OrderBy(document => document.ModifiedAt).ToList(); if (query.CreatedDateFrom?.Date != null && documentHistory.FirstOrDefault()?.ModifiedAt.Date < query.CreatedDateFrom?.Date) { return(false); } if (query.CreatedDateFrom?.Date != null && documentHistory.FirstOrDefault()?.ModifiedAt.Date > query.CreatedDateFrom?.Date) { return(false); } if (query.CreatedDateTo?.Date != null && documentHistory.LastOrDefault()?.ModifiedAt.Date < query.CreatedDateTo?.Date) { return(false); } if (query.CreatedDateTo?.Date != null && documentHistory.LastOrDefault()?.ModifiedAt.Date > query.CreatedDateTo?.Date) { return(false); } if (query.SearchByCategoryId != 0 && doc.DocumentCategoryId != query.SearchByCategoryId) { return(false); } if (query.SearchByCaseId != 0 && doc.CaseId != query.SearchByCaseId) { return(false); } if (query.SearchByTitle != "" && !doc.Title.Contains(query.SearchByTitle)) { return(false); } return(query.SearchByDescription == "" || !doc.Description.Contains(query.SearchByDescription)); }
public void GetDocuments_ReturnsOK() { // Arrange & Act var documentRepo = new Mock <IDocumentRepository>(); var documentManipulation = new DocumentManipulation(documentRepo.Object); var logger = new Mock <Microsoft.Extensions.Logging.ILogger <DocumentController> >().Object; var controller = new DocumentController(documentManipulation, logger); // Act var page = 1; var perPage = 100; var description = ""; var pageM = new DocumentsPagingQueryModel() { PageNumber = page, ResultsPerPage = perPage, SearchByDescription = description }; var result = controller.GetDocumentsByPage(pageM); // Assert Assert.IsInstanceOfType(result, typeof(OkObjectResult)); }
PagingResultModel <DocumentDetails> IDocumentRepository.GetAllDocumentsByPage(DocumentsPagingQueryModel query) { var result = new PagingResultModel <DocumentDetails> { ItemsPerPage = query.ResultsPerPage }; var documents = _dbContext.Document.Include(x => x.Case).Include(x => x.DocumentCategory).Include(h => h.DocumentHistory).Include(f => f.FileType).ToList(); var filteredDocuments = documents.Where(doc => doc.IsDeleted == false && SearchByMultipleProperties(query, doc)) .Select(d => DocumentRepository.MapToDocumentDetailsDto(d, _dbContext)).ToList(); result.TotalItems = filteredDocuments.Count; result.Results = filteredDocuments.Skip(query.ResultsPerPage * (query.PageNumber - 1)).Take(query.ResultsPerPage).ToList(); return(result); }