public void Create(AlternativeManager alternativeManager, SendQuestionManager sendQuestionManager, SubscribeManager subscribeManager, Question question, Course course, List <Alternative> alternatives) { Transaction(() => { if (course == null) { throw new QuestionarException("O curso selecionado é inválido."); } if (string.IsNullOrEmpty(question.Description)) { throw new QuestionarException("Descrição é um campo obrigatório."); } question.Course = course; question.Order = Order(question); Repository.Create(question); alternativeManager.Create(alternatives, question); var isTheFirst = !Repository.Query().Any(c => c.Id != question.Id && c.Course.Id == course.Id); if (isTheFirst) { SendFirstQuestion(subscribeManager, sendQuestionManager, course, question); question.Sent = true; question.SentDate = DateTime.Now; } }); }
public void SendQuestions(UserManager userManager, QuestionManager questionManager, CourseManager courseManager, SubscribeManager subscribeManager) { Transaction(() => { var courses = courseManager.EnabledCourses(); var questions = questionManager.FirstQuestionsByCourse(courses); foreach (var question in questions) { var users = subscribeManager.UsersByCourse(question.Course); foreach (var user in users) { var userQuestion = new UserQuestion { Question = question, User = user, Created = DateTime.Now }; Repository.Create(userQuestion); } question.Sent = true; question.SentDate = DateTime.Now; questionManager.Update(question); } }); }