/// <summary> /// Retrieves datasetDTO for selected activity including a union of VarDefs and TemplateVariables from the relevant Domain /// //TODO: This method should change once users are allowed to add their own Variables /// In this case VarDEFs should take precedence and the issue of adding CVterms to VarDEFs shuold be settled /// </summary> /// <param name="datasetId"></param> /// <returns></returns> public DatasetDTO GetActivityDatasetDTO(int datasetId) { DatasetDTO dto = new DatasetDTO(); Dataset ds = _datasetRepository.FindSingle( d => d.Id.Equals(datasetId), new List <string>() { "Variables.VariableDefinition", "Template.Fields.ControlledVocabulary.Xref.DB", "Activity" }); dto.Id = ds.Id; //Set DatasetDTO id to Dataset.Id (int) dto.Class = ds.Template.Class; dto.Description = ds.Template.Description; dto.Name = ds.Template.Domain; dto.DomainId = ds.Template.Id; dto.Structure = ds.Template.Structure; dto.Code = ds.Template.Code; dto.ProjectId = ds.Activity.ProjectId; //ds.Domain.Variables.Where(v=> !v.IsGeneric). foreach (DatasetTemplateField vt in ds.Template.Fields.OrderBy(v => v.Order)) //foreach (var vt in ds.Variables) { DatasetVariableDTO dv = new DatasetVariableDTO(); dv.Name = vt.Name; dv.Description = vt.Description; dv.Label = vt.Label; dv.Accession = vt.Id; dv.DataType = vt.DataType; dv.IsCurated = true; dv.RoleId = vt.RoleId; if (vt.ControlledVocabulary != null) { dv.DictionaryName = vt.ControlledVocabulary.Name; dv.DictionaryDefinition = vt.ControlledVocabulary.Definition; dv.DictionaryXrefURL = vt.ControlledVocabulary.Xref.DB.UrlPrefix + vt.ControlledVocabulary.Xref.Accession; } var vr = ds.Variables.SingleOrDefault(v => v.VariableDefinition.Name.Equals(vt.Name)); if (vr != null) { dv.IsRequired = vr.IsRequired; dv.KeySequence = vr.KeySequence; dv.OrderNumber = vr.OrderNumber; dv.Id = vr.VariableDefinitionId; dv.isSelected = true; } dto.Variables.Add(dv); } foreach (VariableReference vr in ds.Variables) { if (!dto.Variables.Exists(v => v.Accession.Equals(vr.VariableDefinition.Accession))) { DatasetVariableDTO dv = new DatasetVariableDTO(); dv.Name = vr.VariableDefinition.Name; dv.Description = vr.VariableDefinition.Description; dv.Label = vr.VariableDefinition.Label; dv.Accession = vr.VariableDefinition.Accession; dv.DataType = vr.VariableDefinition.DataType; dv.IsCurated = vr.VariableDefinition.IsCurated; dv.IsComputed = vr.VariableDefinition.IsComputed ?? false; dv.RoleId = vr.VariableDefinition.RoleId; dv.IsRequired = vr.IsRequired; dv.KeySequence = vr.KeySequence; dv.OrderNumber = vr.OrderNumber; dv.Id = vr.VariableDefinitionId; dv.isSelected = true; dto.Variables.Add(dv); } } return(dto); }
private DatasetDTO GetDatasetDTO(DatasetTemplate datasetTemplate) { var dto = new DatasetDTO { Class = datasetTemplate.Class, Description = datasetTemplate.Description, Name = datasetTemplate.Domain, DomainId = datasetTemplate.Id, Structure = datasetTemplate.Structure, Code = datasetTemplate.Code, HasHeader = datasetTemplate.Fields.Any(f => f.Section == "HEADER") }; foreach (var vt in datasetTemplate.Fields.OrderBy(c => c.Order)) { var dv = new DatasetVariableDTO { Name = vt.Name, Description = vt.Description, Label = vt.Label, Accession = vt.Id, RoleId = vt.RoleId, DataType = vt.DataType, UsageId = vt.UsageId, IsRequired = false, KeySequence = null, OrderNumber = null, IsCurated = true, IsComputed = false, varType = "STANDARD", IsGeneric = vt.IsGeneric, AllowedQualifiers = vt.QualifiersDictionary?.Terms?.Select(t => t.Name).ToList(), DictionaryName = vt.ControlledVocabulary?.Name, DictionaryXrefURL = vt.ControlledVocabulary?.Xref.DB.UrlPrefix + vt.ControlledVocabulary?.Xref.Accession }; if (dv.UsageId.Equals("CL-Compliance-T-1") || dv.UsageId.Equals("CL-Compliance-T-2")) { dv.isSelected = true; if (dv.UsageId.Equals("CL-Compliance-T-1")) { dv.IsRequired = true; } } if (vt.Section == "HEADER") { dto.HeaderFields.Add(dv); } if (vt.IsGeneric) { dto.GenericFields.Add(dv); } else if (vt.Section == "COLUMN") { dto.Variables.Add(dv); } } return(dto); }