public IHttpActionResult GetResearchProjects() { using (var context = new CCFDataEntities()) { var researchProjects = context.ResearchProjects .ToList() .Select(Mapper.Map <ResearchProject, ResearchProjectDto>); return(Ok(researchProjects)); } }
/** * Author: Zak Zinda * Updated By: * Date Updated: 12.6.18 * Description: Return the project information for a selected research project. * Parameters: int id - The id of the project to query. */ // GET /Api/ResearchProjects/1 public IHttpActionResult GetResearchProject(int id) { using (var context = new CCFDataEntities()) { var researchProject = context.ResearchProjects.SingleOrDefault(p => p.ProjectID == id); if (researchProject == null) { return(BadRequest("The selected research project could not be found.")); } return(Ok(Mapper.Map <ResearchProjectDto>(researchProject))); } }
public async Task <IHttpActionResult> Upload(int id) { if (!Request.Content.IsMimeMultipartContent()) { return(BadRequest("File improperly formatted.")); } string root = HttpContext.Current.Server.MapPath("~/App_Data"); var provider = new MultipartFormDataStreamProvider(root); try { await Request.Content.ReadAsMultipartAsync(provider); var file = provider.FileData[0]; string fileName = file.LocalFileName; string hasHeaderFormValue = provider.FormData.GetValues("hasHeader")[0]; bool hasHeader = hasHeaderFormValue.Contains("yes") ? true : false; FileUploadHelper helper = new FileUploadHelper(); List <string> accessionNumbers = helper.ParseFileToList(fileName, hasHeader); List <RejectedAccessionDto> rejectedAccessions = new List <RejectedAccessionDto>(); using (var context = new CCFDataEntities()) { var researchProjectInDb = context.ResearchProjects.Single(p => p.ProjectID == id); if (researchProjectInDb == null) { return(BadRequest("The selected research project does not exist.")); } rejectedAccessions = ValidateUploadedAccessions(accessionNumbers, context, researchProjectInDb); } return(Ok(rejectedAccessions)); } catch (InvalidCastException e) { return(InternalServerError(e)); } catch (Exception e) { return(InternalServerError(e)); } }
// GET: Dashboard/EditProject/1 public ActionResult EditProject(int id) { using (var context = new CCFDataEntities()) { var researchProject = context.ResearchProjects .SingleOrDefault(p => p.ProjectID == id); if (researchProject == null) { return(HttpNotFound()); } var viewModel = new DashboardViewModel { ProjectId = researchProject.ProjectID }; return(View(viewModel)); } }
public IHttpActionResult CreateResearchProject(ResearchProjectDto researchProjectDto) { if (!ModelState.IsValid) { return(BadRequest("Invalid form data.")); } var researchProject = Mapper.Map <ResearchProjectDto, ResearchProject>(researchProjectDto); researchProject.InsertDate = DateTime.Now; using (var context = new CCFDataEntities()) { context.ResearchProjects.Add(researchProject); context.SaveChanges(); } researchProjectDto.ProjectID = researchProject.ProjectID; researchProjectDto.InsertDate = researchProject.InsertDate.ToShortDateString(); return(Created(new Uri(Request.RequestUri + "/" + researchProject.ProjectID), researchProjectDto)); }
public IHttpActionResult Update(int id, ResearchProjectDto researchProjectDto) { if (!ModelState.IsValid) { return(BadRequest("Invalid form data.")); } using (var context = new CCFDataEntities()) { var researchProjectInDb = context.ResearchProjects.SingleOrDefault(p => p.ProjectID == id); if (researchProjectInDb == null) { return(BadRequest("The selected research project could not be found.")); } Mapper.Map(researchProjectDto, researchProjectInDb); Mapper.Map(researchProjectInDb, researchProjectDto); context.SaveChanges(); } return(Ok(researchProjectDto)); }
public ActionResult DownloadKeyPairs(int projectId, int downloadType) { // Create new stringbuilder and empty file name. var sb = new System.Text.StringBuilder(); var fileName = "KeyPairs.csv"; using (var context = new CCFDataEntities()) { var researchProjectInDb = context.ResearchProjects.Single(p => p.ProjectID == projectId); // First check if the associated project exists. if (researchProjectInDb == null) { return(HttpNotFound()); } // Return all ResearchProjectAccession objects associated with that project. var keyPairs = context.ResearchProjectAccessions .Where(p => p.ProjectID == projectId) .ToList() .Select(Mapper.Map <ResearchProjectAccession, KeyPairDto>); // Check if any key pairs exist. If not, skip downloadType check. if (keyPairs.Count() == 0) { sb.Append("This project does not yet have any accession numbers uploaded.\r\n"); } else { // Checks downloadType. // DownloadType.AccessionOnly = 1 // DownloadType.MRNOnly = 2 // DownloadType.Both = 3 switch (downloadType) { case DownloadType.AccessionOnly: // Set appropriate file name. fileName = "AccessionKeyPairs.csv"; // Add only accession numbers associated with that project to the file. sb.Append("Accession,Randomized Accession\r\n"); foreach (var keyPair in keyPairs) { sb.AppendFormat("=\"{0}\",", keyPair.Accession.ToString()); sb.AppendFormat("=\"{0}\"\r\n", keyPair.AccessionGuid.ToString()); } break; case DownloadType.MRNOnly: // Set appropriate file name. fileName = "MRNKeyPairs.csv"; // Add only MRNs associated with that project to the file. sb.Append("MRN,Randomized MRN\r\n"); foreach (var keyPair in keyPairs) { sb.AppendFormat("=\"{0}\",", keyPair.MRN.ToString()); sb.AppendFormat("=\"{0}\"\r\n", keyPair.MRNGuid.ToString()); } break; case DownloadType.Both: // Set appropriate file name. fileName = "AccessionAndMRNKeyPairs.csv"; // Add both accessions and MRNs to the file. sb.Append("Accession,Randomized Accession,MRN,Randomized MRN\r\n"); foreach (var keyPair in keyPairs) { sb.AppendFormat("=\"{0}\",", keyPair.Accession.ToString()); sb.AppendFormat("=\"{0}\",", keyPair.AccessionGuid.ToString()); sb.AppendFormat("=\"{0}\",", keyPair.MRN.ToString()); sb.AppendFormat("=\"{0}\"\r\n", keyPair.MRNGuid.ToString()); } break; default: break; } } // Convert stringbuilder into a file string. string file = sb.ToString(); // Return file as a csv. return(File(new System.Text.UTF8Encoding().GetBytes(file), "text/csv", fileName)); } }
public List <RejectedAccessionDto> ValidateUploadedAccessions(List <string> accessions, CCFDataEntities context, ResearchProject researchProjectInDb) { List <RejectedAccessionDto> rejectedAccessions = new List <RejectedAccessionDto>(); var projectId = researchProjectInDb.ProjectID; foreach (var accessionNumber in accessions) { RejectedAccessionDto rejectedAccession; // Ensure the accession number is an integer. if (!accessionNumber.All(char.IsDigit)) { rejectedAccession = new RejectedAccessionDto { Accession = accessionNumber, Reason = "Accession must be an integer." }; rejectedAccessions.Add(rejectedAccession); continue; } var convertedAccessionNumber = Convert.ToInt32(accessionNumber.Trim()); var researchAccessionInDb = context.ResearchProjectAccessions .SingleOrDefault(a => a.ProjectID == projectId && a.Accession == convertedAccessionNumber); // Ensure the accession number has not already been added. if (researchAccessionInDb != null) { rejectedAccession = new RejectedAccessionDto { Accession = accessionNumber, Reason = "Accession has already been added to the project." }; rejectedAccessions.Add(rejectedAccession); continue; } var globalAccessionInDb = context.GlobalAccessions .SingleOrDefault(a => a.Accession == convertedAccessionNumber); // Ensure the accession number exists globally. if (globalAccessionInDb == null) { rejectedAccession = new RejectedAccessionDto { Accession = accessionNumber, Reason = "Accession does not exist in the global database." }; rejectedAccessions.Add(rejectedAccession); continue; } //accession passed validation, create an accession object to add to the database var accession = new ResearchProjectAccession() { ResearchProject = researchProjectInDb, Accession = globalAccessionInDb.Accession, AccessionGUID = Guid.NewGuid(), //deidentified accession number MRN = globalAccessionInDb.MRN, MRNGUID = Guid.NewGuid() }; context.ResearchProjectAccessions.Add(accession); context.SaveChanges(); } return(rejectedAccessions); }