Exemplo n.º 1
0
 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);
 }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 3
0
        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);
                }
            }
        }
Exemplo n.º 4
0
 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);
 }
Exemplo n.º 5
0
        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);
        }