예제 #1
0
        /// <summary>
        /// 基于评审实例的操作
        /// </summary>
        /// <returns></returns>
        public async Task <ActionResult> ReviewInstance()
        {
            var review = await GetCurrentReview();

            if (review == null || review.CurrentReviewRound == null || review.CurrentReviewRound.ReviewStatus != Reviews.ReviewStatus.Reviewing)
            {
                return(RedirectToAction("Index"));
            }

            var appConfiguration = _env.GetAppConfiguration();
            var loginInfo        = await _sessionAppService.GetCurrentLoginInformations();

            ViewData["softTitle"]      = appConfiguration["System:SoftTitle"];
            ViewData["reviewInstance"] = review;
            List <ReviewProject> reviewProjects = review.ReviewProjects;
            var sourceProjectIds = review.CurrentReviewRound.SourceProjectIDs.Split(',').Select(o => int.Parse(o));

            reviewProjects = reviewProjects.Where(o => sourceProjectIds.Contains(o.Id)).ToList();
            List <Project> projects;

            if (review.CurrentReviewRound.ReviewMethod != Reviews.ReviewMethod.Vote)
            {
                //非投票类型的评审需要移除当前专家回避的项目
                reviewProjects = reviewProjects.Where(o => !o.IsAvoidedByExpert(AbpSession.UserId.Value)).ToList();
            }
            //获取所有待评审项目
            projects = await ProjectRepository.GetAllIncluding(o => o.Prize, o => o.DesignOrganization).Include(o => o.PrizeSubMajor).ThenInclude(o => o.Major).Where(o => reviewProjects.Select(r => r.Id).Contains(o.Id)).ToListAsync();

            //暂存的数据
            List <ProjectReviewDetail> projectReviewDetails = new List <ProjectReviewDetail>();
            var expertReviewDetail = review.CurrentReviewRound.ExpertReviewDetails.SingleOrDefault(o => o.ExpertID == AbpSession.UserId.Value);

            if (expertReviewDetail != null)
            {
                projectReviewDetails = expertReviewDetail.ProjectReviewDetails;
            }

            ViewData["ReviewProjects"]    = reviewProjects;
            ViewData["ReviewProjectDtos"] = await ProjectAppService.ProjectToReviewProjectDtos(reviewProjects);

            ViewData["Projects"]             = projects;
            ViewData["ProjectReviewDetails"] = projectReviewDetails;

            return(View(loginInfo));
        }
예제 #2
0
        /// <summary>
        /// 评选活动详情
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public async Task <IActionResult> ReviewEdit(int data)
        {
            var matchInstance = await GetCurrentMatchInstance();

            var review = await ReviewRepository.GetAllIncluding(o => o.ReviewRounds).SingleOrDefaultAsync(o => o.Id == data);

            //获取对应的专家
            var expertIds   = review.ReviewExperts.Select(o => o.Id);
            var expertUsers = await UserRepository.GetAll()
                              .Include(o => o.Organization)
                              .Include(o => o.Specialities)
                              .Where(o => expertIds.Contains(o.Id)).ToListAsync();

            //Logger.Error("Before ExpertTransform:" + DateTime.Now.ToLongTimeString());
            var specialities = await SpecialityRepository.GetAllListAsync();

            var reviewExpertDtos = expertUsers.Select(o => new ReviewExpertDto
            {
                Id   = o.Id,
                Name = o.Name,
                OrganizationDisplayName = o.Organization?.DisplayName,
                Specialities            = o.Specialities.Select(s => specialities.Single(sp => sp.Id == s.SpecialityId).Name).ToList()
            });

            //var reviewExpertDtos = await UserAppService.UserToReviewExpertDtos(expertUsers,matchInstance.MatchId);
            //Logger.Error("After ExpertTransform:" + DateTime.Now.ToLongTimeString());
            ViewBag.Experts = reviewExpertDtos;
            //获取对应的项目
            var reviewProjects = review.ReviewProjects.OrderBy(o => o.Sort).ToList();

            //Logger.Error("Before ProjectTransform:" + DateTime.Now.ToLongTimeString());
            Logger.Error("0:" + DateTime.Now.ToString("HH:mm:ss:fff"));
            ViewBag.Projects = await ProjectAppService.ProjectToReviewProjectDtos(reviewProjects);

            //Logger.Error("After ProjectTransform:" + DateTime.Now.ToLongTimeString());
            ViewData["MatchInstance"] = matchInstance;
            return(View(review));
        }