Skip to content

Database — Core: Administration

Identity and permissions, the organisation structure, reference and lookup data, the work calendar, announcements, notifications, the document archive and the audit log.

This is the largest group — 40 entities — because it holds everything cross-cutting. The permission model (AppUserGroup → AppUserGroupPermission → AppPermission) and the two identity tables (ApplicationUser for login, AppUser for the employee) both live here. See Security & Permissions and the Administration module.

40 entities in NKO_DB, context NKO_DBEntities1.

How to read this page

Generated from the EF Core model in NKO.Lib/NKO.DataAccess/DbModel/ — class names, property types, nullability, data annotations and the relationships configured in NKO_DBEntities1.OnModelCreating.

Each heading is the table name. Where the C# class is named differently — it is often singular where the table is plural (StockDetail the class, StockDetails the table) — the class name is stated under the heading. The file name is not authoritative: StockDetails.cs declares public class StockDetail.

A ✓ in Null means the column is nullable: a nullable value type, or a reference type with no [Required] — so a [Required] string is shown as not-null. Foreign keys are shown where the fluent configuration or the <Entity>Id naming convention identifies a target.

Entities

AnnouncementRecipient

DbSet AnnouncementRecipients · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AnnouncementRecipient.cs

erDiagram
    AnnouncementRecipient {
        int Id PK
        int AnnouncementsId FK
    }
    Announcements {
        int AnnouncementId PK
    }
    Announcements ||--o{ AnnouncementRecipient : "AnnouncementsId"
Column Type Null Notes
Id int PK
RecipientId int
Type int
AnnouncementsId int FK → Announcements

Navigation: Announcements → Announcements

Announcements

inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/Announcements.cs

erDiagram
    Announcements {
        int AnnouncementId PK
        int CreatedBy FK
    }
    AppUser {
        int UserId PK
    }
    AnnouncementRecipient {
        int Id PK
        int AnnouncementsId FK
    }
    AppUser ||--o{ Announcements : "CreatedBy"
    Announcements ||--o{ AnnouncementRecipient : "AnnouncementsId"
Column Type Null Notes
AnnouncementId int PK
AnnouncementGuid Guid
StartDate DateTime [Column(TypeName = "date")]
EndDate DateTime [Column(TypeName = "date")]
Subject string [Required] · [StringLength(512)]
Foreword string [Required] · [Column(TypeName = "ntext")]
ConvertedForeword string ✓
Description string ✓ [Column(TypeName = "ntext")]
ForEmplyeeDirect bool? ✓
CreatedOn DateTime
CreatedBy int FK → AppUser

Navigation: AppUser → AppUser, AnnouncementRecipients → ICollection<AnnouncementRecipient>

AppPermission

[Table("AppPermission")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppPermission.cs

erDiagram
    AppPermission {
        int AppPermissionId PK
    }
    AppUserGroupPermission {
        int AppUserGroupPermissionId PK
        int AppPermissionId FK
    }
    AppPermission ||--o{ AppUserGroupPermission : "AppPermissionId"
Column Type Null Notes
AppPermissionId int PK
PermissionName string [Required]
Description string ✓ [Column(TypeName = "ntext")]

Navigation: AppUserGroupPermission → ICollection<AppUserGroupPermission>

AppUserGroup

[Table("AppUserGroup")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppUserGroup.cs

erDiagram
    AppUserGroup {
        int GroupId PK
    }
    AppUserGroupMember {
        int GroupMemberId PK
        int GroupId FK
    }
    AppUserGroupPermission {
        int AppUserGroupPermissionId PK
        int AppUserGroupId FK
    }
    AppUserGroup ||--o{ AppUserGroupMember : "GroupId"
    AppUserGroup ||--o{ AppUserGroupPermission : "AppUserGroupId"
Column Type Null Notes
GroupId int PK
GroupName string [Required]

Navigation: AppUserGroupMember → ICollection<AppUserGroupMember>, AppUserGroupPermission → ICollection<AppUserGroupPermission>

AppUserGroupMember

[Table("AppUserGroupMember")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppUserGroupMember.cs

erDiagram
    AppUserGroupMember {
        int GroupMemberId PK
        int UserId FK
        int GroupId FK
    }
    AppUser {
        int UserId PK
    }
    AppUserGroup {
        int GroupId PK
    }
    AppUser ||--o{ AppUserGroupMember : "UserId"
    AppUserGroup ||--o{ AppUserGroupMember : "GroupId"
Column Type Null Notes
GroupMemberId int PK
GroupId int FK → AppUserGroup
UserId int FK → AppUser
IsEnable bool
AddedOn DateTime

Navigation: AppUser → AppUser, AppUserGroup → AppUserGroup

AppUserGroupPermission

[Table("AppUserGroupPermission")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppUserGroupPermission.cs

erDiagram
    AppUserGroupPermission {
        int AppUserGroupPermissionId PK
        int AppPermissionId FK
        int AppUserGroupId FK
    }
    AppPermission {
        int AppPermissionId PK
    }
    AppUserGroup {
        int GroupId PK
    }
    AppPermission ||--o{ AppUserGroupPermission : "AppPermissionId"
    AppUserGroup ||--o{ AppUserGroupPermission : "AppUserGroupId"
Column Type Null Notes
AppUserGroupPermissionId int PK
AppUserGroupId int FK → AppUserGroup
AppPermissionId int FK → AppPermission

Navigation: AppPermission → AppPermission, AppUserGroup → AppUserGroup

AppUserProjectPermission

[Table("AppUserProjectPermission")] · DbSet AppUserProjectPermissions · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/AppUserProjectPermission.cs

erDiagram
    AppUserProjectPermission {
        int ProjectPermissionId PK
        int UserId FK
    }
    AppUser {
        int UserId PK
    }
    AppUser ||--o{ AppUserProjectPermission : "UserId"
Column Type Null Notes
ProjectPermissionId int PK
ProjectId int
UserId int FK → AppUser
AreaId int
PermissionTypeId int
IsEnable bool

Navigation: AppUser → AppUser

ArchiveFile

[Table("ArchiveFile")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/ArchiveFile.cs

erDiagram
    ArchiveFile {
        int FileId PK
        int CreatedBy FK
        int FileTypeId FK
    }
    AppUser {
        int UserId PK
    }
    ArchiveFileType {
        int FileTypeId PK
    }
    AppUser ||--o{ ArchiveFile : "CreatedBy"
    ArchiveFileType |o--o{ ArchiveFile : "FileTypeId"
Column Type Null Notes
FileId int PK
FileGuid Guid
AreaId int? ✓
ReferenceId int? ✓
FileTypeId int? ✓ FK → ArchiveFileType
Filename string ✓ [StringLength(512)]
Description string ✓ [Column(TypeName = "ntext")]
FilePath string ✓ [StringLength(512)]
FileSize int? ✓
IsDeleted bool
CreatedBy int FK → AppUser
CreatedOn DateTime

Navigation: AppUser → AppUser, ArchiveFileType → ArchiveFileType

ArchiveFileType

[Table("ArchiveFileType")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/ArchiveFileType.cs

erDiagram
    ArchiveFileType {
        int FileTypeId PK
    }
    ArchiveFile {
        int FileId PK
        int FileTypeId FK
    }
    ArchiveFileType |o--o{ ArchiveFile : "FileTypeId"
Column Type Null Notes
FileTypeId int PK
FileTypeName string ✓ [StringLength(50)]
AreaId int? ✓

Navigation: ArchiveFile → ICollection<ArchiveFile>

CommonBranch

[Table("CommonBranch")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonBranch.cs

erDiagram
    direction LR
    CommonBranch {
        int BranchId PK
        int TreasureId FK
        int ManagerId FK
        int LogisticId FK
        int FinanceId FK
        int HRId FK
        int AccountingId FK
        int CountryId FK
    }
    AppUser {
        int UserId PK
        int BranchId FK
    }
    CommonCountry {
        int CommonCountryId PK
    }
    Timesheet {
        int TimesheetId PK
        int BranchId FK
    }
    Job {
        int JobId PK
        int BranchId FK
    }
    SharedPermissionBranch {
        int Id PK
        int BranchId FK
    }
    CommonSubBranch {
        int SubBranchId PK
        int BranchId FK
    }
    CalendarProfile {
        int CalendarProfileId PK
        int CommonBranchId FK
    }
    BudgetLineBranch {
        int Id PK
        int CommonBranchId FK
    }
    MasterBudgetDetails {
        int MasterBudgetDetailsId PK
        int PlaceId FK
    }
    PayrollInfo {
        int PayrollInfoId PK
        int BranchId FK
    }
    ProjectPlace {
        int ProjectPlaceId PK
        int BranchId FK
    }
    AppUser |o--o{ CommonBranch : "TreasureId, ManagerId, LogisticId +3 more"
    CommonCountry ||--o{ CommonBranch : "CountryId"
    CommonBranch ||--o{ Timesheet : "BranchId"
    CommonBranch ||--o{ Job : "BranchId"
    CommonBranch ||--o{ AppUser : "BranchId"
    CommonBranch ||--o{ SharedPermissionBranch : "BranchId"
    CommonBranch ||--o{ CommonSubBranch : "BranchId"
    CommonBranch |o--o{ CalendarProfile : "CommonBranchId"
    CommonBranch ||--o{ BudgetLineBranch : "CommonBranchId"
    CommonBranch ||--o{ MasterBudgetDetails : "PlaceId"
    CommonBranch ||--o{ PayrollInfo : "BranchId"
    CommonBranch ||--o{ ProjectPlace : "BranchId"
Column Type Null Notes
BranchId int PK
BranchName string [Required]
NameAr string ✓ [StringLength(50)]
IsMain bool
CountryId int FK → CommonCountry
TreasureId int? ✓ FK → AppUser
LogisticId int? ✓ FK → AppUser
FinanceId int? ✓ FK → AppUser
ManagerId int? ✓ FK → AppUser
HRId int? ✓ FK → AppUser
AccountingId int? ✓ FK → AppUser
Address string ✓
CommitteeId int? ✓
NKOProfileId int
IsDisabled bool
IsDeleted bool

Navigation: AppUserTreasure → AppUser, AppUserManager → AppUser, AppUserLogistic → AppUser, AppUserFinance → AppUser, AppUserHR → AppUser, AppUserAccounting → AppUser, CommonCountry → CommonCountry, Jobs → ICollection<Job>, AppUser → ICollection<AppUser>, CommonSubBranch → ICollection<CommonSubBranch>, PayrollInfo → ICollection<PayrollInfo>, ProjectPlace → ICollection<ProjectPlace>, CalendarProfiles → ICollection<CalendarProfile>, Timesheets → ICollection<Timesheet>, MasterBudgetDetails → ICollection<MasterBudgetDetails>

CommonCategory

[Table("CommonCategory")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonCategory.cs

erDiagram
    CommonCategory {
        int CategoryId PK
    }
    MasterBudgetDetails {
        int MasterBudgetDetailsId PK
        int CategoryId FK
    }
    CommonCategory ||--o{ MasterBudgetDetails : "CategoryId"
Column Type Null Notes
CategoryId int PK
Name string [Required] · [StringLength(50)]

Navigation: MasterBudgetDetails → ICollection<MasterBudgetDetails>

CommonCountry

[Table("CommonCountry")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonCountry.cs

erDiagram
    direction LR
    CommonCountry {
        int CommonCountryId PK
    }
    Applicants {
        int ApplicantId PK
        int CountryId FK
    }
    AppUser {
        int UserId PK
        int CountryId FK
    }
    Governorate {
        int GovernorateId PK
        int CountryId FK
    }
    CommonBranch {
        int BranchId PK
        int CountryId FK
    }
    CommonCountry ||--o{ Applicants : "CountryId"
    CommonCountry |o--o{ AppUser : "CountryId"
    CommonCountry ||--o{ Governorate : "CountryId"
    CommonCountry ||--o{ CommonBranch : "CountryId"
Column Type Null Notes
CommonCountryId int PK
Name string [Required] · [StringLength(50)]
ArName string ✓ [StringLength(50)]
IsEnable bool

Navigation: Applicants → ICollection<Applicants>, CommonBranches → ICollection<CommonBranch>, AppUsers → ICollection<AppUser>

CommonDegree

[Table("CommonDegree")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonDegree.cs

erDiagram
    CommonDegree {
        int DegreeId PK
    }
    Applicants {
        int ApplicantId PK
        int HighestDegreeReceived FK
    }
    CommonDegree ||--o{ Applicants : "HighestDegreeReceived"
Column Type Null Notes
DegreeId int PK
Name string [Required] · [StringLength(50)]
ArName string ✓

Navigation: Applicants → ICollection<Applicants>

CommonDepartment

[Table("CommonDepartment")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonDepartment.cs

erDiagram
    direction LR
    CommonDepartment {
        int DepartmentId PK
        int PositionId FK
        int HighDeptId FK
    }
    AppUserPosition {
        int PositionId PK
        int DepartmentId FK
    }
    Job {
        int JobId PK
        int DepartmentId FK
    }
    AppUserContract {
        int ContractId PK
        int DepartmentId FK
    }
    RecruitmentTracker {
        int RecruitmentTrackerId PK
        int DepartmentId FK
    }
    PayrollInfo {
        int PayrollInfoId PK
        int DepartmentId FK
    }
    AppUserPosition |o--o{ CommonDepartment : "PositionId"
    CommonDepartment |o--o{ CommonDepartment : "HighDeptId"
    CommonDepartment ||--o{ Job : "DepartmentId"
    CommonDepartment |o--o{ AppUserContract : "DepartmentId"
    CommonDepartment |o--o{ RecruitmentTracker : "DepartmentId"
    CommonDepartment |o--o{ AppUserPosition : "DepartmentId"
    CommonDepartment |o--o{ PayrollInfo : "DepartmentId"
Column Type Null Notes
DepartmentId int PK
Name string [Required] · [StringLength(50)]
NameAr string [Required] · [StringLength(50)]
IsMain bool
HighDeptId int? ✓ FK → CommonDepartment
PositionId int? ✓ FK → AppUserPosition · [Required]
IsDisabled bool

Navigation: Position → AppUserPosition, HighDepartment → CommonDepartment, ChildDepartments → ICollection<CommonDepartment>, AppUserContracts → ICollection<AppUserContract>, RecruitmentTracker → ICollection<RecruitmentTracker>, Job → ICollection<Job>, PayrollInfo → ICollection<PayrollInfo>, AppUserPositions → ICollection<AppUserPosition>

CommonGeneralLevel

[Table("CommonGeneralLevel")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonGeneralLevel.cs

erDiagram
    CommonGeneralLevel {
        int GeneralLevelId PK
    }
    Applicants {
        int ApplicantId PK
        int WordOffice FK
        int PPTOffice FK
        int ExcelOffice FK
    }
    CommonGeneralLevel ||--o{ Applicants : "WordOffice, PPTOffice, ExcelOffice"
Column Type Null Notes
GeneralLevelId int PK
Name string [Required] · [StringLength(50)]
ArName string ✓

Navigation: Applicants → ICollection<Applicants>, Applicants1 → ICollection<Applicants>, Applicants2 → ICollection<Applicants>

CommonIncrement

[Table("CommonIncrement")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonIncrement.cs

erDiagram
    CommonIncrement {
        int CommonIncrementId PK
    }
Column Type Null Notes
CommonIncrementId int PK
Project string ✓
Location string ✓
Year int
LastInt int
Area int

CommonLanguageLevel

[Table("CommonLanguageLevel")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonLanguageLevel.cs

erDiagram
    CommonLanguageLevel {
        int LanguageLevelId PK
    }
    Applicants {
        int ApplicantId PK
        int Arabic FK
        int English FK
        int Turkish FK
    }
    CommonLanguageLevel ||--o{ Applicants : "Arabic, English, Turkish"
Column Type Null Notes
LanguageLevelId int PK
Name string [Required] · [StringLength(200)]
ArName string ✓

Navigation: Applicants → ICollection<Applicants>, Applicants1 → ICollection<Applicants>, Applicants3 → ICollection<Applicants>

CommonMainCategory

[Table("CommonMainCategory")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonMainCategory.cs

erDiagram
    CommonMainCategory {
        int CommonMainCategoryId PK
    }
    PurchaseRequest {
        int PrId PK
        int CatId FK
    }
    CommonMainCategory |o--o{ PurchaseRequest : "CatId"
Column Type Null Notes
CommonMainCategoryId int PK
Name string [Required] · [StringLength(50)]

Navigation: PurchaseRequest → ICollection<PurchaseRequest>

CommonMajorEducation

[Table("CommonMajorEducation")]
NKO.Lib/NKO.DataAccess/DbModel/CommonMajorEducation.cs

erDiagram
    CommonMajorEducation {
        int MajorEducationId PK
    }
    Applicants {
        int ApplicantId PK
        int CommonMajorEducationMajorEducationId FK
    }
    CommonMajorEducation |o--o{ Applicants : "CommonMajorEducationMajorEducationId"
Column Type Null Notes
MajorEducationId int PK
Name string [Required] · [StringLength(50)]
ArName string ✓

Navigation: Applicants → ICollection<Applicants>

CommonManagers

inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonManagers.cs

erDiagram
    CommonManagers {
        int CommonManagersId PK
    }
Column Type Null Notes
CommonManagersId int PK
UserId int
ManagerId int
AreaId int
StageId int

CommonPermission

[Table("CommonPermission")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonPermission.cs

erDiagram
    CommonPermission {
        int PermissionId PK
    }
    CommonSharedPermission {
        int SharedPermissionId PK
        int PermissionId FK
    }
    CommonPermission ||--o{ CommonSharedPermission : "PermissionId"
Column Type Null Notes
PermissionId int PK
PermissionName string [Required] · [StringLength(50)]

Navigation: CommonSharedPermission → ICollection<CommonSharedPermission>

CommonProgram

[Table("CommonProgram")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonProgram.cs

erDiagram
    CommonProgram {
        int ProgramId PK
    }
    ProjectProgram {
        int ProjectProgramId PK
        int ProgramId FK
    }
    CommonProgram ||--o{ ProjectProgram : "ProgramId"
Column Type Null Notes
ProgramId int PK
Name string [Required] · [StringLength(50)]

Navigation: ProjectPrograms → ICollection<ProjectProgram>

CommonSetting

[Table("CommonSetting")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonSetting.cs

erDiagram
    CommonSetting {
        int SettingId PK
    }
Column Type Null Notes
SettingId int PK
SettingName string [Required] · [StringLength(50)]
SettingValue string [Required] · [StringLength(500)]
SettingGroup string ✓ [StringLength(50)]

CommonSharedPermission

[Table("CommonSharedPermission")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonSharedPermission.cs

erDiagram
    CommonSharedPermission {
        int SharedPermissionId PK
        int UserId FK
        int PermissionId FK
    }
    AppUser {
        int UserId PK
    }
    CommonPermission {
        int PermissionId PK
    }
    SharedPermissionBranch {
        int Id PK
        int SharedPermissionId FK
    }
    AppUser ||--o{ CommonSharedPermission : "UserId"
    CommonPermission ||--o{ CommonSharedPermission : "PermissionId"
    CommonSharedPermission ||--o{ SharedPermissionBranch : "SharedPermissionId"
Column Type Null Notes
SharedPermissionId int PK
PermissionId int FK → CommonPermission
UserId int FK → AppUser
Type int

Navigation: AppUser → AppUser, CommonPermission → CommonPermission, PermissionBranches → ICollection<SharedPermissionBranch>

CommonSubBranch

[Table("CommonSubBranch")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonSubBranch.cs

erDiagram
    CommonSubBranch {
        int SubBranchId PK
        int BranchId FK
    }
    CommonBranch {
        int BranchId PK
    }
    AppUser {
        int UserId PK
        int SubBranchId FK
    }
    PayrollInfo {
        int PayrollInfoId PK
        int SubBranchId FK
    }
    CommonBranch ||--o{ CommonSubBranch : "BranchId"
    CommonSubBranch ||--o{ AppUser : "SubBranchId"
    CommonSubBranch |o--o{ PayrollInfo : "SubBranchId"
Column Type Null Notes
SubBranchId int PK
Name string [Required]
BranchId int FK → CommonBranch
IsDisabled bool
IsDeleted bool

Navigation: CommonBranch → CommonBranch, AppUsers → ICollection<AppUser>, PayrollInfos → ICollection<PayrollInfo>

CommonSubCategory

[Table("CommonSubCategory")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/CommonSubCategory.cs

erDiagram
    CommonSubCategory {
        int SubCategoryId PK
    }
Column Type Null Notes
SubCategoryId int PK
Name string [Required] · [StringLength(50)]

CommonUnit

[Table("CommonUnit")]
NKO.Lib/NKO.DataAccess/DbModel/CommonUnit.cs

erDiagram
    CommonUnit {
        int CommonUnitId PK
    }
    Materials {
        int MaterialId PK
        int UnitId FK
    }
    BudgetLine {
        int Id PK
        int UnitId FK
    }
    CommonUnit ||--o{ Materials : "UnitId"
    CommonUnit |o--o{ BudgetLine : "UnitId"
Column Type Null Notes
CommonUnitId int PK
UnitName string [Required] · [StringLength(50)]
NameAr string ✓ [StringLength(50)]
IsEnabled bool

Navigation: Materials → ICollection<Materials>, BudgetLines → ICollection<BudgetLine>

District

DbSet Districts · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/District.cs

erDiagram
    District {
        int DistrictId PK
        int GovernorateId FK
    }
    Governorate {
        int GovernorateId PK
    }
    AppUser {
        int UserId PK
        int DistrictId FK
    }
    Governorate ||--o{ District : "GovernorateId"
    District |o--o{ AppUser : "DistrictId"
Column Type Null Notes
DistrictId int PK
DistrictName string [Required] · [StringLength(25)]
DistrictCode string ✓
GovernorateId int FK → Governorate

Navigation: Governorate → Governorate

Governorate

DbSet Governorates · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/Governorate.cs

erDiagram
    Governorate {
        int GovernorateId PK
        int CountryId FK
    }
    CommonCountry {
        int CommonCountryId PK
    }
    District {
        int DistrictId PK
        int GovernorateId FK
    }
    CommonCountry ||--o{ Governorate : "CountryId"
    Governorate ||--o{ District : "GovernorateId"
Column Type Null Notes
GovernorateId int PK
GovernorateName string [Required] · [StringLength(25)]
GovernorateCode string ✓
CountryId int FK → CommonCountry

Navigation: CommonCountry → CommonCountry

Nationality

[Table("Nationality")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/Nationality.cs

erDiagram
    direction LR
    Nationality {
        int NationalityId PK
    }
    Applicants {
        int ApplicantId PK
        int NationalityId FK
    }
    AppUser {
        int UserId PK
        int NatId FK
        int SndNatId FK
    }
    AppUserFamily {
        int AppUserFamilyId PK
        int NationalityId FK
    }
    AppUserContract {
        int ContractId PK
        int DefaultNatId FK
    }
    Nationality ||--o{ Applicants : "NationalityId"
    Nationality |o--o{ AppUser : "NatId, SndNatId"
    Nationality ||--o{ AppUserFamily : "NationalityId"
    Nationality |o--o{ AppUserContract : "DefaultNatId"
Column Type Null Notes
NationalityId int PK
Name string [Required] · [StringLength(50)]
ArName string ✓ [StringLength(50)]
IsEnable bool

Navigation: Applicants → ICollection<Applicants>, AppUser → ICollection<AppUser>, AppUserSnd → ICollection<AppUser>, AppUserFamilies → ICollection<AppUserFamily>

Notification

[Table("Notification")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/Notification.cs

erDiagram
    direction LR
    Notification {
        int NotificationId PK
        int ReqUserId FK
        int CreatedBy FK
        int NotificationActionTypeId FK
        int NotificationTypeId FK
    }
    AppUser {
        int UserId PK
    }
    NotificationActionType {
        int NotificationActionTypeId PK
    }
    NotificationType {
        int NotificationTypeId PK
    }
    NotificationUser {
        int NotificationUserId PK
        int NotificationId FK
    }
    AppUser ||--o{ Notification : "ReqUserId, CreatedBy"
    NotificationActionType ||--o{ Notification : "NotificationActionTypeId"
    NotificationType ||--o{ Notification : "NotificationTypeId"
    Notification ||--o{ NotificationUser : "NotificationId"
Column Type Null Notes
NotificationId int PK
NotificationGuid Guid
ReqUserId int FK → AppUser
NotificationTypeId int FK → NotificationType
NotificationActionTypeId int FK → NotificationActionType
ContentUrl string ✓ [StringLength(300)]
CreatedOn DateTime
IsPublic bool
CreatedBy int FK → AppUser

Navigation: ReqUser → AppUser, AppUser → AppUser, NotificationActionType → NotificationActionType, NotificationType → NotificationType, NotificationUser → ICollection<NotificationUser>

NotificationActionType

[Table("NotificationActionType")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/NotificationActionType.cs

erDiagram
    NotificationActionType {
        int NotificationActionTypeId PK
    }
    Notification {
        int NotificationId PK
        int NotificationActionTypeId FK
    }
    NotificationActionType ||--o{ Notification : "NotificationActionTypeId"
Column Type Null Notes
NotificationActionTypeId int PK
NotificationActionTypeName string [Required] · [StringLength(100)]

Navigation: Notification → ICollection<Notification>

NotificationType

[Table("NotificationType")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/NotificationType.cs

erDiagram
    NotificationType {
        int NotificationTypeId PK
    }
    Notification {
        int NotificationId PK
        int NotificationTypeId FK
    }
    NotificationType ||--o{ Notification : "NotificationTypeId"
Column Type Null Notes
NotificationTypeId int PK
NotificationTypeName string [Required] · [StringLength(100)]
Description string ✓ [Column(TypeName = "text")]
DescriptionAr string ✓ [Column(TypeName = "text")]

Navigation: Notification → ICollection<Notification>

NotificationUser

[Table("NotificationUser")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/NotificationUser.cs

erDiagram
    NotificationUser {
        int NotificationUserId PK
        int NotificationId FK
    }
    Notification {
        int NotificationId PK
    }
    Notification ||--o{ NotificationUser : "NotificationId"
Column Type Null Notes
NotificationUserId int PK
NotificationUserGuid Guid
NotificationId int FK → Notification
RecipientId int
IsRead bool
ReadOn DateTime? ✓

Navigation: Notification → Notification

PositionLevel

[Table("PositionLevel")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/PositionLevel.cs

erDiagram
    PositionLevel {
        int LevelId PK
    }
    PositionLevelMatrix {
        int LevelMatrixId PK
        int LevelId FK
    }
    EvaluationElement {
        int EvaluationEIementId PK
        int LevelId FK
    }
    PositionLevel ||--o{ PositionLevelMatrix : "LevelId"
    PositionLevel |o--o{ EvaluationElement : "LevelId"
Column Type Null Notes
LevelId int PK
Name string [Required] · [StringLength(50)]
AttendanceAllowance int? ✓

Navigation: EvaluationElement → ICollection<EvaluationElement>, PositionLevelMatrix → ICollection<PositionLevelMatrix>

PositionLevelMatrix

[Table("PositionLevelMatrix")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/PositionLevelMatrix.cs

erDiagram
    PositionLevelMatrix {
        int LevelMatrixId PK
        int CalProfileId FK
        int LevelId FK
    }
    CalendarProfile {
        int CalendarProfileId PK
    }
    PositionLevel {
        int LevelId PK
    }
    PositionLevelStep {
        int StepId PK
        int PositionLevelMatrixId FK
    }
    CalendarProfile ||--o{ PositionLevelMatrix : "CalProfileId"
    PositionLevel ||--o{ PositionLevelMatrix : "LevelId"
    PositionLevelMatrix ||--o{ PositionLevelStep : "PositionLevelMatrixId"
Column Type Null Notes
LevelMatrixId int PK
LevelId int FK → PositionLevel
CalProfileId int FK → CalendarProfile

Navigation: CalendarProfile → CalendarProfile, PositionLevel → PositionLevel, PositionLevelSteps → ICollection<PositionLevelStep>

PositionLevelStep

DbSet PositionLevelSteps · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/PositionLevelStep.cs

erDiagram
    PositionLevelStep {
        int StepId PK
        int PositionLevelMatrixId FK
        int PositionStepId FK
    }
    PositionLevelMatrix {
        int LevelMatrixId PK
    }
    PositionStep {
        int PositionStepId PK
    }
    PositionLevelMatrix ||--o{ PositionLevelStep : "PositionLevelMatrixId"
    PositionStep ||--o{ PositionLevelStep : "PositionStepId"
Column Type Null Notes
StepId int PK
Amount decimal
PositionLevelMatrixId int FK → PositionLevelMatrix
PositionStepId int FK → PositionStep

Navigation: PositionLevelMatrix → PositionLevelMatrix, PositionStep → PositionStep

PositionStep

DbSet PositionSteps · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/PositionStep.cs

erDiagram
    PositionStep {
        int PositionStepId PK
    }
    PositionLevelStep {
        int StepId PK
        int PositionStepId FK
    }
    PositionStep ||--o{ PositionLevelStep : "PositionStepId"
Column Type Null Notes
PositionStepId int PK
Name string ✓

Navigation: PositionLevelSteps → ICollection<PositionLevelStep>

SharedPermissionBranch

[Table("SharedPermissionBranch")]
NKO.Lib/NKO.DataAccess/DbModel/SharedPermissionBranch.cs

erDiagram
    SharedPermissionBranch {
        int Id PK
        int BranchId FK
        int SharedPermissionId FK
    }
    CommonBranch {
        int BranchId PK
    }
    CommonSharedPermission {
        int SharedPermissionId PK
    }
    CommonBranch ||--o{ SharedPermissionBranch : "BranchId"
    CommonSharedPermission ||--o{ SharedPermissionBranch : "SharedPermissionId"
Column Type Null Notes
Id int PK
BranchId int FK → CommonBranch
SharedPermissionId int FK → CommonSharedPermission

Navigation: Branch → CommonBranch, SharedPermission → CommonSharedPermission

UpdatedUser

[Table("UpdatedUser")] · inherits BaseEntity
NKO.Lib/NKO.DataAccess/DbModel/UpdatedUser.cs

erDiagram
    UpdatedUser {
        int OnlineId PK
        int UserId FK
    }
    AppUser {
        int UserId PK
    }
    AppUser ||--o{ UpdatedUser : "UserId"
Column Type Null Notes
OnlineId int PK
UserId int FK → AppUser
Date DateTime
ContentDesc string ✓
System string ✓
IP string ✓
Method string ✓
IsLogin bool
Area string ✓
Action string ✓
Refrence string ✓

Navigation: AppUser → AppUser