public IHttpActionResult Post(FillOutAnalysisModel model)
 {
     try
     {
         var context = Repository.HomeContext();
         if (model == null)
         {
             return(BadRequest("Model is null"));
         }
         var analysis      = Parser.CreateAnalysis(model, context);
         var analysisModel = Factory.CreateAnalysisModel(analysis, context);
         return(Ok(analysisModel));
     }
     catch (Exception ex)
     {
         return(BadRequest(ex.Message));
     }
 }
示例#2
0
        public Analysis CreateAnalysis(FillOutAnalysisModel model, AppContext context)
        {
            var analysisRepo = new Repository <Analysis>(context);
            var answersRepo  = new Repository <Answer>(context);
            var analysis     = new Analysis()
            {
                Reviewer            = context.Users.FirstOrDefault(u => u.Id == model.UserId),
                Version             = context.Versions.FirstOrDefault(v => v.AnalysisApplicationForm.Id == model.AnalysisId),
                QuestionsAndAnswers = new List <AnsweredQuestion>()
            };
            var heuristics    = context.AnalysisApplicationForms.Find(model.AnalysisId).Heuristics;
            var defaultAnswer = new Answer()
            {
                Description    = "",
                Location       = "",
                Level          = 0,
                Recommendation = "",
                Answered       = false
            };

            analysisRepo.Insert(analysis);

            foreach (var heuristic in heuristics)
            {
                var qa = new AnsweredQuestion()
                {
                    HeuristicText       = heuristic.HeuristicText,
                    HeuristicTitle      = heuristic.HeuristicTitle,
                    DatabaseHeuristicId = heuristic.Id
                };
                analysis.QuestionsAndAnswers.Add(qa);
            }

            analysisRepo.Update(analysis, analysis.Id);

            foreach (var question in analysis.QuestionsAndAnswers)
            {
                defaultAnswer.QuestionAnswerId = question.Id;
                defaultAnswer.HeuristicId      = question.DatabaseHeuristicId;
                answersRepo.Insert(defaultAnswer);
            }
            analysisRepo.Update(analysis, analysis.Id);
            return(analysis);
        }