Excel export

This commit is contained in:
2024-09-29 21:01:35 +03:00
parent e8fd8523aa
commit 188a5a14d3
16 changed files with 411 additions and 10 deletions

View File

@@ -23,5 +23,9 @@ public interface IVisaApplicationRequestsHandler
/// Sets application status to closed
Task HandleCloseRequestAsync(Guid applicationId, CancellationToken cancellationToken);
/// Sets application status to approved or rejected
Task SetApplicationStatusFromAuthorityAsync(Guid applicationId, AuthorityRequestStatuses status, CancellationToken cancellationToken);
/// Returns stream with file with formatted application data to download
Task<Stream> ApplicationToStreamAsync(Guid applicationId, CancellationToken cancellationToken);
}

View File

@@ -17,7 +17,8 @@ public class VisaApplicationRequestsHandler(
IUnitOfWork unitOfWork,
IMapper mapper,
IDateTimeProvider dateTimeProvider,
IUserIdProvider userIdProvider) : IVisaApplicationRequestsHandler
IUserIdProvider userIdProvider,
IEntityWriter entityWriter) : IVisaApplicationRequestsHandler
{
async Task<List<VisaApplicationPreview>> IVisaApplicationRequestsHandler.GetPendingAsync(CancellationToken cancellationToken)
{
@@ -34,7 +35,8 @@ public class VisaApplicationRequestsHandler(
return mapper.Map<List<VisaApplicationPreview>>(visaApplications);
}
async Task<VisaApplicationModel> IVisaApplicationRequestsHandler.GetApplicationForApplicantAsync(Guid id, CancellationToken cancellationToken)
/// <summary> <inheritdoc cref="IVisaApplicationRequestsHandler.GetApplicationForApplicantAsync"/> </summary>
public async Task<VisaApplicationModel> GetApplicationForApplicantAsync(Guid id, CancellationToken cancellationToken)
{
var applicant = await applicants.FindByUserIdAsync(userIdProvider.GetUserId(), cancellationToken);
var application = await applications.GetByApplicantAndApplicationIdAsync(applicant.Id, id, cancellationToken);
@@ -104,4 +106,10 @@ public class VisaApplicationRequestsHandler(
await unitOfWork.SaveAsync(cancellationToken);
}
async Task<Stream> IVisaApplicationRequestsHandler.ApplicationToStreamAsync(Guid applicationId, CancellationToken cancellationToken)
{
var application = await GetApplicationForApplicantAsync(applicationId, cancellationToken);
return await entityWriter.WriteEntityToStream(application, cancellationToken);
}
}