From b94ecd00099074d0ba00f4a2880797139c4b1726 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 23 Nov 2025 14:21:37 +0000
Subject: [PATCH 1/4] Initial plan
From ec29280e323df360066c13e9a516cbbafc468cdc Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 23 Nov 2025 14:33:04 +0000
Subject: [PATCH 2/4] Add waitlist feature implementation with domain entities,
services, and API endpoints
Co-authored-by: Hemavathi15sg <224925058+Hemavathi15sg@users.noreply.github.com>
---
.../Controllers/WaitlistController.cs | 288 ++++++++++++++++++
api/CourseRegistration.API/Program.cs | 3 +
.../DTOs/CourseDtos.cs | 25 ++
.../DTOs/WaitlistDtos.cs | 111 +++++++
.../Interfaces/INotificationService.cs | 29 ++
.../Interfaces/IWaitlistService.cs | 59 ++++
.../Mappings/MappingProfile.cs | 43 ++-
.../Services/NotificationService.cs | 78 +++++
.../Services/RegistrationService.cs | 22 +-
.../Services/WaitlistService.cs | 285 +++++++++++++++++
.../Entities/Course.cs | 17 ++
.../Entities/Student.cs | 5 +
.../Entities/WaitlistEntry.cs | 76 +++++
.../Enums/NotificationType.cs | 22 ++
.../Interfaces/IUnitOfWork.cs | 5 +
.../Interfaces/IWaitlistRepository.cs | 44 +++
.../Data/CourseRegistrationDbContext.cs | 45 +++
.../Repositories/UnitOfWork.cs | 13 +
.../Repositories/WaitlistRepository.cs | 105 +++++++
19 files changed, 1269 insertions(+), 6 deletions(-)
create mode 100644 api/CourseRegistration.API/Controllers/WaitlistController.cs
create mode 100644 api/CourseRegistration.Application/DTOs/WaitlistDtos.cs
create mode 100644 api/CourseRegistration.Application/Interfaces/INotificationService.cs
create mode 100644 api/CourseRegistration.Application/Interfaces/IWaitlistService.cs
create mode 100644 api/CourseRegistration.Application/Services/NotificationService.cs
create mode 100644 api/CourseRegistration.Application/Services/WaitlistService.cs
create mode 100644 api/CourseRegistration.Domain/Entities/WaitlistEntry.cs
create mode 100644 api/CourseRegistration.Domain/Enums/NotificationType.cs
create mode 100644 api/CourseRegistration.Domain/Interfaces/IWaitlistRepository.cs
create mode 100644 api/CourseRegistration.Infrastructure/Repositories/WaitlistRepository.cs
diff --git a/api/CourseRegistration.API/Controllers/WaitlistController.cs b/api/CourseRegistration.API/Controllers/WaitlistController.cs
new file mode 100644
index 0000000..5763375
--- /dev/null
+++ b/api/CourseRegistration.API/Controllers/WaitlistController.cs
@@ -0,0 +1,288 @@
+using Microsoft.AspNetCore.Mvc;
+using CourseRegistration.Application.DTOs;
+using CourseRegistration.Application.Interfaces;
+
+namespace CourseRegistration.API.Controllers;
+
+///
+/// Controller for waitlist management operations
+///
+[ApiController]
+[Route("api/[controller]")]
+[Produces("application/json")]
+public class WaitlistController : ControllerBase
+{
+ private readonly IWaitlistService _waitlistService;
+ private readonly ILogger _logger;
+
+ ///
+ /// Initializes a new instance of the WaitlistController
+ ///
+ public WaitlistController(IWaitlistService waitlistService, ILogger logger)
+ {
+ _waitlistService = waitlistService ?? throw new ArgumentNullException(nameof(waitlistService));
+ _logger = logger ?? throw new ArgumentNullException(nameof(logger));
+ }
+
+ ///
+ /// Adds a student to a course waitlist
+ ///
+ /// Waitlist entry creation data
+ /// Created waitlist entry
+ [HttpPost]
+ [ProducesResponseType(typeof(ApiResponseDto), StatusCodes.Status201Created)]
+ [ProducesResponseType(typeof(ApiResponseDto