// ***********************************************************************
// 
//     AgileWebs
// 
// ***********************************************************************
using MongoDB.Bson.Serialization.Attributes;
namespace Core.Thalos.Domain.Contexts.Onboarding.Request
{
    /// 
    /// Represents a tenant creation request with business and contact details.
    /// 
    public class TenantRequest
    {
        /// 
        /// The legal or commercial name of the tenant.
        /// 
        [BsonElement("name")]
        public string Name { get; set; } = null!;
        /// 
        /// The tax identification number of the tenant (e.g., RFC, VAT).
        /// 
        [BsonElement("taxIdentifier")]
        public string TaxIdentifier { get; set; } = null!;
        /// 
        /// The primary address line (street, number, etc.).
        /// 
        [BsonElement("addressLine1")]
        public string AddressLine1 { get; set; } = null!;
        /// 
        /// An optional second address line (apartment, suite, etc.).
        /// 
        [BsonElement("addressLine2")]
        [BsonIgnoreIfNull]
        public string? AddressLine2 { get; set; }
        /// 
        /// The city where the tenant is located.
        /// 
        [BsonElement("city")]
        public string City { get; set; } = null!;
        /// 
        /// The state, province, or region of the tenant.
        /// 
        [BsonElement("state")]
        public string State { get; set; } = null!;
        /// 
        /// The country of the tenant.
        /// 
        [BsonElement("country")]
        public string Country { get; set; } = null!;
        /// 
        /// The postal or ZIP code of the tenant’s location.
        /// 
        [BsonElement("postalCode")]
        public string PostalCode { get; set; } = null!;
        /// 
        /// The main email address for contacting the tenant.
        /// 
        [BsonElement("contactEmail")]
        public string ContactEmail { get; set; } = null!;
        /// 
        /// The main phone number for contacting the tenant.
        /// 
        [BsonElement("contactPhone")]
        public string ContactPhone { get; set; } = null!;
        /// 
        /// The tenant’s website URL, if available.
        /// 
        [BsonElement("website")]
        [BsonIgnoreIfNull]
        public string? Website { get; set; }
        /// 
        /// The database connection string for the tenant, if applicable.
        /// 
        [BsonElement("connectionString")]
        [BsonIgnoreIfNull]
        public string? ConnectionString { get; set; }
        /// 
        /// Indicates whether the tenant uses an isolated database.
        /// 
        [BsonElement("isolated")]
        public bool Isolated { get; set; }
    }
}