public ProgressResult AddScore(Volunteer vol, Project pro, CreditRecord.CreditScore score)
 {
     if (vol != null && pro != null && score.PncScore <= 5.0 && score.SrvScore <= 5.0 && score.CmmScore <= 5.0)
     {
         if (vol.CreditRecords.FirstOrDefault(o => o.Project.Id == pro.Id) != null)
         {
             return(EditScore(vol, pro, score));
         }
         else
         {
             CreditRecord cr = new CreditRecord
             {
                 UID         = Guid.NewGuid(),
                 Project     = pro,
                 Participant = vol,
                 Score       = score
             };
             database.CreditRecords.Add(cr);
             //pro.CreditRecords.Add(cr);
             //vol.CreditRecords.Add(cr);
             vol.AddCredit(score);
             Save();
             return(ProgressResult.Success());
         }
     }
     else
     {
         return(ProgressResult.Error("评分失败,项目或志愿者不存在."));
     }
 }
Пример #2
0
 private void Confirm_Click(object sender, RoutedEventArgs e)
 {
     if (PncScore == -1 || SrvScore == -1 || CmmScore == -1)
     {
         MessageBox.Show("仍有未评分的项目.\n所有项评分才能继续.");
     }
     else
     {
         if (!vol.CreditRecords.Exists(o => o.Project.Id == pro.Id))
         {
             var pph = ProjectProgressHelper.GetInstance();
             CreditRecord.CreditScore s = new CreditRecord.CreditScore
             {
                 PncScore = this.PncScore,
                 SrvScore = this.SrvScore,
                 CmmScore = this.CmmScore
             };
             var result = pph.AddScore(vol, pro, s);
             if (result.Succeeded)
             {
                 MessageBox.Show("评分成功!");
                 FinishScoringEvent?.Invoke();
                 this.Close();
             }
             else
             {
                 MessageBox.Show("请检查分数输入是否合法.", "评分失败", MessageBoxButton.OK);
                 FinishScoringEvent?.Invoke();
             }
         }
         else
         {
             var pph = ProjectProgressHelper.GetInstance();
             CreditRecord.CreditScore s = new CreditRecord.CreditScore
             {
                 PncScore = this.PncScore,
                 SrvScore = this.SrvScore,
                 CmmScore = this.CmmScore
             };
             var result = pph.EditScore(vol, pro, s);
             if (result.Succeeded)
             {
                 MessageBox.Show("该志愿者本项目的评分已经更改.", "评分成功", MessageBoxButton.OK);
                 FinishScoringEvent?.Invoke();
                 this.Close();
             }
             else
             {
                 MessageBox.Show("请检查分数输入是否合法." + string.Join(",", result.Errors), "评分失败", MessageBoxButton.OK);
                 FinishScoringEvent?.Invoke();
                 this.Close();
             }
         }
     }
 }
        public ProgressResult ScoringDefaultForVolunteers(Project Pro, CreditRecord.CreditScore score)
        {
            ProgressResult result;

            Pro = database.Projects.SingleOrDefault(p => p.Id == Pro.Id);
            if (Pro == null)
            {
                return(ProgressResult.Error("数据库中不存在该项目!"));
            }
            List <Volunteer> selectedvolunteers = Pro.Volunteers;

            /*var Volunteers = database.Volunteers.Where(o => o.Project.Count() > 0).ToList();
             * List<Volunteer> selectedvolunteers = new List<Volunteer>();
             * foreach(var item in Volunteers)
             * {
             *  if( item.Project.Contains(Pro))
             *  {
             *      selectedvolunteers.Add(item);
             *  }
             * }*/
            foreach (var item in selectedvolunteers)
            {
                if (!item.CreditRecords.Exists(o => o.Project.Id == Pro.Id))
                {
                    item.AddCredit(score);
                    CreditRecord cr = new CreditRecord();
                    cr.Participant = item;
                    cr.Project     = Pro;
                    cr.Score       = score;
                    item.CreditRecords.Add(cr);
                }
            }
            Pro.ScoreCondition = ProjectScoreCondition.Scored;
            Save();
            result = ProgressResult.Success();
            return(result);
        }
        public ProgressResult EditScore(Volunteer volunteer, Project project, CreditRecord.CreditScore score)
        {
            CreditRecord crecord = database.CreditRecords.SingleOrDefault(r => r.Participant.UID == volunteer.UID && r.Project.Id == project.Id);

            if (crecord == null)
            {
                return(ProgressResult.Error("不存在对应的征信记录."));
            }
            else
            {
                try
                {
                    volunteer.DeleteCredit(crecord.Score);
                    volunteer.AddCredit(score);
                    crecord.Score = score;
                    Save();
                    return(ProgressResult.Success());
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }