Exemple #1
0
        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;
                }
            });
        }
Exemple #2
0
        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);
                }
            });
        }