public virtual async Task <MatchInstance> GetCurrentMatchInstance()
        {
            MatchInstance matchInstance  = null;
            var           matchIntanceId = Request.Cookies["matchInstanceId"];

            if (!string.IsNullOrEmpty(matchIntanceId))
            {
                matchInstance = await MatchInstanceRepository.GetAll().Include(o => o.Match).Where(o => o.Id == int.Parse(matchIntanceId)).SingleOrDefaultAsync();
            }
            return(matchInstance);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 添加评审
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        public override async Task InsertAsync(Review entity)
        {
            var matchInstance = await MatchInstanceRepository.GetAsync(entity.MatchInstanceId);

            //if (matchInstance.MatchInstanceStatus != MatchInstanceStatus.Reviewing)
            //{
            //    throw new UserFriendlyException("当前赛事尚未结束申报,无法建立评选活动");
            //}
            //验证数据是否有效

            //if (await Repository.CountAsync(o=>o.MatchInstanceId==entity.MatchInstanceId && o.MajorId==entity.MajorId && o.SubMajorId==entity.SubMajorId && o.ReviewType == entity.ReviewType) > 0)
            //{
            //
            //}
            //初始化评审数据
            await InitReview(entity);

            await base.InsertAsync(entity);
        }
Exemplo n.º 3
0
 /// <summary>
 /// 是否赛事正在申报中
 /// </summary>
 /// <param name="matchId"></param>
 /// <returns></returns>
 public virtual async Task <bool> GetIfMatchInApply(int matchId)
 {
     return(await MatchInstanceRepository.CountAsync(o => o.MatchId == matchId && o.MatchInstanceStatus == MatchInstanceStatus.Applying) > 0);
 }
Exemplo n.º 4
0
        /// <summary>
        /// 初始化评审数据:包括自动生成评审名称、专业名称,自动加入对应的项目和专家
        /// </summary>
        /// <param name="review"></param>
        /// <returns></returns>
        private async Task InitReview(Review review)
        {
            var matchInstance = await MatchInstanceRepository.GetAllIncluding(o => o.Match).Where(o => o.Id == review.MatchInstanceId).FirstOrDefaultAsync();

            //决赛评审初始化
            if (review.ReviewType == ReviewType.Champion)
            {
                review.ReviewName     = matchInstance.Match.Name + "-决赛";
                review.ReviewExperts  = new List <ReviewExpert>();
                review.ReviewProjects = new List <ReviewProject>();
                return;
            }

            var mainMajor = await MajorRepository.GetAsync(review.MajorId.Value);

            //评选的专业名称
            review.ReviewMajorName = mainMajor.BriefName;
            if (review.SubMajorId != null)
            {
                var subMajor = await MajorRepository.GetAsync(review.SubMajorId.Value);

                review.ReviewMajorName += "-" + subMajor.BriefName;
            }
            review.ReviewName  = matchInstance.Match.Name + "-" + review.ReviewMajorName;
            review.ReviewName += "-" + (review.ReviewType == ReviewType.Initial ? "初评" : "终评");
            //验证数据
            if (await Repository.CountAsync(o => o.MatchInstanceId == review.MatchInstanceId && o.ReviewName == review.ReviewName) > 0)
            {
                throw new UserFriendlyException("当前赛事下相同名称的评选活动已存在");
            }
            if (review.SubMajorId == null)
            {
                //如果未指定子专业,则默认不选入项目和专家
                review.ReviewExperts  = new List <ReviewExpert>();
                review.ReviewProjects = new List <ReviewProject>();
                return;
            }
            //将当前赛事对应的项目加入
            var projectQuery = ProjectRepository.GetAll().Where(o => o.MatchInstanceId == review.MatchInstanceId && o.Prize.MajorId == review.MajorId);

            //modi20181031去除混排类项目
            projectQuery = projectQuery.Where(o => o.Prize.PrizeType != Prizes.PrizeType.Mixed);
            //&& (o.ProjectStatus==ProjectStatus.UnderReview || (o.ProjectStatus==ProjectStatus.Reviewing && o.Prize.PrizeType==Prizes.PrizeType.Multiple))
            if (review.ReviewType == ReviewType.Initial)
            {
                //初评选择待评选和初评中的项目
                projectQuery = projectQuery.Where(o => o.ProjectStatus == ProjectStatus.UnderReview || o.ProjectStatus == ProjectStatus.Reviewing);
            }
            else
            {
                //终评选择有终评标识的项目
                projectQuery = projectQuery.Where(o => o.IsInFinalReview);
            }
            if (review.SubMajorId == null)
            {
                //针对专业大类的项目
                projectQuery = projectQuery.Where(o => o.ProjectMajorInfos.Count == 1);
            }
            else
            {
                //有具体专业小类的项目
                projectQuery = projectQuery.Where(o => o.ProjectMajorInfos.Count(p => p.MajorId == review.SubMajorId) > 0);
            }
            var projects = await projectQuery.ToListAsync();

            var reviewProjects = new List <ReviewProject>();

            for (var i = 0; i < projects.Count; i++)
            {
                var reviewProject = new ReviewProject()
                {
                    Id   = projects[i].Id,
                    Sort = 0
                };
                //设置项目状态为初评中
                if (review.ReviewType == ReviewType.Initial && projects[i].ProjectStatus != ProjectStatus.Reviewing)
                {
                    projects[i].ProjectStatus = ProjectStatus.Reviewing;
                    await ProjectManager.TraceLog(projects[i].Id, "进入初评", ProjectStatus.Reviewing);
                }
                else if (review.ReviewType == ReviewType.Finish && projects[i].ProjectStatus != ProjectStatus.FinalReviewing)
                {
                    projects[i].ProjectStatus = ProjectStatus.FinalReviewing;
                    //更改项目状态
                    await ProjectManager.TraceLog(projects[i].Id, "进入终评", ProjectStatus.FinalReviewing);
                }

                reviewProjects.Add(reviewProject);
            }
            review.ReviewProjects = reviewProjects;

            //加入对应专业的专家modi20181101 不自动选入专家
            var reviewExperts = new List <ReviewExpert>();

            //List<User> experts = new List<User>();
            //var expertMajorId = review.SubMajorId == null ? review.MajorId : review.SubMajorId.Value;
            ////专家专业绑定使用的是原始专业树,而不是发布后复制出来的专业树,故需要通过专业sn去找
            //var major = (await MajorManager.GetByIdAsync(expertMajorId));
            //var oriMajor =await MajorRepository.GetAll().Where(o => o.BriefCode == major.BriefCode  && o.MatchInstanceId==null && o.MatchId==major.MatchInstance.MatchId).FirstOrDefaultAsync();
            //if (oriMajor != null)
            //{
            //    experts = await MajorManager.GetMajorExperts(oriMajor.Id);
            //    reviewExperts.AddRange(experts.Select(o => new ReviewExpert() { Id = o.Id }));
            //}
            review.ReviewExperts = reviewExperts;
        }