const { getHistoryAlarmDb, getHistoryEventDb, checkTableNamedDb, getHistoryValueReportDb, getHistoryValueReportPivotDb, getHistoryValueTrendingPivotDb } = require('../db/history_value.db'); const { getSubSectionByIdDb } = require('../db/plant_sub_section.db'); const { ErrorHandler } = require('../helpers/error'); class HistoryValue { static async getAllHistoryAlarm(param) { try { const results = await getHistoryAlarmDb(param); return results; } catch (error) { throw new ErrorHandler(error.statusCode || 500, error.message || 'Error fetching alarm history'); } } static async getAllHistoryEvent(param) { try { const results = await getHistoryEventDb(param); return results; } catch (error) { throw new ErrorHandler(error.statusCode || 500, error.message || 'Error fetching event history'); } } static async getHistoryValueReport(param) { try { if (!param.plant_sub_section_id) { throw new ErrorHandler(400, 'plant_sub_section_id is required'); } const plantSubSection = await getSubSectionByIdDb(param.plant_sub_section_id); if (!plantSubSection || plantSubSection.length < 1) { throw new ErrorHandler(404, 'Plant sub section not found'); } const tableNameValue = plantSubSection[0]?.table_name_value; if (!tableNameValue) { throw new ErrorHandler(404, 'Table name not configured for this sub section'); } const tableExist = await checkTableNamedDb(tableNameValue); if (!tableExist || tableExist.length < 1) { throw new ErrorHandler(404, `Value table '${tableNameValue}' not found`); } const results = await getHistoryValueReportDb(tableExist[0].TABLE_NAME, param); return results; } catch (error) { throw new ErrorHandler( error.statusCode || 500, error.message || 'Error fetching history value report' ); } } static async getHistoryValueReportPivot(param) { try { if (!param.plant_sub_section_id) { throw new ErrorHandler(400, 'plant_sub_section_id is required'); } if (!param.from || !param.to) { throw new ErrorHandler(400, 'from and to date parameters are required'); } const plantSubSection = await getSubSectionByIdDb(param.plant_sub_section_id); if (!plantSubSection || plantSubSection.length < 1) { throw new ErrorHandler(404, 'Plant sub section not found'); } const tableNameValue = plantSubSection[0]?.table_name_value; if (!tableNameValue) { throw new ErrorHandler(404, 'Table name not configured for this sub section'); } const tableExist = await checkTableNamedDb(tableNameValue); if (!tableExist || tableExist.length < 1) { throw new ErrorHandler(404, `Value table '${tableNameValue}' not found`); } const results = await getHistoryValueReportPivotDb(tableExist[0].TABLE_NAME, param); return results; } catch (error) { throw new ErrorHandler( error.statusCode || 500, error.message || 'Error fetching history value report pivot' ); } } static async getHistoryValueTrendingPivot(param) { try { if (!param.plant_sub_section_id) { throw new ErrorHandler(400, 'plant_sub_section_id is required'); } if (!param.from || !param.to) { throw new ErrorHandler(400, 'from and to date parameters are required'); } const plantSubSection = await getSubSectionByIdDb(param.plant_sub_section_id); if (!plantSubSection || plantSubSection.length < 1) { throw new ErrorHandler(404, 'Plant sub section not found'); } const tableNameValue = plantSubSection[0]?.table_name_value; if (!tableNameValue) { throw new ErrorHandler(404, 'Table name not configured for this sub section'); } const tableExist = await checkTableNamedDb(tableNameValue); if (!tableExist || tableExist.length < 1) { throw new ErrorHandler(404, `Value table '${tableNameValue}' not found`); } const results = await getHistoryValueTrendingPivotDb(tableExist[0].TABLE_NAME, param); return results; } catch (error) { throw new ErrorHandler( error.statusCode || 500, error.message || 'Error fetching history value trending pivot' ); } } } module.exports = HistoryValue;