private async Task CreateLinksAsync(ReportInstance reportInstanceFromRepo, ReportInstanceDetailDto mappedReportInstance) { if (reportInstanceFromRepo == null) { throw new ArgumentNullException(nameof(reportInstanceFromRepo)); } mappedReportInstance.Links.Add(new LinkDto(_linkGeneratorService.CreateReportInstanceResourceUri(reportInstanceFromRepo.WorkFlow.WorkFlowGuid, mappedReportInstance.Id), "self", "GET")); switch (reportInstanceFromRepo.CurrentActivity.QualifiedName) { case "Confirm Report Data": CreateLinksForConfirmationStep(reportInstanceFromRepo, mappedReportInstance); break; case "Set MedDRA and Causality": await CreateLinksForTerminologyStepAsync(reportInstanceFromRepo, mappedReportInstance); break; case "Extract E2B": await CreateLinksForE2BStepAsync(reportInstanceFromRepo, mappedReportInstance); break; default: break; } var validRoles = new string[] { "RegClerk", "DataCap", "Clinician" }; if (reportInstanceFromRepo.WorkFlow.Description == "New Active Surveilliance Report") { mappedReportInstance.Links.Add(new LinkDto(_linkGeneratorService.CreateResourceUri("Patient", reportInstanceFromRepo.Id), "viewpatient", "GET")); } if (reportInstanceFromRepo.WorkFlow.Description == "New Spontaneous Surveilliance Report") { var datasetInstance = _datasetInstanceRepository.Get(di => di.DatasetInstanceGuid == reportInstanceFromRepo.ContextGuid); if (datasetInstance != null) { mappedReportInstance.Links.Add(new LinkDto(_linkGeneratorService.CreateUpdateDatasetInstanceResourceUri( datasetInstance.Dataset.Id, datasetInstance.Id), "updatespont", "PUT")); } } }