public IActionResult SaveQuery(int projectId, [FromBody] CombinedQueryDTO cdto) { var userId = User.FindFirst(ClaimTypes.UserData).Value; var savedQuery = _queryService.SaveQuery(cdto, userId, projectId); if (savedQuery != null) { return(new CreatedAtRouteResult("GetSavedQuery", new { projectId = projectId, queryId = savedQuery.Id.ToString() }, savedQuery)); } return(new StatusCodeResult(StatusCodes.Status409Conflict)); }
private CombinedQueryDTO _getNewCqueryForProject(int projectId) { var dto = new CombinedQueryDTO(); var assays = _assayRepository.FindAll(a => a.ProjectId == projectId).ToList(); dto.IsSavedByUser = false; //if (assays.Count == 0) // return null; foreach (var assay in assays) { var apanel = new AssayPanelDTO { AssayId = assay.Id, AssayName = assay.Name }; dto.AssayPanelRequests.Add(apanel.AssayId, apanel); } return(dto); }
public static CombinedQueryDTO GetcQueryDTO(CombinedQuery cQuery) { var dto = new CombinedQueryDTO(); dto.Id = cQuery.Id.ToString(); dto.Name = cQuery.Name; dto.UserId = cQuery.UserId.ToString(); dto.ObsRequests = new List <ObservationRequestDTO>(); foreach (var oq in cQuery.ClinicalObservations.Union(cQuery.GroupedObservations)) { dto.ObsRequests.Add(GetDTOforQuery(oq)); } foreach (var oq in cQuery.SubjectCharacteristics.Union(cQuery.DesignElements)) { dto.SubjCharRequests.Add(GetDTOforQuery(oq)); } foreach (var apq in cQuery.AssayPanels) { dto.AssayPanelRequests.Add(apq.AssayId, GetDTOforAssayPanelQuery(apq)); } return(dto); }
public CombinedQuery SaveQuery(CombinedQueryDTO cdto, string userId, int projectId) { CombinedQuery cQuery = new CombinedQuery(); cQuery.Name = cdto.Name; cQuery.UserId = Guid.Parse(userId); cQuery.ProjectId = projectId; cQuery.Id = Guid.NewGuid(); cQuery.IsSavedByUser = cdto.IsSavedByUser; var requests = cdto.ObsRequests.Union(cdto.SubjCharRequests); foreach (var request in requests) { if (!request.IsMultipleObservations) { var query = GetQueryFromQueryDTO(request); if (request.IsSubjectCharacteristics) { cQuery.SubjectCharacteristics.Add(query); } if (request.IsClinicalObservations) { cQuery.ClinicalObservations.Add((ObservationQuery)query); } if (request.IsDesignElement) { cQuery.DesignElements.Add(query); } } else { var goq = new GroupedObservationsQuery() { //Name = request.Name, GroupedObsName = request.O3, PropertyName = request.QO2, PropertyLabel = request.QO2_label, PropertyId = request.QO2id, Group = request.Group, GroupedObservations = new List <ObservationQuery>(), DataType = request.DataType, FilterExactValues = request.FilterExactValues, FilterRangeFrom = request.FilterRangeFrom, FilterRangeTo = request.FilterRangeTo, IsFiltered = request.IsFiltered, ProjectId = request.ProjectId }; goq.GroupedObservations.AddRange(request.GroupedObservations.Select(obsReq => new ObservationQuery() { TermId = obsReq.O3id, TermName = obsReq.O3, PropertyId = obsReq.QO2id, PropertyName = obsReq.QO2, Group = obsReq.Group, IsOntologyEntry = obsReq.IsOntologyEntry, TermCategory = obsReq.OntologyEntryCategoryName, DataType = obsReq.DataType, ProjectId = obsReq.ProjectId })); cQuery.GroupedObservations.Add(goq); } } var assaypanels = cdto.AssayPanelRequests.Values.Where(ap => ap.IsRequested); foreach (var assayRequest in assaypanels) { var assayPanelQuery = new AssayPanelQuery(); assayPanelQuery.AssayId = assayRequest.AssayId; assayPanelQuery.AssayName = assayRequest.AssayName; foreach (var sampleQuery in assayRequest.SampleQuery) { var query = GetQueryFromQueryDTO(sampleQuery); assayPanelQuery.SampleQueries.Add(query); } cQuery.AssayPanels.Add(assayPanelQuery); } return(_combinedQueryRepository.Insert(cQuery)); }