Excel export
This commit is contained in:
@@ -61,4 +61,6 @@ public class ApplicantModel
|
||||
/// <inheritdoc cref="Applicant.IsNonResident" />
|
||||
[Required]
|
||||
public bool IsNonResident { get; set; }
|
||||
|
||||
public override string ToString() => Name.ToString();
|
||||
}
|
||||
|
||||
@@ -16,4 +16,6 @@ public class NameModel
|
||||
|
||||
[MaxLength(ConfigurationConstraints.NameLength)]
|
||||
public string? Patronymic { get; set; }
|
||||
|
||||
public override string ToString() => $"{FirstName} {Surname} {Patronymic}".TrimEnd();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Text;
|
||||
using ApplicationLayer.Services.Applicants.Models;
|
||||
using Domains.VisaApplicationDomain;
|
||||
|
||||
@@ -33,8 +34,7 @@ public class VisaApplicationModel
|
||||
/// <inheritdoc cref="VisaApplication.PermissionToDestCountry" />
|
||||
public PermissionToDestCountryModel? PermissionToDestCountry { get; set; }
|
||||
|
||||
[Required]
|
||||
public List<PastVisitModel> PastVisits { get; set; } = null!;
|
||||
[Required] public List<PastVisitModel> PastVisits { get; set; } = null!;
|
||||
|
||||
/// <inheritdoc cref="VisaApplication.VisaCategory" />
|
||||
[Required]
|
||||
@@ -55,4 +55,35 @@ public class VisaApplicationModel
|
||||
/// <inheritdoc cref="VisaApplication.ValidDaysRequested" />
|
||||
[Required]
|
||||
public int ValidDaysRequested { get; set; }
|
||||
|
||||
public string ForGroupToString() => ForGroup ? "For group" : "Individual";
|
||||
|
||||
public string PastVisasToString()
|
||||
{
|
||||
var stringBuilder = new StringBuilder();
|
||||
foreach (var visa in PastVisas)
|
||||
{
|
||||
stringBuilder.AppendLine($"{visa.Name} issued at {visa.IssueDate.ToShortDateString()} and valid for {visa.ExpirationDate.ToShortDateString()}");
|
||||
}
|
||||
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public string PastVisitsToString()
|
||||
{
|
||||
var stringBuilder = new StringBuilder();
|
||||
foreach (var visit in PastVisits)
|
||||
{
|
||||
stringBuilder.AppendLine($"Visit to {visit.DestinationCountry} started at {visit.StartDate.ToShortDateString()} and ends {visit.EndDate.ToShortDateString()}");
|
||||
}
|
||||
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
public string PermissionToDestCountryToString()
|
||||
{
|
||||
return VisaCategory is VisaCategory.Transit
|
||||
? $"Issued by{PermissionToDestCountry!.Issuer}, expires at {PermissionToDestCountry.ExpirationDate.ToShortDateString()}"
|
||||
: "Non-transit";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace ApplicationLayer.Services.VisaApplications.NeededServices
|
||||
{
|
||||
public interface IEntityWriter
|
||||
{
|
||||
Task<Stream> WriteEntityToStream(object entity, CancellationToken cancellationToken);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user