public decimal?GetFinalScore(string examID) { if (Scores.ContainsKey(examID)) { ScoreData sd = Scores[examID]; if (sd.Score.HasValue && sd.AssignmentScore.HasValue) { //2019/1/11 俊緯更新 期中轉學成績證明書成績有誤,應該將成績乘上評分模板的比例 return(((sd.Score * examPercentage) + (sd.AssignmentScore * assignmentPercentage)) / (examPercentage + assignmentPercentage)); } else if (sd.Score.HasValue) { return(sd.Score.Value); } else if (sd.AssignmentScore.HasValue) { return(sd.AssignmentScore.Value); } else { return(null); } } return(null); }
public void AddScore(string examID, decimal?score, decimal?assignmentScore) { if (!Scores.ContainsKey(examID)) { Scores.Add(examID, new ScoreData()); } ScoreData data = Scores[examID]; data.Score = score; data.AssignmentScore = assignmentScore; }
public decimal?GetAssignmentScore(string examID) { if (_assignmentScoreCacheExamIDs.Contains(examID) && _assignmentScoreCache.ContainsKey(examID)) { return(_assignmentScoreCache[examID]); } else { _assignmentScoreCacheExamIDs.Add(examID); decimal s = decimal.Zero; decimal c = decimal.Zero; bool hasScore = false; decimal assignmentPercentage = decimal.Zero; foreach (var subject in Subjects.Values) { if (!subject.Scores.ContainsKey(examID)) { continue; } ScoreData data = subject.Scores[examID]; if (!data.AssignmentScore.HasValue) { continue; } s += data.AssignmentScore.Value * subject.Credit; c += subject.Credit; assignmentPercentage += data.AssignmentScore.Value * subject.assignmentPercentage * subject.Credit; hasScore = true; } if (hasScore && c > decimal.Zero) { if (!_assignmentScoreCache.ContainsKey(examID)) { _assignmentScoreCache.Add(examID, null); } _assignmentScoreCache[examID] = s / c; if (!_assignmentScorePercentageCache.ContainsKey(examID)) { _assignmentScorePercentageCache.Add(examID, null); } _assignmentScorePercentageCache[examID] = assignmentPercentage / c; return(_assignmentScoreCache[examID]); } else { return(null); } } }
public decimal?GetFinalScore(string examID) { if (Scores.ContainsKey(examID)) { ScoreData sd = Scores[examID]; if (sd.Score.HasValue && sd.AssignmentScore.HasValue) { return((sd.Score + sd.AssignmentScore) / 2); } else if (sd.Score.HasValue) { return(sd.Score.Value); } else if (sd.AssignmentScore.HasValue) { return(sd.AssignmentScore.Value); } else { return(null); } } return(null); }
private int WriteDomainRow(Cell indexCell, DomainRow domain) { WordHelper.Write(indexCell, _font, string.IsNullOrEmpty(domain.DomainName) ? "彈性課程" : domain.DomainName); Cell subjectCell = WordHelper.GetMoveRightCell(indexCell, 1); int count = 0; foreach (var subjectName in domain.Subjects.Keys) { SubjectRow row = domain.Subjects[subjectName]; //if (row.Display) //{ Cell temp = subjectCell; WordHelper.Write(temp, _font, row.SubjectName); temp = temp.NextSibling as Cell; WordHelper.Write(temp, _font, row.PeriodCredit); foreach (string examID in row.Scores.Keys) { ScoreData data = row.Scores[examID]; temp = WordHelper.GetMoveRightCell(subjectCell, _columnMapping[examID] - 1); WordHelper.Write(temp, _font, (data.Score.HasValue ? "" + _calculator.ParseSubjectScore(data.Score.Value) : "")); WordHelper.Write(temp.NextSibling as Cell, _font, "" + data.AssignmentScore); WordHelper.Write(temp.NextSibling.NextSibling as Cell, _font, "" + row.GetFinalScore(examID)); } subjectCell = WordHelper.GetMoveDownCell(subjectCell, 1); if (subjectCell == null) { break; } count++; //} } return(count); }