using ApplicationLayer.Services.VisaApplications.Models; using ApplicationLayer.Services.VisaApplications.Requests; namespace ApplicationLayer.Services.VisaApplications.Handlers; public interface IVisaApplicationRequestsHandler { /// Returns all applications for approving authorities Task> GetPendingAsync(CancellationToken cancellationToken); /// Returns all applications of one applicant Task> GetForApplicantAsync(CancellationToken cancellationToken); /// Returns one application with specific id Task GetApplicationForApplicantAsync(Guid id, CancellationToken cancellationToken); /// Returns one application with specific id Task GetApplicationForAuthorityAsync(Guid id, CancellationToken cancellationToken); /// Creates application for applicant with specific user identifier Task HandleCreateRequestAsync(VisaApplicationCreateRequest request, CancellationToken cancellationToken); /// 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 ApplicationToStreamAsync(Guid applicationId, CancellationToken cancellationToken); }