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()); } }
public async Task <QuestionnaireUpdateResponse> DotaznikUpdate(QuestionnaireUpdateRequest questionnaire) { var apiForm = _configuration["url"]; var response = await _httlClient.PostJsonAsync <QuestionnaireUpdateResponse>(apiForm + "api/Questionnaire/Update", questionnaire); return(response); }
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 } })); }
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 }
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); }