From 80dda549bffcc6f68e47a6b892e6ec40677cff5c Mon Sep 17 00:00:00 2001 From: maxchil Date: Tue, 27 Oct 2020 20:57:20 +0100 Subject: [PATCH] fix double registration (#71) fix double registration Co-authored-by: MaxchilKH --- .../Controllers/RegistrationController.cs | 11 +++++++++-- src/InternshipSystem.Core/Entity/Edition.cs | 5 +++++ 2 files changed, 14 insertions(+), 2 deletions(-) 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);