예제 #1
0
        public Questionnaire Questionnaire(int userId, int advertiseId)
        {
            var questionnaireRepo = new QuickRepository <Questionnaire>();
            var questionnaire     =
                questionnaireRepo.FirstOrDefault(x => x.UserId == userId && x.AdvertiseId == advertiseId) ??
                questionnaireRepo.Add(new Questionnaire
            {
                AdvertiseId = advertiseId,
                UserId      = userId
            });

            List <Cluster> listCluster = Cached.Load("cached_listCluster",
                                                     key => new QuickRepository <Cluster>().ToList());
            List <Question> listQuestion = Cached.Load("cached_listQuestion",
                                                       key => new QuickRepository <Question>().ToList());
            List <Answer> listAnswer = new QuickRepository <Answer>()
                                       .Where(x => x.QuestionnaireId == questionnaire.Id)
                                       .ToList();
            List <Cluster> parsedClusters = listCluster.Select(x => {
                x.QuestionList = listQuestion.Where(
                    y => y.IdCluster == x.Id
                    ).ToList();
                x.AnswerList = listAnswer.Where(y =>
                                                x.QuestionList.Any(
                                                    z => z.Id == y.QuestionId
                                                    )
                                                ).ToList();
                return(x);
            }).ToList();

            questionnaire.ClusterList = parsedClusters;

            return(questionnaire);
        }
예제 #2
0
        public Question ListQuestionByCluster(string questionnaireId, string clusterId)
        {
            var questionRepo = new QuickRepository <Question>();
            var clusterRepo  = new QuickRepository <Cluster>();
            var answerRepo   = new QuickRepository <Answer>();

            var answer   = answerRepo.Where(x => x.QuestionnaireId == questionnaireId).ToList();
            var question = questionRepo.Where(x => x.IdCluster == clusterId).ToList();


            var filterAdd = question.FirstOrDefault(x => !answer.Any(y => y.QuestionId == x.Id));


            return(filterAdd);
        }
예제 #3
0
        public Report CreateReport(string questionnaireId)
        {
            try
            {
                var service                 = new VehicleInformationService();
                var history                 = service.GetVehicleInformation("FFP6026");
                var reportRepository        = new QuickRepository <Report>();
                var answerRepository        = new QuickRepository <Answer>();
                var clusterRepository       = new QuickRepository <Cluster>();
                var questionRepository      = new QuickRepository <Question>();
                var questionnaireRepository = new QuickRepository <Questionnaire>();
                var questionnaire           = questionnaireRepository.First(x => x.Id == questionnaireId);

                //if (questionnaire.Finished)
                //{
                //    return new Report {
                //        Error = true,
                //        Description = "Este questionário ja foi finalizado"
                //    };
                //}

                var clusters  = clusterRepository.ToList();
                var questions = questionRepository.ToList();
                var answers   = answerRepository.Where(x => x.QuestionnaireId == questionnaireId).ToList();
                var report    = reportRepository.Add(new Report
                {
                    QuestionnaireId = questionnaire.Id,
                    State           = new ReportState(),
                    History         = new ReportHistory
                    {
                        OnwerQuantity = history.OnwerQuantity,
                        Recall        = history.Recall,
                        Auction       = history.Auction,
                        Accidents     = history.Accidents,
                        Roberry       = history.Roberry,
                    },
                    VehicleAdvert = new VehicleAdvert(),
                    Clusters      = clusters.Select(x =>
                    {
                        var clusterQuestions = questions.Where(y => y.IdCluster == x.Id).ToList();
                        var clusterAnswers   = answers.Where(y => y.Value && clusterQuestions.Any(z => z.Id == y.QuestionId));
                        return(new ReportCluster
                        {
                            Name = x.Name,
                            Description = x.Description,
                            Alias = x.Alias,
                            Answers = clusterAnswers.Select(y =>
                            {
                                var question = clusterQuestions.First(z => y.QuestionId == z.Id);
                                return new ReportAnswer {
                                    Name = question.Name,
                                    Price = question.Price,
                                    Photo = y.Photo
                                };
                            }).ToList()
                        });
                    }).ToList()
                });

                //questionnaire.Finished = true;
                //questionnaireRepository.Update(questionnaire);

                return(report);
            }
            catch (Exception)
            {
                return(new Report {
                    Error = true,
                    Description = "Não foi possível consolidar as informações do formulário"
                });
            }
        }