shoc-backend/Data.SeaHavenIndustries/Models/Employee.cs
2026-05-06 10:49:33 -05:00

129 lines
3.8 KiB
C#

using System.ComponentModel.DataAnnotations;
namespace Data.SeaHavenIndustries
{
public class Employee
{
public int Id { get; set; }
// General
[Required]
public string FirstName { get; set; } = null!;
public string? MiddleName { get; set; }
[Required]
public string LastName { get; set; } = null!;
public int? DepartmentId { get; set; }
public string? TimeZone { get; set; }
public int? Gender { get; set; }
public DateTime? DateOfBirth { get; set; }
public int? JobTitleId { get; set; }
public string? EmployeeNumber { get; set; }
public DateTime? HireDate { get; set; }
public int? RegionId { get; set; }
public bool? CanChangeProviderNumber { get; set; }
public string? About { get; set; }
// Login & Role
public int? PermissionGroupId { get; set; }
public string? UserName { get; set; }
public string? ConfirmUserName { get; set; }
// Additional
public string? SMSAddress { get; set; }
public string? Website { get; set; }
// Social
public string? FacebookUrl { get; set; }
public string? LinkedInUrl { get; set; }
public string? TwitterUrl { get; set; }
// Status
public string? Status { get; set; }
public DateTime? LastLogin { get; set; }
// Audit
public bool? IsDeleted { get; set; }
public string? CreatedBy { get; set; }
public DateTime? CreatedDate { get; set; }
public DateTime? LastModificationTime { get; set; }
public int? LastModifierUserId { get; set; }
// Navigation
public Department? Department { get; set; }
public JobTitle? JobTitle { get; set; }
public Region? Region { get; set; }
public EmployeeAddress? Address { get; set; }
public ICollection<EmployeePhone> Phones { get; set; } = new List<EmployeePhone>();
public ICollection<EmployeeEmail> Emails { get; set; } = new List<EmployeeEmail>();
}
public class EmployeeAddress
{
public int Id { get; set; }
public int EmployeeId { get; set; }
public string? Street { get; set; }
public string? StreetLineTwo { get; set; }
public string? City { get; set; }
public string? Zip { get; set; }
public string? CountryCode { get; set; }
public string? StateCode { get; set; }
public int? CountyId { get; set; }
public Employee Employee { get; set; } = null!;
}
public class EmployeePhone
{
public int Id { get; set; }
public int EmployeeId { get; set; }
public int? PhoneTypeId { get; set; }
public string? Number { get; set; }
public string? Extension { get; set; }
public bool? IsPrimary { get; set; }
public Employee Employee { get; set; } = null!;
}
public class EmployeeEmail
{
public int Id { get; set; }
public int EmployeeId { get; set; }
public Employee? Employee { get; set; }
public int? EmailTypeId { get; set; }
[MaxLength(256)]
public string? Address { get; set; }
public bool? IsPrimary { get; set; }
}
public class Department
{
public int Id { get; set; }
[MaxLength(200)]
public string Name { get; set; } = null!;
public ICollection<Employee>? Employees { get; set; }
}
public class JobTitle
{
public int Id { get; set; }
[MaxLength(200)]
public string Name { get; set; } = null!;
public ICollection<Employee>? Employees { get; set; }
}
public class Region
{
public int Id { get; set; }
[MaxLength(200)]
public string Name { get; set; } = null!;
public ICollection<Employee>? Employees { get; set; }
}
}