public Enrollment EnrollStudent(CreateEnrollmentDto dto) { using (var conn = new SqlConnection(connectionString)) using (var cmd = new SqlCommand()) { conn.Open(); cmd.Connection = conn; var studyId = FindStudyIdByName(cmd, dto.Studies); var transaction = conn.BeginTransaction(); cmd.Transaction = transaction; Enrollment enrollment; try { enrollment = FindEnrollmentByIdStudy(cmd, studyId, 1); } catch (EnrollmentNotFoundException e) { CreateEnrollment(cmd, studyId); enrollment = FindEnrollmentByIdStudy(cmd, studyId, 1); } cmd.CommandText = @"INSERT INTO Student (IndexNumber, FirstName, LastName, BirthDate, IdEnrollment) VALUES (@IndexNumber, @FirstName, @LastName, @BirthDate, @IdEnrollment)"; cmd.Parameters.AddWithValue("IndexNumber", dto.IndexNumber); cmd.Parameters.AddWithValue("FirstName", dto.FirstName); cmd.Parameters.AddWithValue("LastName", dto.LastName); var birthDate = new SqlParameter("@BirthDate", SqlDbType.Date); birthDate.Value = dto.BirthDate; cmd.Parameters.Add(birthDate); cmd.Parameters.AddWithValue("IdEnrollment", enrollment.IdEnrollment); try { cmd.ExecuteNonQuery(); } catch (SqlException e) { transaction.Rollback(); if (isNonUniqueConstraintException(e)) { throw new StudentAlreadyExistsException(); } throw e; } transaction.Commit(); return(enrollment); } }
public IActionResult CreateEnrollment(CreateEnrollmentDto createEnrollmentDto) { try { Enrollment enrollment = _dbService.EnrollStudent(createEnrollmentDto); return(Created($"/api/enrollments/{enrollment.IdEnrollment}", enrollment)); } catch (StudiesNotFoundException e) { return(BadRequest(new BadRequestDto("Provided studies not found!"))); } catch (StudentAlreadyExistsException e) { return(BadRequest(new BadRequestDto("Student with such Index Number already exist!"))); } }
public async Task <IActionResult> CreateEnrollment(CreateEnrollmentDto input) { var result = await _enrollmentAppService.CreateEnrollment(input); return(Ok(result)); }