Files
help_desk/models/Company.js
T

45 lines
1.5 KiB
JavaScript

const db = require('../config/db');
const Company = {
findAll: async () => {
const [rows] = await db.query('SELECT * FROM companies ORDER BY id ASC');
return rows;
},
findById: async (id) => {
const [rows] = await db.query('SELECT * FROM companies WHERE id = ?', [id]);
return rows[0];
},
findBySlug: async (slug) => {
const [rows] = await db.query('SELECT * FROM companies WHERE slug = ?', [slug]);
return rows[0];
},
create: async (name, slug, plan = 'free') => {
const [result] = await db.query(
'INSERT INTO companies (name, slug, plan) VALUES (?, ?, ?)',
[name, slug, plan]
);
return result.insertId;
},
update: async (id, data) => {
const fields = [];
const values = [];
for (const [key, value] of Object.entries(data)) {
fields.push(`${key} = ?`);
values.push(value);
}
if (fields.length === 0) return;
values.push(id);
await db.query(`UPDATE companies SET ${fields.join(', ')} WHERE id = ?`, values);
},
countUsers: async (companyId) => {
const [rows] = await db.query('SELECT COUNT(*) as total FROM users WHERE company_id = ? AND is_active = 1', [companyId]);
return rows[0].total;
},
countTickets: async (companyId) => {
const [rows] = await db.query('SELECT COUNT(*) as total FROM tickets WHERE company_id = ?', [companyId]);
return rows[0].total;
}
};
module.exports = Company;