90 lines
2.9 KiB
C#
90 lines
2.9 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using System.Text;
|
|
using ApplicationLayer.Services.Applicants.Models;
|
|
using Domains.VisaApplicationDomain;
|
|
|
|
namespace ApplicationLayer.Services.VisaApplications.Models;
|
|
|
|
/// Model of <see cref="VisaApplication" /> with applicant property
|
|
public class VisaApplicationModel
|
|
{
|
|
/// <inheritdoc cref="VisaApplication.Id" />
|
|
[Required]
|
|
public Guid Id { get; set; }
|
|
|
|
/// Applicant of application
|
|
[Required]
|
|
public ApplicantModel Applicant { get; set; } = null!;
|
|
|
|
/// <inheritdoc cref="VisaApplication.Status" />
|
|
[Required]
|
|
public ApplicationStatus Status { get; set; }
|
|
|
|
/// <inheritdoc cref="VisaApplication.ReentryPermit" />
|
|
public ReentryPermitModel? ReentryPermit { get; set; }
|
|
|
|
/// <inheritdoc cref="VisaApplication.DestinationCountry" />
|
|
[Required]
|
|
public string DestinationCountry { get; set; } = null!;
|
|
|
|
/// <inheritdoc cref="VisaApplication.PastVisas" />
|
|
[Required]
|
|
public List<PastVisaModel> PastVisas { get; set; } = null!;
|
|
|
|
/// <inheritdoc cref="VisaApplication.PermissionToDestCountry" />
|
|
public PermissionToDestCountryModel? PermissionToDestCountry { get; set; }
|
|
|
|
[Required] public List<PastVisitModel> PastVisits { get; set; } = null!;
|
|
|
|
/// <inheritdoc cref="VisaApplication.VisaCategory" />
|
|
[Required]
|
|
public VisaCategory VisaCategory { get; set; }
|
|
|
|
/// <inheritdoc cref="VisaApplication.ForGroup" />
|
|
[Required]
|
|
public bool ForGroup { get; set; }
|
|
|
|
/// <inheritdoc cref="VisaApplication.RequestedNumberOfEntries" />
|
|
[Required]
|
|
public RequestedNumberOfEntries RequestedNumberOfEntries { get; set; }
|
|
|
|
/// <inheritdoc cref="VisaApplication.RequestDate" />
|
|
[Required]
|
|
public DateTime RequestDate { get; set; }
|
|
|
|
/// <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";
|
|
}
|
|
}
|