public IHttpActionResult GetDocumentsFilteredAndOrdered([FromUri] string user_email, [FromBody] GetDocumentFilterAndOrder documentFiltersAndOrdersModel) { if (IsTokenValid()) { try { DocumentFilterAndOrder documentFiltersAndOrders = GetDocumentFilterAndOrder.ToEntity(documentFiltersAndOrdersModel); return(Ok(BaseDocument.ToModel(documentManagementService.GetAllByUserFilteredAndOrdered(user_email, documentFiltersAndOrders)))); } catch (MissingUserException e) { return(BadRequest(e.Message)); } catch (Exceptions e) { return(BadRequest(e.Message)); } } return(Unauthorized()); }
public IEnumerable <Document> GetAllByUserFilteredAndOrdered(string userEmail, DocumentFilterAndOrder filterAndOrder) { IEnumerable <Document> documents = DocumentRepository.GetAllByUser(userEmail); IEnumerable <Document> filteredDocuments = FilterDocuments(documents, filterAndOrder); IEnumerable <Document> orderedAndFilteredDocuments = new List <Document>(); switch (filterAndOrder.OrderBy) { case "Id": orderedAndFilteredDocuments = OrderDocumentsAscOrDesc(filterAndOrder.IsDesc, filteredDocuments, x => x.Id); break; case "Title": orderedAndFilteredDocuments = OrderDocumentsAscOrDesc(filterAndOrder.IsDesc, filteredDocuments, x => x.Title); break; case "CreationDate": orderedAndFilteredDocuments = OrderDocumentsAscOrDesc(filterAndOrder.IsDesc, filteredDocuments, x => x.CreationDate); break; case "LastModification": orderedAndFilteredDocuments = OrderDocumentsAscOrDesc(filterAndOrder.IsDesc, filteredDocuments, x => x.LastModification); break; default: break; } return(orderedAndFilteredDocuments); }
private IEnumerable <Document> FilterDocuments(IEnumerable <Document> documents, DocumentFilterAndOrder filterAndOrder) { List <Document> filteredDocuments = new List <Document>(); foreach (Document document in documents) { bool ok = true; Document filteredData = filterAndOrder.DocumentFilteredData; if (filteredData.Id != Guid.Parse("11111111-1111-1111-1111-111111111111")) { ok = document.Id == filteredData.Id; } if (filteredData.Title != "") { ok = ok && document.Title == filteredData.Title; } if (filteredData.CreationDate.Date != DateTime.MaxValue.Date) { ok = ok && document.CreationDate.Date == filteredData.CreationDate.Date; } if (filteredData.LastModification.Date != DateTime.MaxValue.Date) { ok = ok && document.LastModification.Date == filteredData.LastModification.Date; } if (ok) { filteredDocuments.Add(document); } } return(filteredDocuments); }