public void DeleteStudent(string IndexNumber) { var Db = new s19110Context(); var deletedRoles = Db.StudentRoles.Where(sr => sr.IndexNumber.Equals(IndexNumber)).ToList(); var deleted = new NewModels.Student() { IndexNumber = IndexNumber }; foreach (var sr in deletedRoles) { Db.Remove(sr); } Db.SaveChanges(); //Muszę jakoś obejść więzy spójności przy rolach z poprzednich zajęć Db.Remove(deleted); Db.SaveChanges(); }
public EnrollStudentResponse EnrollStudent(EnrollStudentRequest request) { var db = new s19110Context(); //1. Czy studia instnieją? var study = db.Studies.Where(st => st.Name.Equals(request.Studies)).FirstOrDefault(); if (study == null) { throw new ArgumentException("Podane studia nie instnieją"); } //3. Sprawdzenie czy student o takim indeksie już istnieje var student = db.Student.Where(st => st.IndexNumber == request.IndexNumber).FirstOrDefault(); if (student != null) { throw new ArgumentException("Student o podanym indeksie już znajduje się w bazie danych"); } //3. Szukanie w tabeli Enrollment var enrollment = db.Enrollment.Where(en => en.IdStudy == study.IdStudy && en.Semester == 1).FirstOrDefault(); var toRespond = new EnrollStudentResponse(); toRespond.LastName = request.LastName; var addedStudent = new NewModels.Student() { IndexNumber = request.IndexNumber, FirstName = request.FirstName, LastName = request.LastName, BirthDate = request.BirthDate }; if (enrollment == null) { //Wstawianie nowego zapisu do bazy danych //Używam zagnieżdżonego selecta zamiast Identity, bo nie korzystałem z niego od początku var addedEnrollment = new NewModels.Enrollment() { IdEnrollment = db.Enrollment.Max(en => en.IdEnrollment), Semester = 1, StartDate = DateTime.Now, IdStudy = study.IdStudy, IdStudyNavigation = study }; db.Enrollment.Add(addedEnrollment); addedStudent.IdEnrollment = addedEnrollment.IdEnrollment; addedStudent.IdEnrollmentNavigation = addedEnrollment; toRespond.Semester = addedEnrollment.Semester; toRespond.StartDate = addedEnrollment.StartDate; } else { addedStudent.IdEnrollment = enrollment.IdEnrollment; addedStudent.IdEnrollmentNavigation = enrollment; toRespond.Semester = enrollment.Semester; toRespond.StartDate = enrollment.StartDate; } //4. Dodanie studenta db.Student.Add(addedStudent); db.SaveChanges(); return(toRespond); }