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 DateOnly RequestDate { get; set; }
        /// Valid days requested
        public int ValidDaysRequested { get; set; }
    }
}