2025-11-21 12:09:43 +07:00
|
|
|
import { GeneralService } from '../share/generalservice.js'
|
|
|
|
|
import bcrypt from 'bcrypt'
|
2025-11-11 12:36:06 +07:00
|
|
|
|
|
|
|
|
export class RegisterService {
|
|
|
|
|
constructor() {
|
2025-11-21 12:09:43 +07:00
|
|
|
this.generalService = new GeneralService()
|
2025-11-11 12:36:06 +07:00
|
|
|
}
|
|
|
|
|
|
2025-11-21 12:09:43 +07:00
|
|
|
async createUser(database, userData) {
|
|
|
|
|
|
|
|
|
|
// 1. ทำการ Hash Password
|
|
|
|
|
const saltRounds = 10;
|
|
|
|
|
const hashedPassword = await bcrypt.hash(userData.password, saltRounds);
|
|
|
|
|
|
|
|
|
|
// 2. เตรียม SQL
|
|
|
|
|
const sql = `
|
|
|
|
|
INSERT INTO ${database}.usrmst
|
|
|
|
|
(username, password, email, firstname, lastname, created_at)
|
|
|
|
|
VALUES (?, ?, ?, ?, ?, NOW())
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
// 3. ใช้ hashedPassword แทน password เดิม
|
|
|
|
|
const params = [
|
|
|
|
|
userData.username,
|
|
|
|
|
hashedPassword, // ส่งตัวที่ Hash แล้วเข้า DB
|
|
|
|
|
userData.email,
|
|
|
|
|
userData.firstname,
|
|
|
|
|
userData.lastname
|
|
|
|
|
]
|
2025-11-11 12:36:06 +07:00
|
|
|
|
2025-11-21 12:09:43 +07:00
|
|
|
try {
|
|
|
|
|
const result = await this.generalService.executeQueryParam(database, sql, params);
|
|
|
|
|
|
|
|
|
|
// เช็คผลลัพธ์ตาม Structure ของ GeneralService
|
|
|
|
|
// สมมติว่าถ้า Error ตัว executeQueryParam อาจจะ throw หรือ return null
|
|
|
|
|
return { status: true, message: 'Registration successful' };
|
2025-11-11 12:36:06 +07:00
|
|
|
} catch (error) {
|
2025-11-21 12:09:43 +07:00
|
|
|
console.error('Register Service Error:', error);
|
|
|
|
|
return null;
|
2025-11-11 12:36:06 +07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-11-23 15:54:16 +07:00
|
|
|
async checkUserDuplicate(database, email) {
|
|
|
|
|
const sql = `
|
|
|
|
|
SELECT * FROM nuttakit.usrmst
|
|
|
|
|
WHERE usreml = $1
|
|
|
|
|
`
|
|
|
|
|
const params = [email]
|
|
|
|
|
const aryResult = await this.generalService.executeQueryParam(database, sql, params);
|
|
|
|
|
return aryResult;
|
|
|
|
|
}
|
2025-11-11 12:36:06 +07:00
|
|
|
|
2025-11-21 12:09:43 +07:00
|
|
|
async genNum(database) {
|
|
|
|
|
const sql = `
|
|
|
|
|
SELECT
|
|
|
|
|
MAX(usrseq) as max_seq
|
|
|
|
|
FROM nuttakit.usrmst
|
|
|
|
|
`
|
|
|
|
|
const params = []
|
|
|
|
|
const aryResult = await this.generalService.executeQueryParam(database, sql, params);
|
2025-11-11 12:36:06 +07:00
|
|
|
|
2025-11-21 12:09:43 +07:00
|
|
|
const lastSeq = aryResult[0]?.max_seq || 0;
|
2025-11-11 12:36:06 +07:00
|
|
|
|
2025-11-21 12:09:43 +07:00
|
|
|
return lastSeq + 1;
|
2025-11-11 12:36:06 +07:00
|
|
|
}
|
2025-11-21 12:09:43 +07:00
|
|
|
}
|