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