diff --git a/src/InternshipSystem.Api/Controllers/RegistrationController.cs b/src/InternshipSystem.Api/Controllers/RegistrationController.cs index 19a92c6..a808437 100644 --- a/src/InternshipSystem.Api/Controllers/RegistrationController.cs +++ b/src/InternshipSystem.Api/Controllers/RegistrationController.cs @@ -47,8 +47,15 @@ namespace InternshipSystem.Api.Controllers var student = await _context.Students.FindAsync(user.PersonNumber); - edition.RegisterInternship(student); - await _context.SaveChangesAsync(token); + try + { + edition.RegisterInternship(student); + await _context.SaveChangesAsync(token); + } + catch (ArgumentException e) + { + return BadRequest(e.Message); + } return Ok(); } diff --git a/src/InternshipSystem.Core/Entity/Edition.cs b/src/InternshipSystem.Core/Entity/Edition.cs index a34c83c..c22eb53 100644 --- a/src/InternshipSystem.Core/Entity/Edition.cs +++ b/src/InternshipSystem.Core/Entity/Edition.cs @@ -31,6 +31,11 @@ namespace InternshipSystem.Core public void RegisterInternship(Student student) { + if (Internships.Any(i => i.Student.Id == student.Id)) + { + throw new ArgumentException("error.registration.already_registered"); + } + var internship = Internship.CreateStudentsInternship(student); Internships.Add(internship);