public IActionResult EnrollmentStudent(EnrollmentStudentReq req) { try { StudyEnrollment enroll = _dbService.EnrollmentStudent(req); String uris = $"/api/enrollments/{enroll.IdEnrollment}"; return(Created(uris, enroll)); } catch (StudiesNotFoundException) { return(BadRequest("Nie można wyszukać podanych studentów")); } catch (StudentAlreadyExistsException) { return(BadRequest("Student o podanym numerze indeksu istnieje")); } }
public StudyEnrollment EnrollmentStudent(EnrollmentStudentReq req) { var st = new Student(); st.FirstName = req.FirstName; using (var con = new SqlConnection(SqlConnect)) using (var com = new SqlCommand()) { com.Connection = con; con.Open(); var tran = con.BeginTransaction(); try { com.Transaction = tran; com.CommandText = "SELECT IdStudy FROM studies WHERE name = @name"; com.Parameters.AddWithValue("name", req.Studies); var dr = com.ExecuteReader(); if (!dr.Read()) { throw new StudiesNotFoundException(); } int idstudy = (int)dr["IdStudy"]; dr.Close(); StudyEnrollment enroll; try { enroll = FindEnrollmentByIdStudies(com, idstudy, 1); } catch (StudiesNotFoundException) { CreateEnrollment(com, idstudy); enroll = FindEnrollmentByIdStudies(com, idstudy, 1); } com.CommandText = "SELECT * FROM Student WHERE IndexNumber = @IndexNumber"; com.Parameters.AddWithValue("IndexNumber", req.IndexNumber); dr = com.ExecuteReader(); if (dr.Read()) { dr.Close(); tran.Rollback(); throw new StudentAlreadyExistsException(); } dr.Close(); // Dodanie nowego studenta com.CommandText = "INSERT INTO Student(IndexNumber, FirstName, LastName, BirthDate, IdEnrollment) " + "VALUES (@Index, @Fname, @LName, @Bdate, @IdEnrollment)"; com.Parameters.AddWithValue("Index", req.IndexNumber); com.Parameters.AddWithValue("Fname", req.FirstName); com.Parameters.AddWithValue("Lname", req.LastName); com.Parameters.AddWithValue("Bdate", req.BirthDate); com.Parameters.AddWithValue("IdEnrollment", enroll.IdEnrollment); com.ExecuteNonQuery(); tran.Commit(); return(enroll); } catch (SqlException) { tran.Rollback(); throw new Exception("Coś poszło nie tak"); } } }