// models/User.js // User model definition class User { constructor(id, email, passwordHash, firstName, lastName, userType, tenantId, createdAt, updatedAt) { this.id = id; this.email = email; this.passwordHash = passwordHash; this.firstName = firstName; this.lastName = lastName; this.userType = userType; // 'job-seeker' or 'job-provider' this.tenantId = tenantId; this.createdAt = createdAt || new Date(); this.updatedAt = updatedAt || new Date(); } // Static method to create a new user static create(userData) { const id = userData.id || require('uuid').v4(); return new User( id, userData.email, userData.passwordHash, userData.firstName, userData.lastName, userData.userType, userData.tenantId ); } // Method to validate a user validate() { if (!this.email || !this.passwordHash || !this.firstName || !this.lastName || !this.userType || !this.tenantId) { throw new Error('Missing required fields'); } if (!['job-seeker', 'job-provider'].includes(this.userType)) { throw new Error('User type must be either job-seeker or job-provider'); } const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(this.email)) { throw new Error('Invalid email format'); } return true; } } module.exports = User;