コード例 #1
0
        public async Task <IActionResult> UpdateQuestionnaire(QuestionnaireUpdateRequest request)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest());
                }

                var questionnaire = await MapToQuestionnaireEntityForUpdate(request);

                if (await _questionnaireManager.IsQuestionnaireAlreadyExists(questionnaire, true))
                {
                    return(BadRequest("Questionnaire already exists."));
                }

                if (await _questionnaireManager.IsQuestionnaireWithCategoryAlreadyExists(questionnaire, true))
                {
                    return(BadRequest("Questionnaire with this service category already exists."));
                }

                var result = await _questionnaireManager.UpdateQuestionnaire(questionnaire);

                if (!result)
                {
                    return(BadRequest());
                }
                return(Ok());
            }
            catch (Exception ex)
            {
                _logger.LogError("An error has been thrown in QuestionnaireController:UpdateQuestionnaire", ex);
                return(BadRequest());
            }
        }
コード例 #2
0
        public async Task <QuestionnaireUpdateResponse> DotaznikUpdate(QuestionnaireUpdateRequest questionnaire)
        {
            var apiForm  = _configuration["url"];
            var response = await _httlClient.PostJsonAsync <QuestionnaireUpdateResponse>(apiForm + "api/Questionnaire/Update", questionnaire);

            return(response);
        }
コード例 #3
0
        public ActionResult <QuestionnaireUpdateResponse> Update([FromBody] QuestionnaireUpdateRequest value)
        {
            //Instantiate database
            using var db = new DbModel();
            //Select to database where Questionnaire is having required QuestionnaireId
            var result = db.Questionnaires
                         .SingleOrDefault(d => d.QuestionnaireId == value.Questionnaire.QuestionnaireId);

            //If there is no Questionnaire to update
            if (result == null)
            {
                return(BadRequest("Questionnaire to update was not found"));
            }
            //Selecting Questions for Questionnaire
            var queryable = db.Questions.Where(q => q.QuestionnaireId == value.Questionnaire.QuestionnaireId);

            //Deleting old Questions from Questionnaire
            db.Questions.RemoveRange(queryable);
            //Saving changes to database
            db.SaveChanges();
            //Updating values of new Questionnaire
            result.EndDate      = value.Questionnaire.EndDate;
            result.IsEvaluated  = value.Questionnaire.IsEvaluated;
            result.IsPublished  = value.Questionnaire.IsPublished;
            result.Name         = value.Questionnaire.Name;
            result.StartDate    = value.Questionnaire.StartDate;
            result.UserId       = value.Questionnaire.UserId;
            result.QuestionList = value.Questionnaire.Question
                                  .Select(q => new Question
            {
                QuestionPosition = q.QuestionPosition,
                Text             = q.Text,
                AnswerList       = q.Answer
                                   .Select(a => new Answer
                {
                    AnswerPosition = a.AnswerPosition,
                    Text           = a.Text,
                    Type           = a.Type
                })
                                   .ToList()
            })
                                  .ToList();

            //Update of Questionnaire
            db.Update(result);
            //Saving changes in database
            db.SaveChanges();
            //Success
            return(Ok(new QuestionnaireSaveResponse
            {
                Questionnaire = new QuestionnaireSaveResponse.QuestionnairePublish
                {
                    Success = true
                }
            }));
        }
コード例 #4
0
        private async Task <Questionnaire> MapToQuestionnaireEntityForUpdate(QuestionnaireUpdateRequest request)
        {
            var questionnaireFromDb = await _questionnaireManager.GetQuestionnaireById(request.Id);

            var questionnaire = new Questionnaire
            {
                Id = request.Id,
                ServiceCategoryId = request.ServiceCategoryId == default?questionnaireFromDb.ServiceCategoryId:request.ServiceCategoryId,
                QuestionnaireName = string.IsNullOrWhiteSpace(request.QuestionnaireName)? questionnaireFromDb.QuestionnaireName:request.QuestionnaireName.Trim(),
                Status            = request.Status
            };

            if (request.Questions != null)
            {
                var questionsFromDb = await _questionnaireManager.GetQuestionsByQuestionnaireId(request.Id);

                questionnaire.Questions = new List <Question>();
                foreach (var question in request.Questions)
                {
                    if (questionsFromDb.Count == 0 ||
                        questionsFromDb.FirstOrDefault(x => x.Question.Trim() == question.Question.Trim()) == null)
                    {
                        questionnaire.Questions.Add(new Question()
                        {
                            QuestionnaireId = request.Id,
                            QuestionType    = question.QuestionType,
                            QuestionTxt     = question.Question,
                            IsRequired      = question.IsRequired,
                            Options         = JsonConvert.SerializeObject(question.Options)
                        });
                    }
                }
            }

            return(questionnaire);
        }

        #endregion
    }
コード例 #5
0
        public DomainModelResponse Update(QuestionnaireUpdateRequest request)
        {
            Questionnaire Questionnaire = _repQuestionnaire.Get(filter: f => f.QuestionnaireCode == request.QuestionnaireCode).FirstOrDefault();

            if (request.IsATemplate.HasValue)
            {
                Questionnaire.IsATemplate = (bool)request.IsATemplate;
            }
            List <string> qIds = Questionnaire.QuestionSet.Split(',').ToList();

            if (request.QuestionIds != null) //List of QuestionIds to be deleted
            {
                foreach (int id in request.QuestionIds)
                {
                    qIds.Remove(id.ToString());
                }
            }

            if (request.Questions != null)
            {
                List <QuestionType> questionTypes = _repQuestionType.Get().ToList();
                foreach (var q in request.Questions)
                {
                    EntityModel.Question eQ = new EntityModel.Question()
                    {
                        QuestionText    = q.questionText,
                        LastChangedTime = DateTime.UtcNow,
                        QuestionType    = questionTypes.Where(x => x.Type.Equals(q.questionType, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(),
                        QuestionTypeId  = questionTypes.Where(x => x.Type.Equals(q.questionType, StringComparison.OrdinalIgnoreCase)).FirstOrDefault().QuestionTypeId,
                        Priority        = q.Priority.ToString()
                    };
                    _repQuestion.Add(eQ);
                    _uow.Commit();
                    eQ = _repQuestion.Get(filter: f => f.QuestionText == q.questionText).FirstOrDefault();
                    qIds.Add(eQ.QuestionId.ToString());
                    foreach (var ans in q.answerChoices)
                    {
                        AnswerChoice ac = new AnswerChoice()
                        {
                            Answer     = ans,
                            Question   = eQ,
                            QuestionId = eQ.QuestionId
                        };
                        _repAnswerChoice.Add(ac);
                    }
                }
            }

            StringBuilder fQIds = new StringBuilder();

            foreach (string id in qIds)
            {
                fQIds.Append(id);
                fQIds.Append(",");
            }
            fQIds.Remove(fQIds.Length - 1, 1);
            Questionnaire.QuestionSet = fQIds.ToString();
            _repQuestionnaire.Update(Questionnaire);
            _uow.Commit();
            _questionnaireResponse.addResponse("Update", MessageCodes.InfoSavedSuccessfully, "questionnaire : " + request.QuestionnaireCode);
            return(_questionnaireResponse);
        }