Exemple #1
0
        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!")));
     }
 }
Exemple #3
0
        public async Task <IActionResult> CreateEnrollment(CreateEnrollmentDto input)
        {
            var result = await _enrollmentAppService.CreateEnrollment(input);

            return(Ok(result));
        }