Exemplo n.º 1
0
        //得分列表
        public List <PollingResultScoreView> PollingResultScore(int pollingId)
        {
            var polling             = Repository.Entities.FirstOrDefault(a => a.Id == pollingId);
            var pollingResultScores = new List <PollingResultScoreView>();

            var pollingAnswers = _pollingResultService.Repository.Entities.Where(a => a.PollingId == pollingId).Where(x => x.UserId != null).ToList();

            pollingAnswers.GroupBy(x => x.UserId).ToList().ForEach(y =>
            {
                var pollingResultScore = new PollingResultScoreView();
                int score = 0;
                foreach (var questionresult in PollingResult(pollingId))
                {
                    var answered = questionresult.Answers.Aggregate("", (current, answer) => current + (answer.AnswerId == 0 ? "N" : "Y"));

                    if (polling != null)
                    {
                        var questionstr = polling.PollingQuestions.FirstOrDefault(a => a.Id == questionresult.QuestionId);

                        if (questionstr != null)
                        {
                            var answer1 = ConvertAbcToYn(questionstr.RightAnswers, 10);

                            if (answer1 == answered && questionresult.UserId.ToUpper() == y.Key.ToUpper())
                            {
                                score += questionstr.Score.GetValueOrDefault();
                            }
                            else
                            {
                                score += 0;
                            }
                        }
                    }
                }
                List <EmployeeInfoWithDept> empDetails = WeChatCommonService.lstUserWithDeptTag;
                var emp = empDetails.SingleOrDefault(a => a.userid.ToUpper().Equals(y.Key.ToUpper()));
                pollingResultScore.UserId      = y.Key;
                pollingResultScore.CustomScore = score;
                if (emp != null)
                {
                    pollingResultScore.UserName    = emp.name;
                    pollingResultScore.UserDeptLv1 = emp.deptLvs[2];
                    pollingResultScore.UserDeptLv2 = emp.deptLvs[3];
                    pollingResultScore.UserDeptLv3 = emp.deptLvs[4];
                }
                pollingResultScores.Add(pollingResultScore);
            });

            return(pollingResultScores);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 某个polling员工答题后的得分列表
        /// </summary>
        /// <param name="pollingId"></param>
        /// <returns>员工列表,每个员工的得分,以及员工的部门(不再是员工啦)</returns>
        public List <PollingResultScoreView> PollingResultScore(int pollingId, PageCondition pageCondition)
        {
            //var polling = Repository.Entities.FirstOrDefault(a => a.Id == pollingId);
            var polling             = GetPollingView(pollingId);
            var pollingResultScores = new List <PollingResultScoreView>();

            // TODO: 用到了PollingResult
            // var pollingAnswers = _pollingResultService.GetList(pollingId);

            var pollingAnswers = pageCondition != null?_pollingResultService.GetGroupPagingByUserId(x => x.PollingId == pollingId && x.IsDeleted == false, pageCondition) : _pollingResultService.GetList(pollingId);

            var pollingResult = PollingResult(pollingId, pollingAnswers, polling);

            pollingResult.GroupBy(x => x.UserId).ToList().ForEach(y =>
            {
                // var userid = y.Key.ToUpper();

                var answersForYUser = y.ToList();


                var pollingResultScore = new PollingResultScoreView();
                decimal score          = 0;
                foreach (var questionresult in answersForYUser)
                {
                    var answered = questionresult.Answers.Aggregate("", (current, answer) => current + (answer.AnswerId == 0 ? "N" : "Y"));

                    if (polling != null)
                    {
                        var questionstr = polling.PollingQuestions.FirstOrDefault(a => a.Id == questionresult.QuestionId);

                        if (questionstr != null)
                        {
                            //NY转换成ABC
                            var answer1 = ConvertAbcToYn(questionstr.RightAnswers, 10);

                            if (answer1 == answered && questionresult.UserId.ToUpper() == y.Key.ToUpper())
                            {
                                score += questionstr.Score.GetValueOrDefault();
                            }
                            else
                            {
                                score += 0;
                            }
                        }
                    }
                }
                //List<EmployeeInfoWithDept> empDetails = WeChatCommonService.lstUserWithDeptTag;
                //var emp = empDetails.SingleOrDefault(a => a.userid.ToUpper().Equals(y.Key.ToUpper()));
                pollingResultScore.UserId   = y.Key;
                pollingResultScore.UserName = y.Key;
                //pollingResultScore.CustomScore = score;
                //if (emp != null)
                //{
                //    pollingResultScore.UserName = emp.name;
                //    pollingResultScore.UserDeptLv1 = emp.deptLvs[2];
                //    pollingResultScore.UserDeptLv2 = emp.deptLvs[3];
                //    pollingResultScore.UserDeptLv3 = emp.deptLvs[4];
                //}
                pollingResultScores.Add(pollingResultScore);
            });

            return(pollingResultScores);
        }