using Domains.ApplicantDomain;
using Domains.LocationDomain;
namespace Domains.VisaApplicationDomain;
/// Model of visit request
public class VisaApplication : IEntity
{
    /// Unique identifier of 
    public Guid Id { get; private set; } = Guid.NewGuid();
    /// Identifier of the 
    public Guid ApplicantId { get; set; }
    /// Applicant of 
    public Applicant Applicant { get; set; } = null!;
    /// 
    /// always null if  is not a non-resident
    public ReentryPermit? ReentryPermit { get; set; }
    ///  that  wants to visit
    public Country DestinationCountry { get; set; } = null!;
    /// 
    /// List of  that applicant had before
    /// 
    public List PastVisas { get; set; } = null!;
    /// Permission to enter the destination country of 
    /// always null if  is Schengen
    public PermissionToDestCountry? PermissionToDestCountry { get; set; }
    public List PastVisits { get; set; } = null!;
    /// 
    public VisaCategory VisaCategory { get; set; }
    /// Is for group
    public bool ForGroup { get; set; }
    /// 
    public RequestedNumberOfEntries RequestedNumberOfEntries { get; set; }
    /// When application was created
    public DateTime RequestDate { get; set; }
    /// Valid days requested
    public int ValidDaysRequested { get; set; }
}