Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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);
        }