public void CreateAnswer(int questionId, string answer, int answererId, AnswerState answerState) { Validation.IdCheck(answererId); Validation.IdCheck(questionId); Validation.StringCheck(answer); using (var ctx = new IntelliCloudContext()) { AnswerEntity answerEntity = new AnswerEntity(); answerEntity.AnswerState = answerState; answerEntity.Content = answer; answerEntity.CreationTime = DateTime.UtcNow; UserEntity user = ctx.Users.SingleOrDefault(ld => ld.Id == answererId); if (user == null) throw new NotFoundException("No user entity exists with the specified ID."); answerEntity.User = user; // TODO link answer to question and generate a feedbackToken using GUID (can both be set in the question). // TODO set IsPrivate based on private settings in question. answerEntity.IsPrivate = false; // TODO determine real language LanguageDefinitionEntity languageDefinition = ctx.LanguageDefinitions.SingleOrDefault(ld => ld.Name.Equals("English")); if (languageDefinition == null) throw new NotFoundException("No languageDefinition entity exists with the specified ID."); answerEntity.LanguageDefinition = languageDefinition; ctx.Answers.Add(answerEntity); ctx.SaveChanges(); } // TODO put the SendAnswerFactory in the BaseManager. // TODO send the answer using the this.SendAnswerFactory.LoadPlugin(question.Source.Source.SourDefinition).SendAnswer(question, answer) method. }
/// <summary> /// This method adds a new question to the database and saves this in a variable /// </summary> private void initializeTestData() { using (IntelliCloudContext ctx = new IntelliCloudContext()) { UserEntity newEmployee = new UserEntity(); newEmployee.CreationTime = DateTime.UtcNow; newEmployee.FirstName = "employee"; newEmployee.Type = Common.DataTransfer.UserType.Employee; ctx.Users.Add(newEmployee); ctx.SaveChanges(); this.employee = newEmployee; AnswerEntity newAnswer = new AnswerEntity(); newAnswer.CreationTime = DateTime.UtcNow; newAnswer.Content = "Integration test for answer"; newAnswer.AnswerState = AnswerState.UnderReview; newAnswer.IsPrivate = false; newAnswer.LanguageDefinition = new LanguageDefinitionEntity() {Name = "Dutch", ResourceName = "NL"}; newAnswer.User = newEmployee; ctx.Answers.Add(newAnswer); ctx.SaveChanges(); this.answer = newAnswer; ReviewEntity newReview = new ReviewEntity(); newReview.CreationTime = DateTime.UtcNow; newReview.Content = "Integration test for review"; newReview.ReviewState = ReviewState.Open; newReview.User = newEmployee; newReview.Answer = newAnswer; ctx.Reviews.Add(newReview); ctx.SaveChanges(); this.review = newReview; } }
/// <summary> /// Converts an AnswerEntity to an Answer. /// </summary> /// <param name="entity">The AnswerEntity that has to be converted.</param> /// <returns>The Answer object.</returns> public Answer AnswerEntityToAnswer(AnswerEntity entity) { Answer answer = new Answer(); answer.Id = entity.Id; answer.CreationTime = entity.CreationTime; answer.Content = entity.Content; answer.AnswerState = entity.AnswerState; answer.User = UserEntityToUser(entity.User); return answer; }