Return pending applications for authorities

This commit is contained in:
2024-08-27 10:46:30 +03:00
parent 2353077404
commit b63a245c9e
5 changed files with 16 additions and 7 deletions

View File

@@ -6,7 +6,7 @@ namespace ApplicationLayer.Services.VisaApplications.Handlers;
public interface IVisaApplicationRequestsHandler public interface IVisaApplicationRequestsHandler
{ {
/// Returns all applications for approving authorities /// Returns all applications for approving authorities
Task<List<VisaApplicationModelForAuthority>> GetAllAsync(CancellationToken cancellationToken); Task<List<VisaApplicationModelForAuthority>> GetPendingAsync(CancellationToken cancellationToken);
/// Returns all applications of one applicant /// Returns all applications of one applicant
Task<List<VisaApplicationModelForApplicant>> GetForApplicantAsync(CancellationToken cancellationToken); Task<List<VisaApplicationModelForApplicant>> GetForApplicantAsync(CancellationToken cancellationToken);

View File

@@ -19,9 +19,9 @@ public class VisaApplicationRequestsHandler(
IDateTimeProvider dateTimeProvider, IDateTimeProvider dateTimeProvider,
IUserIdProvider userIdProvider) : IVisaApplicationRequestsHandler IUserIdProvider userIdProvider) : IVisaApplicationRequestsHandler
{ {
async Task<List<VisaApplicationModelForAuthority>> IVisaApplicationRequestsHandler.GetAllAsync(CancellationToken cancellationToken) async Task<List<VisaApplicationModelForAuthority>> IVisaApplicationRequestsHandler.GetPendingAsync(CancellationToken cancellationToken)
{ {
var applicationsList = await applications.GetAllAsync(cancellationToken); var applicationsList = await applications.GetPendingApplicationsAsync(cancellationToken);
var applicationModels = applicationsList var applicationModels = applicationsList
.Select(a => MapVisaApplicationToModelForAuthorities(a, cancellationToken).Result) .Select(a => MapVisaApplicationToModelForAuthorities(a, cancellationToken).Result)

View File

@@ -10,4 +10,7 @@ public interface IVisaApplicationsRepository : IGenericRepository<VisaApplicatio
/// Get specific application of specific user /// Get specific application of specific user
Task<VisaApplication> GetByApplicantAndApplicationIdAsync(Guid applicantId, Guid applicationId, CancellationToken cancellationToken); Task<VisaApplication> GetByApplicantAndApplicationIdAsync(Guid applicantId, Guid applicationId, CancellationToken cancellationToken);
/// Returns pending applications for approving authorities
Task<List<VisaApplication>> GetPendingApplicationsAsync(CancellationToken cancellationToken);
} }

View File

@@ -27,4 +27,10 @@ public sealed class VisaApplicationsRepository(IGenericReader reader, IGenericWr
.SingleOrDefaultAsync(va => va.Id == applicationId && va.ApplicantId == applicantId, cancellationToken); .SingleOrDefaultAsync(va => va.Id == applicationId && va.ApplicantId == applicantId, cancellationToken);
return result ?? throw new ApplicationNotFoundByApplicantAndApplicationIdException(applicationId); return result ?? throw new ApplicationNotFoundByApplicantAndApplicationIdException(applicationId);
} }
async Task<List<VisaApplication>> IVisaApplicationsRepository.GetPendingApplicationsAsync(CancellationToken cancellationToken)
{
var result = LoadDomain().Where(va => va.Status == ApplicationStatus.Pending);
return await result.ToListAsync(cancellationToken);
}
} }

View File

@@ -15,16 +15,16 @@ public class VisaApplicationController(
IVisaApplicationRequestsHandler visaApplicationRequestsHandler, IVisaApplicationRequestsHandler visaApplicationRequestsHandler,
IValidator<VisaApplicationCreateRequest> visaApplicationCreateRequestValidator) : ControllerBase IValidator<VisaApplicationCreateRequest> visaApplicationCreateRequestValidator) : ControllerBase
{ {
/// <summary> Returns all applications from DB </summary> /// <summary> Returns pending applications from DB </summary>
/// <remarks> Accessible only for approving authorities </remarks> /// <remarks> Accessible only for approving authorities </remarks>
[HttpGet] [HttpGet("pending")]
[ProducesResponseType<List<VisaApplicationModelForAuthority>>(StatusCodes.Status200OK)] [ProducesResponseType<List<VisaApplicationModelForAuthority>>(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status403Forbidden)] [ProducesResponseType(StatusCodes.Status403Forbidden)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status401Unauthorized)]
[Authorize(policy: PolicyConstants.ApprovingAuthorityPolicy)] [Authorize(policy: PolicyConstants.ApprovingAuthorityPolicy)]
public async Task<IActionResult> Get(CancellationToken cancellationToken) public async Task<IActionResult> Get(CancellationToken cancellationToken)
{ {
var result = await visaApplicationRequestsHandler.GetAllAsync(cancellationToken); var result = await visaApplicationRequestsHandler.GetPendingAsync(cancellationToken);
return Ok(result); return Ok(result);
} }
@@ -36,7 +36,7 @@ public class VisaApplicationController(
[ProducesResponseType(StatusCodes.Status401Unauthorized)] [ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status404NotFound)]
[Authorize(policy: PolicyConstants.ApplicantPolicy)] [Authorize(policy: PolicyConstants.ApplicantPolicy)]
[Route("OfApplicant")] [Route("ofApplicant")]
public async Task<IActionResult> GetForApplicant(CancellationToken cancellationToken) public async Task<IActionResult> GetForApplicant(CancellationToken cancellationToken)
{ {
var result = await visaApplicationRequestsHandler.GetForApplicantAsync(cancellationToken); var result = await visaApplicationRequestsHandler.GetForApplicantAsync(cancellationToken);