worldshine-redesign/app/models/employee.model.js
2026-01-29 21:01:01 -05:00

107 lines
3.2 KiB
JavaScript

module.exports = mongoose => {
var schema = mongoose.Schema(
{
username: String,
name_cn: String,
email: String,
password: String,
roles: [{
type: String
}],
mobile_phone: String,
home_phone: String,
language: String,
employment_status: String,
address: String,
date_hired: String,
driver_capacity: Number,
create_by: String,
create_date: Date,
edit_by: String,
edit_date: Date,
note: String,
tags: [{
type: String
}],
fetch_route_time: Date,
site: Number,
// new fields added and legacy feilds are used in HR system
trinet_id: String,
name: String,
firstname: String,
middlename: String,
lastname: String,
preferred_name: String,
ssn: String,
marital_status: String,
gender: String,
city: String,
street_address: String,
state: String,
zip: String,
country: String,
work_email: String,
personal_email: String,
phone: String,
work_phone: String,
birth_date: String, // date of birth
work_phone_ext: String, // work phone extension
dietary_restrictions: String,
tshirt_size: String,
title: String,
title_cn: String,
department: String,
manager_name: String,
manager_email: String,
manager_trinet_id: String,
manager_id: String,
direct_reports: [{
type: String
}],
current_employment_start_date: String,
initial_employment_start_date: String,
status: String,
work_location: String,
employment_type: String,
employment_start_date: String,
employment_end_date: String,
termination_date: String,
termination_type: String,
termination_reason: String,
full_time_start_date: String,
end_date: String,
month_of_service: Number,
full_years_of_service: Number,
compensation_type: String,
compensation: Number,
worker_type: String,
monthly_salary: Number,
currency: String,
salary: Number,
hourly_wage: Number,
work_site: Number,
next_anniversary: Number,
job_id: String,
job_title: String,
job_category: String,
add_to_payroll: Boolean,
collect_tax_information: Boolean,
fingerprints: [{
type: String
}],
entry_passcode: [{
type: String
}]
},
{ collection: 'employee', timestamps: true }
);
schema.method("toJSON", function() {
const { __v, _id, ...object } = this.toObject();
object.id = _id;
return object;
});
schema.index({username: 1, email: 1, site:1}, {unique: true});
const Employee = mongoose.model("employee", schema);
return Employee;
};