diff --git a/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Handlers/IVisaApplicationRequestsHandler.cs b/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Handlers/IVisaApplicationRequestsHandler.cs index 6d9fdef..80cce41 100644 --- a/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Handlers/IVisaApplicationRequestsHandler.cs +++ b/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Handlers/IVisaApplicationRequestsHandler.cs @@ -6,7 +6,7 @@ namespace ApplicationLayer.Services.VisaApplications.Handlers; public interface IVisaApplicationRequestsHandler { /// Returns all applications for approving authorities - Task> GetAllAsync(CancellationToken cancellationToken); + Task> GetPendingAsync(CancellationToken cancellationToken); /// Returns all applications of one applicant Task> GetForApplicantAsync(CancellationToken cancellationToken); diff --git a/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Handlers/VisaApplicationRequestsHandler.cs b/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Handlers/VisaApplicationRequestsHandler.cs index 63c3e25..4088eae 100644 --- a/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Handlers/VisaApplicationRequestsHandler.cs +++ b/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/Handlers/VisaApplicationRequestsHandler.cs @@ -19,9 +19,9 @@ public class VisaApplicationRequestsHandler( IDateTimeProvider dateTimeProvider, IUserIdProvider userIdProvider) : IVisaApplicationRequestsHandler { - async Task> IVisaApplicationRequestsHandler.GetAllAsync(CancellationToken cancellationToken) + async Task> IVisaApplicationRequestsHandler.GetPendingAsync(CancellationToken cancellationToken) { - var applicationsList = await applications.GetAllAsync(cancellationToken); + var applicationsList = await applications.GetPendingApplicationsAsync(cancellationToken); var applicationModels = applicationsList .Select(a => MapVisaApplicationToModelForAuthorities(a, cancellationToken).Result) diff --git a/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/NeededServices/IVisaApplicationsRepository.cs b/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/NeededServices/IVisaApplicationsRepository.cs index 5e132a8..270636d 100644 --- a/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/NeededServices/IVisaApplicationsRepository.cs +++ b/SchengenVisaApi/ApplicationLayer/Services/VisaApplications/NeededServices/IVisaApplicationsRepository.cs @@ -10,4 +10,7 @@ public interface IVisaApplicationsRepository : IGenericRepository GetByApplicantAndApplicationIdAsync(Guid applicantId, Guid applicationId, CancellationToken cancellationToken); + + /// Returns pending applications for approving authorities + Task> GetPendingApplicationsAsync(CancellationToken cancellationToken); } diff --git a/SchengenVisaApi/Infrastructure/Database/VisaApplications/Repositories/VisaApplicationsRepository.cs b/SchengenVisaApi/Infrastructure/Database/VisaApplications/Repositories/VisaApplicationsRepository.cs index 2a40dd7..bfc6224 100644 --- a/SchengenVisaApi/Infrastructure/Database/VisaApplications/Repositories/VisaApplicationsRepository.cs +++ b/SchengenVisaApi/Infrastructure/Database/VisaApplications/Repositories/VisaApplicationsRepository.cs @@ -27,4 +27,10 @@ public sealed class VisaApplicationsRepository(IGenericReader reader, IGenericWr .SingleOrDefaultAsync(va => va.Id == applicationId && va.ApplicantId == applicantId, cancellationToken); return result ?? throw new ApplicationNotFoundByApplicantAndApplicationIdException(applicationId); } + + async Task> IVisaApplicationsRepository.GetPendingApplicationsAsync(CancellationToken cancellationToken) + { + var result = LoadDomain().Where(va => va.Status == ApplicationStatus.Pending); + return await result.ToListAsync(cancellationToken); + } } diff --git a/SchengenVisaApi/SchengenVisaApi/Controllers/VisaApplicationController.cs b/SchengenVisaApi/SchengenVisaApi/Controllers/VisaApplicationController.cs index bbeb650..6bb5bac 100644 --- a/SchengenVisaApi/SchengenVisaApi/Controllers/VisaApplicationController.cs +++ b/SchengenVisaApi/SchengenVisaApi/Controllers/VisaApplicationController.cs @@ -15,16 +15,16 @@ public class VisaApplicationController( IVisaApplicationRequestsHandler visaApplicationRequestsHandler, IValidator visaApplicationCreateRequestValidator) : ControllerBase { - /// Returns all applications from DB + /// Returns pending applications from DB /// Accessible only for approving authorities - [HttpGet] + [HttpGet("pending")] [ProducesResponseType>(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status403Forbidden)] [ProducesResponseType(StatusCodes.Status401Unauthorized)] [Authorize(policy: PolicyConstants.ApprovingAuthorityPolicy)] public async Task Get(CancellationToken cancellationToken) { - var result = await visaApplicationRequestsHandler.GetAllAsync(cancellationToken); + var result = await visaApplicationRequestsHandler.GetPendingAsync(cancellationToken); return Ok(result); } @@ -36,7 +36,7 @@ public class VisaApplicationController( [ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status404NotFound)] [Authorize(policy: PolicyConstants.ApplicantPolicy)] - [Route("OfApplicant")] + [Route("ofApplicant")] public async Task GetForApplicant(CancellationToken cancellationToken) { var result = await visaApplicationRequestsHandler.GetForApplicantAsync(cancellationToken);