示例#1
0
        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"));
            }
        }
示例#2
0
        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));
            }
        }
示例#3
0
        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)));
            }
        }
示例#4
0
        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()));
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#7
0
        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));
        }