Beispiel #1
0
        public IHttpActionResult PostSurveyAnswers([FromBody] AnswersAndBundleExtrasDTO abe)
        {
            if (!ModelState.IsValid)
            {
                Debug.WriteLine("ModelState not valid!");
                return(BadRequest(ModelState));
            }

            List <AnswerDTO> answerDtos = abe.AnswerDtos.ToList();
            int    answererTypeId       = abe.AnswerBundleExtrasDto.AnswererTypeID;
            string textFb = abe.AnswerBundleExtrasDto.TextFeedback;


            Debug.WriteLine("answerDtos<AnswerDTO>.Count: " + answerDtos.Count);
            Debug.WriteLine("answererTypeId: " + answererTypeId);
            Debug.WriteLine("textFb: " + textFb);



            if (answerDtos.Count == 0)
            {
                return(BadRequest());
            }
            var rawSortedDtos = from sa in answerDtos
                                orderby sa.QuestionSetIndex, sa.ChosenQuestionIndex
            select sa;

            List <AnswerDTO> cleanSortedDtos = rawSortedDtos.ToList();

            for (int i = 0; i < cleanSortedDtos.Count; i++)
            {
                Debug.WriteLine("cleanSortedDtos[" + i + "].Value: " + cleanSortedDtos[i].Value);
                Debug.WriteLine("cleanSortedDtos[" + i + "].QuestionSetIndex: " + cleanSortedDtos[i].QuestionSetIndex);
                Debug.WriteLine("cleanSortedDtos[" + i + "].ChosenQuestionIndex: " + cleanSortedDtos[i].ChosenQuestionIndex);
                Debug.WriteLine("cleanSortedDtos[" + i + "].QuestionID: " + cleanSortedDtos[i].QuestionID);
                Debug.WriteLine("cleanSortedDtos[" + i + "].QuestionMethodID: " + cleanSortedDtos[i].QuestionMethodID);
            }
            // CREATE AnswerBundle bundle

            AnswerBundle bundle = new AnswerBundle();

            bundle.Date           = DateTime.Now;
            bundle.AnswererTypeID = answererTypeId;
            bundle.TextFeedback   = textFb;
            // NEW: CHECK IF WORKS
            // TODO: TRANSACTION MANAGEMENT
            db.AnswerBundles.Add(bundle);

            db.SaveChanges();

            // ADD AnswerSets TO bundle
            // int currentQmId = -2;
            int currentSetId    = -2;
            int currentSetIndex = -2;

            foreach (AnswerDTO aDto in cleanSortedDtos)
            {
                // IF NEW QuestionMethodID IN answerDtos,
                // NEW AnswerSet IS CREATED
                if (aDto.QuestionSetIndex != currentSetIndex)
                {
                    // currentQmId = aDto.QuestionMethodID;
                    currentSetIndex = aDto.QuestionSetIndex;
                    AnswerSet newSet = new AnswerSet();
                    newSet.QuestionMethodID = aDto.QuestionMethodID;
                    newSet.AnswerBundleID   = bundle.AnswerBundleID;
                    db.AnswerSets.Add(newSet);
                    db.SaveChanges();
                    currentSetId = newSet.AnswerSetID;
                }
                db.Answers.Add(new Answer
                {
                    Value       = aDto.Value,
                    QuestionID  = aDto.QuestionID,
                    AnswerSetID = currentSetId
                });
                db.SaveChanges();
                Debug.WriteLine("currentSetId:" + currentSetId);
                Debug.WriteLine("currentSetIndex:" + currentSetIndex);
            }

            Debug.WriteLine("answerBundleId: " + bundle.AnswerBundleID);
            return(Ok());
        }
Beispiel #2
0
        public IHttpActionResult PostSurveyAnswers([FromBody] AnswersAndBundleExtrasDTO abe)
        {
            // Model state check. If State is not valid, BadRequest will be returned with ModelState.
            if (!ModelState.IsValid)
            {
                Debug.WriteLine("ModelState not valid!");
                return(BadRequest(ModelState));
            }

            // Unpacking abe-object
            List <AnswerDTO> answerDtos = abe.AnswerDtos.ToList();
            int    answererTypeId       = abe.AnswerBundleExtrasDto.AnswererTypeID;
            string textFb = abe.AnswerBundleExtrasDto.TextFeedback;


            Debug.WriteLine("answerDtos<AnswerDTO>.Count: " + answerDtos.Count);
            Debug.WriteLine("answererTypeId: " + answererTypeId);
            Debug.WriteLine("textFb: " + textFb);


            // - If answerDtos is empty, BadRequest will be returned.
            if (answerDtos.Count == 0)
            {
                return(BadRequest());
            }

            // - Sorting answerDtos by QuestionSetIndex and ChosenQuestionIndex (in this order)
            var rawSortedDtos = from sa in answerDtos
                                orderby sa.QuestionSetIndex, sa.ChosenQuestionIndex
            select sa;

            // - Converting IOrderedEnumerable as list
            List <AnswerDTO> cleanSortedDtos = rawSortedDtos.ToList();

            // Creating AnswerBundle bundle
            AnswerBundle bundle = new AnswerBundle();

            // Adding variables to bundle
            bundle.Date           = DateTime.Now;
            bundle.AnswererTypeID = answererTypeId;
            bundle.TextFeedback   = textFb;

            // Adding bundle is to the database
            db.AnswerBundles.Add(bundle);

            // - Saving database changes
            // TODO: TRANSACTION MANAGEMENT
            db.SaveChanges();

            // - Creating helper variables
            int currentSetId    = -2;
            int currentSetIndex = -2;

            foreach (AnswerDTO aDto in cleanSortedDtos)
            {
                // - If new QuestionMethodID in answerDtos,
                //   new AnswerSet is created and saved to the database
                if (aDto.QuestionSetIndex != currentSetIndex)
                {
                    // currentQmId = aDto.QuestionMethodID;
                    currentSetIndex = aDto.QuestionSetIndex;
                    AnswerSet newSet = new AnswerSet();
                    newSet.QuestionMethodID = aDto.QuestionMethodID;
                    newSet.AnswerBundleID   = bundle.AnswerBundleID;
                    db.AnswerSets.Add(newSet);
                    db.SaveChanges();
                    currentSetId = newSet.AnswerSetID;
                }
                db.Answers.Add(new Answer
                {
                    Value       = aDto.Value,
                    QuestionID  = aDto.QuestionID,
                    AnswerSetID = currentSetId
                });
                db.SaveChanges();
            }

            return(Ok());
        }