public IActionResult UpdateSubExperiment([FromBody] SubExperiment subexperiment) { (bool flagSubExpName, bool flagSubexp)info = _subexperimentService.DoesSubExperimentNameExist(subexperiment, subexperiment.SubExpID); if (info.flagSubExpName) { return(new JsonResult("TakenSubExpName")); } if (info.flagSubexp) { return(new JsonResult("takenSubExp")); } else { _subexperimentService.UpdateSubExperiment(subexperiment); return(new JsonResult("Done")); } }
public string CheckPostProcessingQC(SubExperiment subExp) { if (string.IsNullOrEmpty(subExp.ErrorMessage)) { return(RunPostProcessing(subExp)); } else { // connect to DB, empty Erroressage field in SubExsp table, then call RunPostProcessin Function string sql = $@"UPDATE SubExperiment SET ErrorMessage = '' WHERE ExpID = {subExp.SubExpID} ;"; Dal.ExecuteNonQuery(sql); // Run post processing return(RunPostProcessing(subExp)); } }
public IActionResult CreateSubExperiment([FromBody] SubExperiment subexperiment) { // throw new Exception("This Experiment Name was already taken!"); (bool flagSubExpName, bool flagSubexp)info = _subexperimentService.DoesSubExperimentNameExist(subexperiment, 0); if (info.flagSubExpName) { return(new JsonResult("TakenSubExpName")); } if (info.flagSubexp) { return(new JsonResult("takenSubExp")); } else { return(new JsonResult(_subexperimentService.InsertSubExperiment(subexperiment))); } }
public int InsertSubExperiment(SubExperiment subexperiment) { string ImageIDcsv = ""; if (subexperiment.ImageIds != null && subexperiment.ImageIds.Length != 0) { ImageIDcsv = String.Join(",", subexperiment.ImageIds.Select(x => x.ToString()).ToArray()); } string sql = $@"Insert into SubExperiment (ExpID, AgeID, SubExpName, IsIntervention, IsDrug, DrugName, DrugUnit, DrugQuantity, InterventionDescription, ImageIds, ImageDescription, Housing, LightCycle) Values ({subexperiment.ExpID}, {subexperiment.AgeID}, '{HelperService.EscapeSql(subexperiment.SubExpName.Trim())}', {(subexperiment.IsIntervention ? 1 : 0)}, {(subexperiment.IsDrug ? 1 : 0)}, '{HelperService.EscapeSql(subexperiment.DrugName)}', '{HelperService.EscapeSql(subexperiment.DrugUnit)}', '{HelperService.EscapeSql(subexperiment.DrugQuantity)}', '{HelperService.EscapeSql(subexperiment.InterventionDescription)}', '{ImageIDcsv}', '{HelperService.EscapeSql(subexperiment.ImageDescription)}', '{HelperService.EscapeSql(subexperiment.Housing)}', '{HelperService.EscapeSql(subexperiment.LightCycle)}'); SELECT @@IDENTITY AS 'Identity';"; return(Int32.Parse(Dal.ExecScalar(sql).ToString())); }
public (bool flagSubExp, bool flagAge) DoesSubExperimentNameExist(SubExperiment subexpObj, int subExpId) { string sqlsubexp = $"select count(*) from SubExperiment where ltrim(rtrim(SubExpName)) = '{HelperService.EscapeSql(subexpObj.SubExpName.Trim())}' {(subExpId == 0 ? "" : " AND SubExpID != " + subexpObj.SubExpID)} "; string sqlage = $@"select count(*) from SubExperiment where AgeID={subexpObj.AgeID} and Isintervention={(subexpObj.IsIntervention ? 1 : 0)} and IsDrug = {(subexpObj.IsDrug ? 1 : 0)} and ltrim(rtrim(DrugName)) = '{HelperService.EscapeSql(subexpObj.DrugName.Trim())}' and DrugUnit = '{HelperService.EscapeSql(subexpObj.DrugUnit.Trim())}' and DrugQuantity = '{HelperService.EscapeSql(subexpObj.DrugQuantity.Trim())}' and CONVERT(VARCHAR, InterventionDescription) = '{HelperService.EscapeSql(subexpObj.InterventionDescription.Trim())}' and Housing = '{HelperService.EscapeSql(subexpObj.Housing.Trim())}' and LightCycle = '{HelperService.EscapeSql(subexpObj.LightCycle.Trim())}' and ExpID = {subexpObj.ExpID} {(subExpId == 0 ? "" : " AND SubExpID != " + subexpObj.SubExpID)} "; int countResultSubExpName = Int32.Parse(Dal.ExecScalar(sqlsubexp).ToString()); int countResultAge = Int32.Parse(Dal.ExecScalar(sqlage).ToString()); bool flagSubExp1 = (countResultSubExpName == 0) ? false : true; bool flagAge1 = (countResultAge == 0) ? false : true; return(flagSubExp : flagSubExp1, flagAge : flagAge1); }
public void UpdateSubExperiment(SubExperiment subexperiment) { string ImageIDcsv = ""; if (subexperiment.ImageIds != null && subexperiment.ImageIds.Length != 0) { ImageIDcsv = String.Join(",", subexperiment.ImageIds.Select(x => x.ToString()).ToArray()); } string sql = $@"UPDATE SubExperiment SET SubExpName = '{HelperService.EscapeSql(subexperiment.SubExpName.Trim())}', AgeID = {subexperiment.AgeID}, IsIntervention = {(subexperiment.IsIntervention ? 1 : 0)}, IsDrug = {(subexperiment.IsDrug ? 1 : 0)}, DrugName = '{HelperService.EscapeSql(subexperiment.DrugName)}', DrugUnit = '{HelperService.EscapeSql(subexperiment.DrugUnit)}', DrugQuantity= '{HelperService.EscapeSql(subexperiment.DrugQuantity)}', InterventionDescription = '{HelperService.EscapeSql(subexperiment.InterventionDescription)}', ImageIds = '{ImageIDcsv}', ImageDescription = '{subexperiment.ImageDescription}', Housing = '{subexperiment.Housing}', LightCycle = '{subexperiment.LightCycle}' WHERE SubExpID = {subexperiment.SubExpID} ;"; Dal.ExecuteNonQuery(sql); }
public string RunPostProcessing(SubExperiment subExp) { string errorMessage = ""; string errorGeneral = ""; // Extracting the TaskName of the selected experiment int TaskID = GetTaskName(subExp.ExpID); // Extracting minAge of each experiment int minAge = getminAge(subExp.ExpID); // post processing QC for Standard Schedules which is applied only on the SubExp with minimum age if (subExp.AgeID == minAge && !subExp.IsIntervention) { // check the post QC for schedule names common in all tasks e.g. habituation 1 errorGeneral = ScheduleCount(subExp.SubExpID, TaskID); } string error = ""; // Switch Case .... based on taskName of the experiment switch (TaskID) { case 2: // Post Processing QC for cam 5 choice experiment error = ScheduleCount_5C(subExp.SubExpID); break; case 3: //Post Processing QC for PD experiment error = ScheduleCount_PD(subExp.SubExpID); break; case 4: // Post Processing QC for PAL experiment error = ScheduleCount_PAL(subExp.SubExpID); break; case 5: error = ScheduleCount_LD(subExp.SubExpID); break; case 9: // post Processing QC for PR Task error = ScheduleCount_PR(subExp.SubExpID); break; case 10: // post Processing QC for PRL Task error = ScheduleCount_PRL(subExp.SubExpID); break; case 11: // post Processing QC for VMCL Task error = ScheduleCount_ICPT(subExp.SubExpID); break; case 12: // post Processing QC for VMCL Task error = ScheduleCount_VMCL(subExp.SubExpID); break; case 13: // post Processing QC for Autoshape Task error = ScheduleCount_Autoshape(subExp.SubExpID); break; case 15: // post Processing QC for Autoshape Task error = ScheduleCount_Sequence(subExp.SubExpID); break; } // Post Processing QC for 5 choice experiment //string error = ScheduleCount_5C(expID); // error += other tests... if (error == string.Empty && errorGeneral == string.Empty) { SetPostProcessingPassed(subExp.SubExpID); } else { // add header errorMessage = $@"<table><tr style=""text-align: center; color:#566573;""> <th style=""text-align:center; padding: 15px 0px; text-transform: uppercase; color:#34495E;"" class=""docs-markdown-th"">Animal Id</th> <th style=""text-align:center; padding: 15px 0px; text-transform: uppercase; color:#34495E;"" class=""docs-markdown-th"">Error Message</th> <th style=""text-align:center; padding: 15px 0px; text-transform: uppercase; color:#34495E;"" class=""docs-markdown-th"">File Names</th> <th style=""text-align:center; padding: 15px 0px; text-transform: uppercase; color:#34495E;"" class=""docs-markdown-th"">Dates</th> </tr> {errorGeneral} {error} </table>"; SetPostProcessingError(subExp.SubExpID, errorMessage); } // after all tests done, update IsPostProcessingPass and errorMessage return(errorMessage); }
public IActionResult PostProcessSubExperiment([FromBody] SubExperiment subExp) { var result = _postProcessingQcService.CheckPostProcessingQC(subExp); return(new JsonResult(result)); }