/// <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 newUser = new UserEntity(); newUser.CreationTime = DateTime.UtcNow; newUser.FirstName = "integration"; newUser.LastName = "test"; newUser.Type = Common.DataTransfer.UserType.Customer; ctx.Users.Add(newUser); ctx.SaveChanges(); 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; SourceEntity newSource = new SourceEntity(); newSource.User = newUser; newSource.Value = "*****@*****.**"; newSource.CreationTime = DateTime.UtcNow; newSource.SourceDefinition = new SourceDefinitionEntity { CreationTime = DateTime.UtcNow, Description = "integration test def", Name = "test def", Url = "" }; ctx.Sources.Add(newSource); ctx.SaveChanges(); QuestionEntity newEntity = new QuestionEntity(); newEntity.IsPrivate = false; newEntity.LanguageDefinition = new LanguageDefinitionEntity { Name = "English", ResourceName = "English" }; newEntity.QuestionState = Common.DataTransfer.QuestionState.Open; newEntity.Source = new QuestionSourceEntity { Source = newSource, PostId = "" }; newEntity.Title = "this is a test question"; newEntity.User = newUser; newEntity.Content = "this is the question i want to ask, please help me?"; newEntity.CreationTime = DateTime.UtcNow; newEntity.FeedbackToken = "feedbackyeah!!@#$%^&*()"; ctx.Questions.Add(newEntity); ctx.SaveChanges(); this.entity = newEntity; } }
/// <summary> /// Converts a QuestionEntity to a Question. /// </summary> /// <param name="entity">The QuestionEntity that has to be converted.</param> /// <returns>The question object.</returns> public Question QuestionEntityToQuestion(QuestionEntity entity) { Question question = new Question(); question.Id = entity.Id; if (entity.Answerer != null) { question.Answerer = UserEntityToUser(entity.Answerer); } question.User = UserEntityToUser(entity.User); question.Content = entity.Content; question.CreationTime = entity.CreationTime; question.QuestionState = entity.QuestionState; question.Source = this.QuestionSourceEntityToQuestionSource(entity.Source); return question; }
public void CreateQuestion( string source, string reference, string question, string title, string postId = null, bool isPrivate = false) { Validation.StringCheck(source); Validation.StringCheck(reference); Validation.StringCheck(question); Validation.StringCheck(title); using (IntelliCloudContext ctx = new IntelliCloudContext()) { // TODO determine real language LanguageDefinitionEntity languageDefinition = ctx.LanguageDefinitions.SingleOrDefault(ld => ld.Name.Equals("English")); // TODO remove exception as you probably want to create the language if it doesn't exist. if (languageDefinition == null) throw new NotFoundException("No languageDefinition entity exists with the specified ID."); SourceDefinitionEntity sourceDefinition = ctx.SourceDefinitions.SingleOrDefault(sd => sd.Name.Equals(source)); if (sourceDefinition == null) throw new NotFoundException("The provided source doesn't exists."); // Check if the user already exists SourceEntity sourceEntity = ctx.Sources.SingleOrDefault(s => s.SourceDefinition.Id == sourceDefinition.Id && s.Value == reference); UserEntity userEntity; if (sourceEntity != null) { // user already has an account, use this userEntity = ctx.Users.Single(u => u.Id == sourceEntity.UserId); } else { // user has no account, create one userEntity = new UserEntity() { CreationTime = DateTime.UtcNow, Type = UserType.Customer }; ctx.Users.Add(userEntity); // Mount the source to the new user sourceEntity = new SourceEntity() { Value = reference, CreationTime = DateTime.UtcNow, SourceDefinition = sourceDefinition, User = userEntity, }; ctx.Sources.Add(sourceEntity); } QuestionEntity questionEntity = new QuestionEntity() { Content = question, CreationTime = DateTime.UtcNow, IsPrivate = isPrivate, QuestionState = QuestionState.Open, Title = title, Source = new QuestionSourceEntity() { Source = sourceEntity, PostId = postId }, LanguageDefinition = languageDefinition, User = userEntity }; ctx.Questions.Add(questionEntity); ctx.SaveChanges(); } }