Skip to content

Database — Core: Recruitment

The Staff Requisition Form and hiring pipeline — jobs, applicants, questions and answers, technical marks and interviews — plus the staff Evaluation appraisal sub-system, which shares this module by code evidence rather than by name.

See the Recruitment module.

21 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

ApplicantTechnicalMark

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

erDiagram
    ApplicantTechnicalMark {
        int ApplicantTechnicalMarkId PK
        int TechnicalInterViewId FK
        int JobPositionQuestionId FK
    }
    TechnicalInterView {
        int TechnicalInterViewId PK
    }
    JobPositionQuestion {
        int JobPositionQuestionId PK
    }
    TechnicalInterView ||--o{ ApplicantTechnicalMark : "TechnicalInterViewId"
    JobPositionQuestion ||--o{ ApplicantTechnicalMark : "JobPositionQuestionId"
Column Type Null Notes
ApplicantTechnicalMarkId int PK
TechnicalInterViewId int FK → TechnicalInterView
JobPositionQuestionId int FK → JobPositionQuestion
Mark int [Required] · [StringLength(50)]
Notes string [Required] · [StringLength(50)]
CreatedOn DateTime

Navigation: TechnicalInterView → TechnicalInterView, JobPositionQuestion → JobPositionQuestion

Applicants

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

erDiagram
    direction LR
    Applicants {
        int ApplicantId PK
        int CountryId FK
        int HighestDegreeReceived FK
        int WordOffice FK
        int PPTOffice FK
        int ExcelOffice FK
        int Arabic FK
        int English FK
        int Turkish FK
        int JobId FK
        int NationalityId FK
        int CommonMajorEducationMajorEducationId FK
    }
    CommonCountry {
        int CommonCountryId PK
    }
    CommonDegree {
        int DegreeId PK
    }
    CommonGeneralLevel {
        int GeneralLevelId PK
    }
    CommonLanguageLevel {
        int LanguageLevelId PK
    }
    Job {
        int JobId PK
    }
    Nationality {
        int NationalityId PK
    }
    CommonMajorEducation {
        int MajorEducationId PK
    }
    AppUser {
        int UserId PK
        int ApplicantId FK
    }
    TechnicalInterView {
        int TechnicalInterViewId PK
        int ApplicantId FK
    }
    JobAnswers {
        int JobAnswersId PK
        int ApplicantId FK
    }
    Reference {
        int ReferenceId PK
        int ApplicantId FK
    }
    CommonCountry ||--o{ Applicants : "CountryId"
    CommonDegree ||--o{ Applicants : "HighestDegreeReceived"
    CommonGeneralLevel ||--o{ Applicants : "WordOffice, PPTOffice, ExcelOffice"
    CommonLanguageLevel ||--o{ Applicants : "Arabic, English, Turkish"
    Job ||--o{ Applicants : "JobId"
    Nationality ||--o{ Applicants : "NationalityId"
    CommonMajorEducation |o--o{ Applicants : "CommonMajorEducationMajorEducationId"
    Applicants |o--o{ AppUser : "ApplicantId"
    Applicants ||--o{ TechnicalInterView : "ApplicantId"
    Applicants ||--o{ JobAnswers : "ApplicantId"
    Applicants ||--o{ Reference : "ApplicantId"
Column Type Null Notes
ApplicantId int PK
JobId int FK → Job
ApplicantGuid Guid
Firstname string [Required] · [StringLength(50)]
Lastname string [Required] · [StringLength(50)]
Gender int
MaritalStatus int
Email string ✓ [StringLength(50)]
Phone string ✓ [StringLength(50)]
BirthDate DateTime
BirthPlace string ✓
NationalityId int FK → Nationality
Arabic int FK → CommonLanguageLevel
English int FK → CommonLanguageLevel
Turkish int FK → CommonLanguageLevel
OtherLanguages string ✓ [StringLength(50)]
WordOffice int FK → CommonGeneralLevel
PPTOffice int FK → CommonGeneralLevel
ExcelOffice int FK → CommonGeneralLevel
CountryId int FK → CommonCountry
City string ✓ [StringLength(50)]
HasRelatives bool
RelativeType int? ✓
IdType int? ✓
LastPosition string ✓
LastEmployer string ✓
LastPositionFrom DateTime? ✓
LastPositionTo DateTime? ✓
OldExperience string ✓ [Column(TypeName = "ntext")]
YearsOfExperience int? ✓
HighestDegreeReceived int FK → CommonDegree
Specialization string ✓
Trainings string ✓
University string ✓
GraduationYear int? ✓
HasBankAccount bool? ✓
ShortedList bool
Interviewed bool
InterviewDate DateTime? ✓
Selected bool
Hired bool
FinalMark int
FirstReferenceName string ✓
FirstReferenceEmail string ✓
FirstReferencePhone string ✓
SecondReferenceName string ✓
SecondReferenceEmail string ✓
SecondReferencePhone string ✓
IsAcceptToSharedMyDate bool
CreatedOn DateTime
StartDate DateTime? ✓
StatusId ApplicantsStatus? ✓
IsRequesterByApprove bool
RequesterByNote string ✓
RequesterByApproveDate DateTime? ✓
RequesterBy int? ✓
GeneralManagerId int? ✓
IsGeneralManagerApprove bool
GeneralManagerNote string ✓
GeneralManagerApproveDate DateTime? ✓
VettingId int? ✓
IsVettingApprove bool
VettingNote string ✓
VettingApproveDate DateTime? ✓
ReferencesId int? ✓
IsReferencesApprove bool
ReferencesNote string ✓
ReferencesApproveDate DateTime? ✓
ComplianceAdminId int? ✓
IsComplianceAdminApprove bool
ComplianceAdminNote string ✓
ComplianceAdminApproveDate DateTime? ✓
RefuseId int? ✓
IsRefused bool
RefuseNote string ✓
RefuseDate DateTime? ✓
CommonMajorEducationMajorEducationId int? ✓ FK → CommonMajorEducation · shadow column — exists in the database, not on the class

Navigation: CommonCountry → CommonCountry, CommonDegree → CommonDegree, CommonGeneralLevelWord → CommonGeneralLevel, CommonGeneralLevelPPT → CommonGeneralLevel, CommonGeneralLevelExcel → CommonGeneralLevel, CommonLanguageLevelArabic → CommonLanguageLevel, CommonLanguageLevelEnglish → CommonLanguageLevel, CommonLanguageLevelTurkish → CommonLanguageLevel, Job → Job, Nationality → Nationality, JobAnswers → ICollection<JobAnswers>, AppUsers → ICollection<AppUser>, TechnicalInterViews → ICollection<TechnicalInterView>, References → ICollection<Reference>

Evaluation

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

erDiagram
    direction LR
    Evaluation {
        int EvaluationId PK
        int CreatedBy FK
        int OfficerId FK
        int ManagerId FK
        int HRId FK
        int NextUserId FK
        int EvaluationTypeId FK
    }
    AppUser {
        int UserId PK
    }
    EvaluationType {
        int EvaluationTypeId PK
    }
    EvaluationExCareer {
        int EvaluationExCareerId PK
        int EvaluationId FK
    }
    EvaluationObjective {
        int EvaluationObjId PK
        int EvaluationId FK
    }
    EvaluationsDegree {
        int EvaluationDegreeId PK
        int EvaluationId FK
    }
    AppUser ||--o{ Evaluation : "CreatedBy, OfficerId"
    AppUser |o--o{ Evaluation : "ManagerId, HRId, NextUserId"
    EvaluationType ||--o{ Evaluation : "EvaluationTypeId"
    Evaluation ||--o{ EvaluationExCareer : "EvaluationId"
    Evaluation ||--o{ EvaluationObjective : "EvaluationId"
    Evaluation ||--o{ EvaluationsDegree : "EvaluationId"
Column Type Null Notes
EvaluationId int PK
EvaluationGuid Guid
DateFrom DateTime [Column(TypeName = "date")]
DateTo DateTime [Column(TypeName = "date")]
EvaluationTypeId int FK → EvaluationType
OfficerId int FK → AppUser
OfficerDate DateTime? ✓
IsOfficerDone bool
ManagerId int? ✓ FK → AppUser
ManagerDate DateTime? ✓
IsManagerDone bool
HRId int? ✓ FK → AppUser
HRDate DateTime? ✓
IsHRDone bool
NextUserId int? ✓ FK → AppUser
StatusId int
PerformanceLevel int? ✓
NextStartDate DateTime? ✓ [Column(TypeName = "date")]
NextEndDate DateTime? ✓ [Column(TypeName = "date")]
Isdeleted bool
CreatedBy int FK → AppUser
CreatedOn DateTime

Navigation: AppUserCreatedBy → AppUser, AppUserOfficer → AppUser, AppUserManager → AppUser, AppUserHR → AppUser, AppUserNext → AppUser, EvaluationType → EvaluationType, EvaluationExCareer → ICollection<EvaluationExCareer>, EvaluationObjective → ICollection<EvaluationObjective>, EvaluationsDegree → ICollection<EvaluationsDegree>

EvaluationElement

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

erDiagram
    direction LR
    EvaluationElement {
        int EvaluationEIementId PK
        int CreatedBy FK
        int ElementTypeId FK
        int LevelId FK
    }
    AppUser {
        int UserId PK
    }
    EvaluationElementType {
        int ElementTypeId PK
    }
    PositionLevel {
        int LevelId PK
    }
    EvaluationsDegree {
        int EvaluationDegreeId PK
        int ElementId FK
    }
    AppUser ||--o{ EvaluationElement : "CreatedBy"
    EvaluationElementType ||--o{ EvaluationElement : "ElementTypeId"
    PositionLevel |o--o{ EvaluationElement : "LevelId"
    EvaluationElement ||--o{ EvaluationsDegree : "ElementId"
Column Type Null Notes
EvaluationEIementId int PK
Name string [Required]
LevelId int? ✓ FK → PositionLevel
ElementTypeId int FK → EvaluationElementType
Weight double? ✓
IsDeleted bool
CreatedBy int FK → AppUser
CreatedOn DateTime

Navigation: AppUser → AppUser, EvaluationElementType → EvaluationElementType, PositionLevel → PositionLevel, EvaluationsDegree → ICollection<EvaluationsDegree>

EvaluationElementType

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

erDiagram
    EvaluationElementType {
        int ElementTypeId PK
    }
    EvaluationElement {
        int EvaluationEIementId PK
        int ElementTypeId FK
    }
    EvaluationElementType ||--o{ EvaluationElement : "ElementTypeId"
Column Type Null Notes
ElementTypeId int PK
CompetencyName string [Required] · [StringLength(200)]
IsGeneral bool
ScoreType int

Navigation: EvaluationElement → ICollection<EvaluationElement>

EvaluationExCareer

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

erDiagram
    EvaluationExCareer {
        int EvaluationExCareerId PK
        int EvaluationId FK
    }
    Evaluation {
        int EvaluationId PK
    }
    Evaluation ||--o{ EvaluationExCareer : "EvaluationId"
Column Type Null Notes
EvaluationExCareerId int PK
EvaluationId int FK → Evaluation
Type int

Navigation: Evaluation → Evaluation

EvaluationObjective

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

erDiagram
    EvaluationObjective {
        int EvaluationObjId PK
        int EvaluationId FK
    }
    Evaluation {
        int EvaluationId PK
    }
    Evaluation ||--o{ EvaluationObjective : "EvaluationId"
Column Type Null Notes
EvaluationObjId int PK
EvaluationId int FK → Evaluation
ObjText string [Required] · [Column(TypeName = "ntext")]
EmpDegree int? ✓
ManagerDegree int? ✓
Accomplishments string ✓
ManagerFeedback string ✓
Measurement string ✓
Area int
CreatedBy int
CreatedOn DateTime

Navigation: Evaluation → Evaluation

EvaluationType

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

erDiagram
    EvaluationType {
        int EvaluationTypeId PK
    }
    Evaluation {
        int EvaluationId PK
        int EvaluationTypeId FK
    }
    EvaluationType ||--o{ Evaluation : "EvaluationTypeId"
Column Type Null Notes
EvaluationTypeId int PK
Name string [Required] · [StringLength(50)]

Navigation: Evaluation → ICollection<Evaluation>

EvaluationsDegree

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

erDiagram
    EvaluationsDegree {
        int EvaluationDegreeId PK
        int CreatedBy FK
        int EvaluationId FK
        int ElementId FK
    }
    AppUser {
        int UserId PK
    }
    Evaluation {
        int EvaluationId PK
    }
    EvaluationElement {
        int EvaluationEIementId PK
    }
    AppUser ||--o{ EvaluationsDegree : "CreatedBy"
    Evaluation ||--o{ EvaluationsDegree : "EvaluationId"
    EvaluationElement ||--o{ EvaluationsDegree : "ElementId"
Column Type Null Notes
EvaluationDegreeId int PK
EvaluationId int FK → Evaluation
ElementId int FK → EvaluationElement
OfficerDegree int? ✓
ManagerDegree int? ✓
HrDegree int? ✓
CreatedBy int FK → AppUser
CreatedOn DateTime

Navigation: AppUser → AppUser, Evaluation → Evaluation, EvaluationElement → EvaluationElement

Job

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

erDiagram
    direction LR
    Job {
        int JobId PK
        int CreatedBy FK
        int PMId FK
        int HeadId FK
        int HRId FK
        int FOId FK
        int CountryMId FK
        int AnnouncedId FK
        int NextUserId FK
        int RefuseId FK
        int CancelId FK
        int HiringManager FK
        int PositionId FK
        int DepartmentId FK
        int BranchId FK
    }
    AppUser {
        int UserId PK
    }
    AppUserPosition {
        int PositionId PK
    }
    CommonDepartment {
        int DepartmentId PK
    }
    CommonBranch {
        int BranchId PK
    }
    JobProjects {
        int JobProjectId PK
        int JobId FK
    }
    JobPermission {
        int JobPermissionId PK
        int JobId FK
    }
    Applicants {
        int ApplicantId PK
        int JobId FK
    }
    JobPositionQuestion {
        int JobPositionQuestionId PK
        int JobId FK
    }
    RecruitmentTracker {
        int RecruitmentTrackerId PK
        int JobId FK
    }
    JobQuestion {
        int JobQuestionId PK
        int JobId FK
    }
    AppUser ||--o{ Job : "CreatedBy"
    AppUser |o--o{ Job : "PMId, HeadId, HRId +7 more"
    AppUserPosition ||--o{ Job : "PositionId"
    CommonDepartment ||--o{ Job : "DepartmentId"
    CommonBranch ||--o{ Job : "BranchId"
    Job ||--o{ JobProjects : "JobId"
    Job ||--o{ JobPermission : "JobId"
    Job ||--o{ Applicants : "JobId"
    Job ||--o{ JobPositionQuestion : "JobId"
    Job ||--o{ RecruitmentTracker : "JobId"
    Job ||--o{ JobQuestion : "JobId"
Column Type Null Notes
JobId int PK
JobGuid Guid
PositionId int FK → AppUserPosition · [Required]
Qty int
Gender int
ContractType int
PeriodFrom DateTime [Column(TypeName = "date")]
PeriodTo DateTime [Column(TypeName = "date")]
ExpectedEmployementDate DateTime [Column(TypeName = "date")]
Justification int
MonthySalary decimal? ✓
Currency int? ✓
IsCore bool
ReqSign bool
ReqDate DateTime? ✓
PMId int? ✓ FK → AppUser
PMSign bool
PMDate DateTime? ✓
PMNote string ✓
HeadId int? ✓ FK → AppUser
HeadSign bool
HeadDate DateTime? ✓
HeadNote string ✓
FOId int? ✓ FK → AppUser
FOSign bool
FODate DateTime? ✓
FONote string ✓
HRId int? ✓ FK → AppUser
HRSign bool
HRDate DateTime? ✓
HRNote string ✓
CountryMId int? ✓ FK → AppUser
CountryMSign bool
CountryMDate DateTime? ✓
CountryMNote string ✓ [Column(TypeName = "ntext")]
AnnouncedId int? ✓ FK → AppUser
AnnouncedSign bool
AnnouncedDate DateTime? ✓
AnnouncedNote string ✓ [Column(TypeName = "ntext")]
CancelSign bool
CancelNote string ✓ [StringLength(50)]
CancelDate DateTime? ✓
CancelId int? ✓ FK → AppUser
NextUserId int? ✓ FK → AppUser
StatusId int
RefuseId int? ✓ FK → AppUser
IsRefused bool
RefuseDate DateTime? ✓
RefuseNote string ✓
Deleted bool
Description string ✓ [Column(TypeName = "ntext")]
BranchId int FK → CommonBranch · [Required]
ExpYears int? ✓
OpenDate DateTime [Required]
CloseDate DateTime [Required]
Lang int
DepartmentId int FK → CommonDepartment
HiringManager int? ✓ FK → AppUser
CreatedBy int FK → AppUser
CreatedOn DateTime
TechnicalPercent int
HRPercent int
OtherPercent int

Navigation: AppUserCreatedBy → AppUser, AppUserPM → AppUser, AppUserHead → AppUser, AppUserHR → AppUser, AppUserFO → AppUser, AppUserCountryM → AppUser, AppUserAnnounced → AppUser, AppUserNext → AppUser, AppUserRefuse → AppUser, AppUserCancel → AppUser, AppUserHiring → AppUser, AppUserPosition → AppUserPosition, CommonDepartment → CommonDepartment, CommonBranch → CommonBranch, Applicants → ICollection<Applicants>, JobPermission → ICollection<JobPermission>, JobProjects → ICollection<JobProjects>, JobQuestion → ICollection<JobQuestion>, RecruitmentTracker → ICollection<RecruitmentTracker>, JobPositionQuestions → ICollection<JobPositionQuestion>

JobAnswers

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

erDiagram
    JobAnswers {
        int JobAnswersId PK
        int ApplicantId FK
        int QuestionId FK
        int AnswerId FK
    }
    Applicants {
        int ApplicantId PK
    }
    JobQuestion {
        int JobQuestionId PK
    }
    JobQuestionAnswer {
        int JobQuestionAnswerId PK
    }
    Applicants ||--o{ JobAnswers : "ApplicantId"
    JobQuestion ||--o{ JobAnswers : "QuestionId"
    JobQuestionAnswer |o--o{ JobAnswers : "AnswerId"
Column Type Null Notes
JobAnswersId int PK
QuestionId int FK → JobQuestion
AnswerId int? ✓ FK → JobQuestionAnswer
ApplicantId int FK → Applicants
FreeAnswer string ✓ [Column(TypeName = "ntext")]

Navigation: Applicants → Applicants, JobQuestion → JobQuestion, JobQuestionAnswer → JobQuestionAnswer

JobPermission

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

erDiagram
    JobPermission {
        int JobPermissionId PK
        int UserId FK
        int JobId FK
    }
    AppUser {
        int UserId PK
    }
    Job {
        int JobId PK
    }
    AppUser ||--o{ JobPermission : "UserId"
    Job ||--o{ JobPermission : "JobId"
Column Type Null Notes
JobPermissionId int PK
JobId int FK → Job
UserId int FK → AppUser

Navigation: AppUser → AppUser, Job → Job

JobPositionQuestion

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

erDiagram
    JobPositionQuestion {
        int JobPositionQuestionId PK
        int PositionQuestionId FK
        int JobId FK
    }
    PositionQuestion {
        int PositionQuestionId PK
    }
    Job {
        int JobId PK
    }
    ApplicantTechnicalMark {
        int ApplicantTechnicalMarkId PK
        int JobPositionQuestionId FK
    }
    PositionQuestion ||--o{ JobPositionQuestion : "PositionQuestionId"
    Job ||--o{ JobPositionQuestion : "JobId"
    JobPositionQuestion ||--o{ ApplicantTechnicalMark : "JobPositionQuestionId"
Column Type Null Notes
JobPositionQuestionId int PK
Guid Guid
JobId int FK → Job
PositionQuestionId int FK → PositionQuestion

Navigation: PositionQuestion → PositionQuestion, Job → Job, ApplicantTechnicalMarks → ICollection<ApplicantTechnicalMark>

JobProjects

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

erDiagram
    JobProjects {
        int JobProjectId PK
        int JobId FK
        int ProjectId FK
        int BudgetLineId FK
    }
    Job {
        int JobId PK
    }
    Project {
        int ProjectId PK
    }
    BudgetLine {
        int Id PK
    }
    Job ||--o{ JobProjects : "JobId"
    Project ||--o{ JobProjects : "ProjectId"
    BudgetLine ||--o{ JobProjects : "BudgetLineId"
Column Type Null Notes
JobProjectId int PK
ProjectId int FK → Project
JobId int FK → Job
LOE double
BudgetLineId int FK → BudgetLine

Navigation: Job → Job, Project → Project, BudgetLine → BudgetLine

JobQuestion

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

erDiagram
    JobQuestion {
        int JobQuestionId PK
        int JobId FK
    }
    Job {
        int JobId PK
    }
    JobAnswers {
        int JobAnswersId PK
        int QuestionId FK
    }
    Job ||--o{ JobQuestion : "JobId"
    JobQuestion ||--o{ JobAnswers : "QuestionId"
Column Type Null Notes
JobQuestionId int PK
QuestionText string [Required] · [Column(TypeName = "ntext")]
JobId int FK → Job
QuestionGroup int
QuestionType int
IsRequired bool

Navigation: Job → Job, JobAnswers → ICollection<JobAnswers>

JobQuestionAnswer

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

erDiagram
    JobQuestionAnswer {
        int JobQuestionAnswerId PK
    }
    JobAnswers {
        int JobAnswersId PK
        int AnswerId FK
    }
    JobQuestionAnswer |o--o{ JobAnswers : "AnswerId"
Column Type Null Notes
JobQuestionAnswerId int PK
AnswerName string [Required] · [StringLength(50)]
QuestionGroup int
ArAnswerName string ✓

Navigation: JobAnswers → ICollection<JobAnswers>

JobSalaryScale

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

erDiagram
    JobSalaryScale {
        int JobSalaryScaleId PK
    }
Column Type Null Notes
JobSalaryScaleId int PK
Name string [Required] · [StringLength(50)]
GroupNo int? ✓

PositionQuestion

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

erDiagram
    PositionQuestion {
        int PositionQuestionId PK
        int PositionId FK
    }
    AppUserPosition {
        int PositionId PK
    }
    JobPositionQuestion {
        int JobPositionQuestionId PK
        int PositionQuestionId FK
    }
    AppUserPosition ||--o{ PositionQuestion : "PositionId"
    PositionQuestion ||--o{ JobPositionQuestion : "PositionQuestionId"
Column Type Null Notes
PositionQuestionId int PK
Guid Guid
Title string [Required]
IsEnabled bool
IsDeleted bool
MaxMark int
Type QuestionType
PositionId int FK → AppUserPosition

Navigation: AppUserPosition → AppUserPosition, JobPositionQuestions → ICollection<JobPositionQuestion>

RecruitmentTracker

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

erDiagram
    direction LR
    RecruitmentTracker {
        int RecruitmentTrackerId PK
        int RecruiterId FK
        int TechnicalInterviewer FK
        int HRInterviewer FK
        int OtherInterviewer FK
        int DepartmentId FK
        int JobId FK
    }
    AppUser {
        int UserId PK
    }
    CommonDepartment {
        int DepartmentId PK
    }
    Job {
        int JobId PK
    }
    RecruitmentTrackerInterview {
        int RecruitmentTrackerInterviewId PK
        int TrackerId FK
    }
    AppUser |o--o{ RecruitmentTracker : "RecruiterId, TechnicalInterviewer, HRInterviewer +1 more"
    CommonDepartment |o--o{ RecruitmentTracker : "DepartmentId"
    Job ||--o{ RecruitmentTracker : "JobId"
    RecruitmentTracker ||--o{ RecruitmentTrackerInterview : "TrackerId"
Column Type Null Notes
RecruitmentTrackerId int PK
RecruitmentGuid Guid
JobId int FK → Job
RecruiterId int? ✓ FK → AppUser
FinalInterviewDate DateTime? ✓
InterviewBeginDate DateTime? ✓
Notes string ✓ [Column(TypeName = "ntext")]
PriorityId int? ✓
DepartmentId int? ✓ FK → CommonDepartment
IsNew bool? ✓
StatusId int? ✓
TechnicalInterviewer int? ✓ FK → AppUser
HRInterviewer int? ✓ FK → AppUser
OtherInterviewer int? ✓ FK → AppUser

Navigation: AppUser → AppUser, AppUserTechnicalInterviewer → AppUser, AppUserHRInterviewer → AppUser, AppUserOtherInterviewer → AppUser, CommonDepartment → CommonDepartment, Job → Job, RecruitmentTrackerInterview → ICollection<RecruitmentTrackerInterview>

RecruitmentTrackerInterview

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

erDiagram
    RecruitmentTrackerInterview {
        int RecruitmentTrackerInterviewId PK
        int UserId FK
        int TrackerId FK
    }
    AppUser {
        int UserId PK
    }
    RecruitmentTracker {
        int RecruitmentTrackerId PK
    }
    AppUser ||--o{ RecruitmentTrackerInterview : "UserId"
    RecruitmentTracker ||--o{ RecruitmentTrackerInterview : "TrackerId"
Column Type Null Notes
RecruitmentTrackerInterviewId int PK
UserId int FK → AppUser
TrackerId int FK → RecruitmentTracker

Navigation: AppUser → AppUser, RecruitmentTracker → RecruitmentTracker

TechnicalInterView

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

erDiagram
    TechnicalInterView {
        int TechnicalInterViewId PK
        int RefuseId FK
        int NextUserId FK
        int RequesterBy FK
        int TInterviewerBy FK
        int HRInterviewerBy FK
        int OInterviewerBy FK
        int ApplicantId FK
    }
    AppUser {
        int UserId PK
    }
    Applicants {
        int ApplicantId PK
    }
    ApplicantTechnicalMark {
        int ApplicantTechnicalMarkId PK
        int TechnicalInterViewId FK
    }
    AppUser |o--o{ TechnicalInterView : "RefuseId, NextUserId, RequesterBy +3 more"
    Applicants ||--o{ TechnicalInterView : "ApplicantId"
    TechnicalInterView ||--o{ ApplicantTechnicalMark : "TechnicalInterViewId"
Column Type Null Notes
TechnicalInterViewId int PK
TechnicalInterViewGuid Guid
ApplicantId int FK → Applicants
InterviewDate DateTime? ✓
FinalMark int? ✓
CreatedOn DateTime
Status TechnicalInterViewStatus
IsRequesterByApprove bool
RequesterByNote string ✓
RequesterByApproveDate DateTime? ✓
RequesterBy int? ✓ FK → AppUser
IsTInterviewerByApprove bool
TInterviewerByNote string ✓
TInterviewerByApproveDate DateTime? ✓
TInterviewerBy int? ✓ FK → AppUser
IsHRInterviewerByApprove bool
HRInterviewerByNote string ✓
HRInterviewerByApproveDate DateTime? ✓
HRInterviewerBy int? ✓ FK → AppUser
IsOInterviewerByApprove bool
OInterviewerByNote string ✓
OInterviewerByApproveDate DateTime? ✓
OInterviewerBy int? ✓ FK → AppUser
RefuseId int? ✓ FK → AppUser
IsRefused bool
RefuseDate DateTime? ✓
RefuseNote string ✓
NextUserId int? ✓ FK → AppUser

Navigation: AppUserRefuse → AppUser, AppUserNext → AppUser, AppUserRequesterBy → AppUser, AppUserTInterviewerBy → AppUser, AppUserHRInterviewerBy → AppUser, AppUserOInterviewerBy → AppUser, Applicant → Applicants, ApplicantTechnicalMarks → ICollection<ApplicantTechnicalMark>