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("评分失败,项目或志愿者不存在.")); } }
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; } } }