Example #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;
                }
            });
        }
        public void Subscribe(User user, Course course, SendQuestionManager sendQuestionManager, QuestionManager _questionManager)
        {
            if (user.IsTeacher)
            {
                throw new QuestionarException("Apenas alunos podem se cadastrar em disciplinas.");
            }
            if (!user.Active)
            {
                throw new QuestionarException("Usuários inativos não podem se cadastrar.");
            }

            if (Repository.Query().Any(c => c.Student.Id == user.Id && c.Course.Id == course.Id))
            {
                throw new QuestionarException("Usuário já inscrito nesta disciplina.");
            }
            Transaction(() =>
            {
                var subscription = new Subscription
                {
                    Course  = course,
                    Entered = DateTime.Now,
                    Student = user
                };

                Repository.Create(subscription);
                sendQuestionManager.SendQuestion(user, course, _questionManager);
            });
        }
Example #3
0
        public void SendFirstQuestion(SubscribeManager subscribeManager, SendQuestionManager sendQuestionManager, Course course, Question question)
        {
            var users = subscribeManager.UsersByCourse(course);

            users.ForEach(user =>
            {
                sendQuestionManager.SendQuestion(user, course, question);
            });
        }
Example #4
0
        public bool Reply(int idAlternative, User student, AlternativeManager alternativeManager, SendQuestionManager sendQuestionManager)
        {
            var alternative = alternativeManager.Repository.GetById(idAlternative);

            if (alternative == null)
            {
                throw new QuestionarException("Alternativa inválida");
            }

            Transaction(() =>
            {
                var answer = new Answer()
                {
                    Alternative = alternative,
                    Student     = student,
                    Created     = DateTime.Now
                };

                Repository.Create(answer);
                sendQuestionManager.AnswerQuestion(student, alternative.Question);
            });

            return(alternative.IsCorrect);
        }