public void Save(IEnumerable<SubjectViewModel> subjects, Semester semester) { var originalSubjects = subjectService.All().Where(s => s.SemesterId == semester.Id); var modification = CollectionModificationResolver.Resolve(subjects.Where(s => IdChecker(s.Id)), originalSubjects, (income, viewModel) => income.Id == long.Parse(viewModel.Id)); foreach (var item in modification.Modified) { SaveSubject(item.Key, item.Value); } AddNewSubjects(semester, subjects.Where(s => !IdChecker(s.Id))); AddNewSubjects(semester, modification.Added); foreach (var subject in modification.Deleted) { subjectService.Delete(subject); } }
public void Save(IEnumerable<SemesterViewModel> semesters, Curriculum curriculum) { var originalSemesters = semesterService.All().Where(s => s.CurriculumId == curriculum.Id); var modification = CollectionModificationResolver.Resolve(semesters, originalSemesters, (income, viewModel) => income.Id == viewModel.Id); foreach (var item in modification.Modified) { SaveSemester(item.Key, item.Value); } foreach (var item in modification.Added) { var semester = new Semester { Id = item.Id, Curriculum = curriculum }; SaveSemester(item, semester); } foreach (var semester in modification.Deleted) { subjectManagementService.Delete(semester.Subjects); semesterService.Delete(semester); } }
private void SaveSemester(SemesterViewModel viewModel, Semester semester) { semesterService.Save(semester); Mapper.Map<SemesterViewModel, Semester>(viewModel, semester); subjectManagementService.Save(viewModel.Subjects, semester); }
private void AddNewSubjects(Semester semester, IEnumerable<SubjectViewModel> subjectViewModels) { foreach (var item in subjectViewModels) { var subject = new Subject(); if (IdChecker(item.Id)) { var dbSubject = subjectService.CreateOrOpen(long.Parse(item.Id)); Mapper.Map<Subject, Subject>(dbSubject, subject); subject.Id = 0; } else { subject.Id = 0; subject.Name = SubjectIdPrefixHelper.Trim(item.Id); } subject.Semester = semester; SaveSubject(item, subject); } }