public ActionResult AddFaculty(int[] examMark, int[] schoolMark) { var currentEnrollee = _enrolleeService.Find(customer => customer.AppCustomer.UserName == User.Identity.Name).First(); var exSubjects = _examinationSubjectService.Find(ex => ex.Enrollees.Any(e => e.Email == currentEnrollee.Email)).ToList(); if (examMark != null) { for (var i = 0; i < examMark.Length; i++) { var mark = new Mark { StudentMark = examMark[i], Enrollee = currentEnrollee, ExaminationSubject = exSubjects[i] }; _markService.Create(mark); if (exSubjects[i].Marks.Any(m => m.ExaminationSubject.Name == exSubjects[i].Name && m.Enrollee.Email == currentEnrollee.Email)) { exSubjects[i].Marks.First(m => m.ExaminationSubject.Name == exSubjects[i].Name && m.Enrollee.Email == currentEnrollee.Email).StudentMark = examMark[i]; } else { exSubjects[i].Marks.Add(_markService.Find(m => m.Enrollee.Email == currentEnrollee.Email && m.ExaminationSubject.Name == exSubjects[i].Name).Last()); } } } exSubjects.ForEach(s => _examinationSubjectService.Update(s)); var schoolSubjects = _schoolSubjectsService.Find(ex => ex.Enrollees.Any(e => e.Email == currentEnrollee.Email)).ToList(); if (schoolMark != null) { for (var i = 0; i < schoolMark.Length; i++) { var mark = new Mark { StudentMark = schoolMark[i], Enrollee = currentEnrollee, SchoolSubject = schoolSubjects[i] }; _markService.Create(mark); if (schoolSubjects[i].Marks.Any(m => m.SchoolSubject.Name == schoolSubjects[i].Name && m.Enrollee.Email == currentEnrollee.Email)) { schoolSubjects[i].Marks.First(m => m.SchoolSubject.Name == schoolSubjects[i].Name && m.Enrollee.Email == currentEnrollee.Email).StudentMark = schoolMark[i]; } else { schoolSubjects[i].Marks.Add(_markService.Find(m => m.Enrollee.Email == currentEnrollee.Email && m.SchoolSubject.Name == schoolSubjects[i].Name).Last()); } } } schoolSubjects.ForEach(s => _schoolSubjectsService.Update(s)); _enrolleeService.Update(currentEnrollee); return(RedirectToAction("GetFaculty", new { area = string.Empty, controller = "Faculty" })); }