private SubjectGradesRecordViewModel MapSubjectGradesRecord_To_SubjectGradesRecordViewModel(SubjectGradesRecord subjectGradesRecord)
        {
            var subjectGradesRecordViewModel = new SubjectGradesRecordViewModel()
            {
                RegistrationId = subjectGradesRecord.Registration.Id,
                SubjectId = subjectGradesRecord.Subject.Id,
                LevelId = subjectGradesRecord.Registration.Degree.LevelId,
                StudentFullName = subjectGradesRecord.Registration.Student.FullName,
                GradeViewModels = new List<GradeViewModel>()
            };

            foreach (var grade in subjectGradesRecord.Grades)
            {
                subjectGradesRecordViewModel.GradeViewModels.Add(new GradeViewModel
                {
                    Id = grade.Id,
                    PeriodId = grade.PeriodId,
                    PeriodName = grade.Period.Name,
                    GradeValue = grade.GradeValue
                });
            }

            return subjectGradesRecordViewModel;
        }
        private SubjectGradesRecord MapSubjectGradesRecordViewModel_To_SubjectGradesRecord(SubjectGradesRecordViewModel subjectGradesRecordViewModel)
        {
            var subjectGradesRecord = _unitOfWork.SubjectGradesRecordRepository.GetById(subjectGradesRecordViewModel.Id);

            // For editing existing grade record
            if (subjectGradesRecord != null)
            {
                subjectGradesRecord.SubjectId = subjectGradesRecordViewModel.SubjectId;

                foreach (var gradeViewModel in subjectGradesRecordViewModel.GradeViewModels)
                {
                    var grade = _unitOfWork.GradeRepository.GetById(gradeViewModel.Id);
                    grade.GradeValue = gradeViewModel.GradeValue;
                }
            }
            else // For creating new grade record
            {
                subjectGradesRecord =  new SubjectGradesRecord
                {
                    Id = subjectGradesRecordViewModel.Id, 
                    Registration = _unitOfWork.RegistrationRepository.GetById(subjectGradesRecordViewModel.RegistrationId),
                    SubjectId = subjectGradesRecordViewModel.SubjectId,
                    Grades = new List<Grade>()
                };

                foreach (var grade in subjectGradesRecordViewModel.GradeViewModels)
                {
                    subjectGradesRecord.Grades.Add(new Grade
                    {
                        PeriodId = grade.PeriodId,
                        GradeValue = grade.GradeValue
                    });
                }
            }
            
            return subjectGradesRecord;
        }