public async Task <IHttpActionResult> PuttUserSurveyResult(int id, tUserSurveyResult tUserSurveyResult)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (id != tUserSurveyResult.ID)
            {
                return(BadRequest());
            }

            db.Entry(tUserSurveyResult).State = EntityState.Modified;

            try
            {
                await db.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!tUserSurveyResultExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public async Task <IHttpActionResult> GettUserSurveyResult(int id)
        {
            tUserSurveyResult tUserSurveyResult = await db.tUserSurveyResults.FindAsync(id);

            if (tUserSurveyResult == null)
            {
                return(NotFound());
            }

            return(Ok(tUserSurveyResult));
        }
        public async Task <IHttpActionResult> DeletetUserSurveyResult(int id)
        {
            tUserSurveyResult tUserSurveyResult = await db.tUserSurveyResults.FindAsync(id);

            if (tUserSurveyResult == null)
            {
                return(NotFound());
            }

            db.tUserSurveyResults.Remove(tUserSurveyResult);
            await db.SaveChangesAsync();

            return(Ok(tUserSurveyResult));
        }
        public async Task <IHttpActionResult> PosttUserSurveyResult(string questionsPassed, tUserSurveyResult tUserSurveyResult)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            /* Saving the Survey Result one by one
             */
            db.tUserSurveyResults.Add(tUserSurveyResult);
            var result = await db.SaveChangesAsync();

            /*Check if Result saved successfully*/
            if (result > 0)
            {
                var surveyId = tUserSurveyResult.SurveyID;
                SurveyQuestionViewModel vm = null;
                var mcQuestionTypes        = new[] { 1, 4 };

                /* Get the total count of the questions */
                var totalCount = webDb.tSurveyQuestions.Where(a => a.SurveyID == surveyId).Count();
                var slist      = !string.IsNullOrEmpty(questionsPassed) ? questionsPassed.Split(',').Select(a => int.Parse(a)).ToList() : new List <int>();

                /* Check if Saved Question is not the last question.
                 * If it is, then don't need to request for next question
                 */
                var isLast = (totalCount == slist.Count) && totalCount > 0;
                if (!isLast)
                {
                    var surQuestion = webDb.tSurveyQuestions.Where(a => a.SurveyID == surveyId && !slist.Contains(a.ID)).OrderBy(q => q.ID).FirstOrDefault();

                    if (surQuestion != null)
                    {
                        //if (mcQuestionTypes.Contains(surQuestion.QuestionTypeID))
                        //    surQuestion.tSurveyQuestionMCAnswers = webDb.tSurveyQuestionMCAnswers.Where(a => a.QuestionID == surQuestion.ID).OrderBy(a1 => a1.SequenceOrder).ToList();

                        //Mapper.Initialize(cfg => cfg.CreateMap<tSurveyQuestion, SurveyQuestionViewModel>());
                        //vm = Mapper.Map<SurveyQuestionViewModel>(surQuestion);

                        //var passedQuesArray = !string.IsNullOrEmpty(questionsPassed) ? questionsPassed.Split(',').Select(a => int.Parse(a)).ToList() : new List<int>();
                        Mapper.Initialize(cfg => cfg.CreateMap <tSurveyQuestion, SurveyQuestionViewModel>());
                        vm = Mapper.Map <SurveyQuestionViewModel>(surQuestion);

                        if (mcQuestionTypes.Contains(surQuestion.QuestionTypeID))
                        {
                            var ansList = webDb.tSurveyQuestionMCAnswers.Where(a => a.QuestionID == surQuestion.ID).OrderBy(a1 => a1.SequenceOrder).ToList();
                            if (ansList.Any())
                            {
                                Mapper.Initialize(cfg => cfg.CreateMap <tSurveyQuestionMCAnswer, SurveyQuestionMCAnswersViewModel>());
                                vm.tMCAnswers = ansList.Select(a => Mapper.Map <SurveyQuestionMCAnswersViewModel>(a)).ToList();
                            }
                        }

                        vm.IsLast = totalCount > 0 && ((totalCount - slist.Count) == 1);
                    }
                }
                else
                {
                    vm = new SurveyQuestionViewModel
                    {
                        IsLast = true
                    };
                }
                return(Ok(vm));
            }
            else
            {
                return(BadRequest(ModelState));
            }
            //return CreatedAtRoute("DefaultApi", new { id = tUserSurveyResult.ID }, tUserSurveyResult);
        }