const { getAllDevicesDb, getDeviceByIdDb, getDeviceByCodeDb, createDeviceDb, updateDeviceDb, softDeleteDeviceDb } = require('../db/device.db'); const { ErrorHandler } = require('../helpers/error'); class DeviceService { // Get all devices static async getAllDevices() { const devices = await getAllDevicesDb(); return devices; } // Get device by ID static async getDeviceById(id) { const device = await getDeviceByIdDb(id); if (!device) { throw new ErrorHandler(404, 'Device not found'); } return device; } // Get device by code static async getDeviceByCode(code) { const device = await getDeviceByCodeDb(code); if (!device) { throw new ErrorHandler(404, 'Device not found'); } return device; } // Create device static async createDevice(data, userId) { if (!data || typeof data !== 'object') data = {}; data.created_by = userId; data.is_active = 1; // cek kode unik const existingDevice = await getDeviceByCodeDb(data.device_code); if (existingDevice) { throw new ErrorHandler(400, 'Device code already exists'); } const newDevice = await createDeviceDb(data); return newDevice; } // Update device static async updateDevice(id, data, userId) { if (!data || typeof data !== 'object') data = {}; const existingDevice = await getDeviceByIdDb(id); if (!existingDevice) { throw new ErrorHandler(404, 'Device not found'); } data.updated_by = userId; data.updated_at = new Date(); await updateDeviceDb(id, data); return { message: 'Device updated successfully' }; } // Soft delete device static async deleteDevice(id, userId) { const existingDevice = await getDeviceByIdDb(id); if (!existingDevice) { throw new ErrorHandler(404, 'Device not found'); } await softDeleteDeviceDb(id, userId); return { message: 'Device deleted successfully' }; } } module.exports = DeviceService;