using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;

namespace Strata.Code.DataAccess.Models;

[Table("UserProfile")]
[Index("UserName", Name = "IX_UserProfile", IsUnique = true)]
public partial class UserProfile
{
    [Key]
    [Column("UserGUID")]
    public Guid UserGuid { get; set; }

    [StringLength(64)]
    public string UserName { get; set; } = null!;

    [StringLength(64)]
    public string HashedPassword { get; set; } = null!;

    [StringLength(64)]
    public string NameFirst { get; set; } = null!;

    [StringLength(64)]
    public string NameLast { get; set; } = null!;

    [StringLength(130)]
    public string NameFull { get; set; } = null!;

    [StringLength(450)]
    public string EmailAddress { get; set; } = null!;

    [StringLength(64)]
    public string PhoneNumber { get; set; } = null!;

    [Column("IsSysAdmin_DEPRECATED")]
    public bool IsSysAdminDeprecated { get; set; }

    [Column("AuthID")]
    [StringLength(128)]
    public string AuthId { get; set; } = null!;

    public bool IsDisabled { get; set; }

    [StringLength(64)]
    public string BackupPassword { get; set; } = null!;

    public byte DefaultAppModeLevel { get; set; }

    [StringLength(64)]
    public string BrowserVersion { get; set; } = null!;

    [StringLength(512)]
    public string UserAgent { get; set; } = null!;

    [StringLength(64)]
    [Unicode(false)]
    public string Domain { get; set; } = null!;

    [Column("HIPAADisclaimerStatus")]
    public byte HipaadisclaimerStatus { get; set; }

    [StringLength(450)]
    public string Custom1 { get; set; } = null!;

    [StringLength(450)]
    public string Custom2 { get; set; } = null!;

    [StringLength(450)]
    public string Custom3 { get; set; } = null!;

    [StringLength(450)]
    public string Custom4 { get; set; } = null!;

    public bool IsHidden { get; set; }

    [StringLength(250)]
    public string DotNetVersion { get; set; } = null!;

    [Column(TypeName = "datetime")]
    public DateTime LastChangedPasswordUtc { get; set; }

    [Column(TypeName = "datetime")]
    public DateTime LastLoginDateUtc { get; set; }

    public Guid Salt { get; set; }

    public bool NeedsPasswordChange { get; set; }
}
