forked from MDCPS/DamageAssessment_Backend
		
	Added new endpoint for creating multiple questions
This commit is contained in:
		| @ -90,6 +90,27 @@ namespace DamageAssesment.Api.Questions.Controllers | ||||
|             return CreatedAtRoute("DefaultApi", new { id = question.Id }, question); | ||||
|         } | ||||
|         /// <summary> | ||||
|         /// POST request for creating a multiple question (multilingual). | ||||
|         /// </summary> | ||||
|         [Authorize(Roles = "admin")] | ||||
|         [HttpPost("questions/multiple")] | ||||
|         public async Task<IActionResult> CreateQuestions(List<Models.Question> questions) | ||||
|         { | ||||
|             if (questions != null) | ||||
|             { | ||||
|                 var result = await this.questionsProvider.PostQuestionsAsync(questions); | ||||
|                 if (result.IsSuccess) | ||||
|                 { | ||||
|                     return Ok(result.Question); | ||||
|                 } | ||||
|                 if (result.ErrorMessage == "Not Found") | ||||
|                     return NotFound(result.ErrorMessage); | ||||
|  | ||||
|                 return BadRequest(result.ErrorMessage); | ||||
|             } | ||||
|             return CreatedAtRoute("DefaultApi",questions); | ||||
|         } | ||||
|         /// <summary> | ||||
|         /// POST request for creating a new question (multilingual). | ||||
|         /// </summary> | ||||
|  | ||||
|  | ||||
| @ -8,6 +8,7 @@ namespace DamageAssesment.Api.Questions.Interfaces | ||||
|         Task<(bool IsSuccess, IEnumerable<Models.MultiLanguage> Questions, string ErrorMessage)> GetQuestionsAsync(string language); | ||||
|         Task<(bool IsSuccess, List<SurveyQuestions> SurveyQuestions, string ErrorMessage)> GetSurveyQuestionAsync(int surveyId,string language); | ||||
|         Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> PostQuestionAsync(Models.Question Question); | ||||
|         Task<(bool IsSuccess, IEnumerable<Models.MultiLanguage> Question, string ErrorMessage)> PostQuestionsAsync(List<Models.Question> Questions); | ||||
|         Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> UpdateQuestionAsync(Models.Question Question); | ||||
|         Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> DeleteQuestionAsync(int id); | ||||
|  | ||||
|  | ||||
| @ -334,16 +334,7 @@ namespace DamageAssesment.Api.Questions.Providers | ||||
|             try | ||||
|             { | ||||
|                 logger?.LogInformation("Query Question"); | ||||
|                 var dbquestion = mapper.Map<Models.Question, Db.Question>(Question); | ||||
|                 var dbquestiontranslation = mapper.Map<List<Models.QuestionsTranslation>, List<Db.QuestionsTranslation>>(Question.Questions); | ||||
|                 dbquestion.QuestionTypeId = questionDbContext.QuestionTypes.Where(a => a.TypeText == Question.TypeText).Select(a => a.Id).FirstOrDefault(); | ||||
|                 questionDbContext.Questions.Add(dbquestion); | ||||
|                 dbquestiontranslation.ForEach(i => i.QuestionId = dbquestion.Id); | ||||
|                 questionDbContext.QuestionsTranslations.AddRange(dbquestiontranslation); | ||||
|                 questionDbContext.SaveChanges(); | ||||
|                 Question.Id = dbquestion.Id; | ||||
|                 var result = mapper.Map<Db.Question, Models.MultiLanguage>(dbquestion); | ||||
|                 result.Text = CreateMultiLanguageObject(GetQuestionsTranslations(result.Id, "")); | ||||
|                 var result = InsertQuestion(Question); | ||||
|                 return (true, result, null); | ||||
|             } | ||||
|             catch (Exception ex) | ||||
| @ -352,6 +343,38 @@ namespace DamageAssesment.Api.Questions.Providers | ||||
|                 return (false, null, ex.Message); | ||||
|             } | ||||
|         } | ||||
|         private Models.MultiLanguage InsertQuestion(Models.Question Question) | ||||
|         { | ||||
|             var dbquestion = mapper.Map<Models.Question, Db.Question>(Question); | ||||
|             var dbquestiontranslation = mapper.Map<List<Models.QuestionsTranslation>, List<Db.QuestionsTranslation>>(Question.Questions); | ||||
|             dbquestion.QuestionTypeId = questionDbContext.QuestionTypes.Where(a => a.TypeText == Question.TypeText).Select(a => a.Id).FirstOrDefault(); | ||||
|             questionDbContext.Questions.Add(dbquestion); | ||||
|             dbquestiontranslation.ForEach(i => i.QuestionId = dbquestion.Id); | ||||
|             questionDbContext.QuestionsTranslations.AddRange(dbquestiontranslation); | ||||
|             questionDbContext.SaveChanges(); | ||||
|             Question.Id = dbquestion.Id; | ||||
|             var result = mapper.Map<Db.Question, Models.MultiLanguage>(dbquestion); | ||||
|             result.Text = CreateMultiLanguageObject(GetQuestionsTranslations(result.Id, "")); | ||||
|             return result; | ||||
|         } | ||||
|         public async Task<(bool IsSuccess, IEnumerable<Models.MultiLanguage> Question, string ErrorMessage)> PostQuestionsAsync(List<Models.Question> Questions) | ||||
|         { | ||||
|             try | ||||
|             { | ||||
|                 List<Models.MultiLanguage> results = new List<MultiLanguage>(); | ||||
|                 logger?.LogInformation("Query Question"); | ||||
|                 foreach (Models.Question Question in Questions) | ||||
|                 { | ||||
|                     results.Add(InsertQuestion(Question)); | ||||
|                 } | ||||
|                 return (true, results, null); | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 logger?.LogError(ex.ToString()); | ||||
|                 return (false, null, ex.Message); | ||||
|             } | ||||
|         } | ||||
|         public async Task<(bool IsSuccess, Models.MultiLanguage Question, string ErrorMessage)> UpdateQuestionAsync(Models.Question Question) | ||||
|         { | ||||
|             try | ||||
|  | ||||
		Reference in New Issue
	
	Block a user