From d839cc4fcb62ea7c8dda9865ba2c8e3dc39a6799 Mon Sep 17 00:00:00 2001 From: MaxchilKH Date: Tue, 27 Oct 2020 20:56:57 +0100 Subject: [PATCH] fix double registration --- .../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); -- 2.45.2