repair: notification error sparepart

This commit is contained in:
2025-12-04 14:30:57 +07:00
parent 8b4cc89be5
commit 73b4abfd68
2 changed files with 69 additions and 67 deletions

View File

@@ -11,10 +11,10 @@ const getAllNotificationErrorSparepartDb = async (searchParams = {}) => {
const { whereOrConditions, whereParamOr } = pool.buildStringOrIlike(
[
"a.brand_sparepart_id",
"a.contact_id",
"a.device_id",
"a.sparepart_id",
"b.sparepart_name",
"d.contact_name",
"d.contact_type"
"d.device_name",
],
searchParams.criteria,
queryParams
@@ -25,11 +25,10 @@ const getAllNotificationErrorSparepartDb = async (searchParams = {}) => {
const { whereConditions, whereParamAnd } = pool.buildFilterQuery(
[
{ column: "a.brand_sparepart_id", param: searchParams.name, type: "int" },
{ column: "a.contact_id", param: searchParams.code, type: "int" },
{ column: "a.device_id", param: searchParams.code, type: "int" },
{ column: "a.unit", param: searchParams.unit, type: "string" },
{ column: "b.sparepart_name", param: searchParams.device, type: "string" },
{ column: "d.contact_name", param: searchParams.device, type: "string" },
{ column: "d.contact_type", param: searchParams.device, type: "string" },
{ column: "d.device_name", param: searchParams.device, type: "string" },
],
queryParams
);
@@ -41,14 +40,23 @@ const getAllNotificationErrorSparepartDb = async (searchParams = {}) => {
COUNT(*) OVER() AS total_data,
a.*,
b.sparepart_name,
b.brand_sparepart_description,
d.contact_name,
d.contact_type
b.sparepart_foto,
b.sparepart_stok,
b.sparepart_qty,
b.sparepart_description,
b.sparepart_model,
b.sparepart_merk,
b.sparepart_unit,
b.sparepart_item_type,
d.device_name
FROM notification_error_sparepart a
LEFT JOIN brand_sparepart b ON a.brand_sparepart_id = b.brand_sparepart_id
LEFT JOIN brand_sparepart c ON a.brand_sparepart_id = c.brand_sparepart_id
LEFT JOIN contact d on a.contact_id = d.contact_id
LEFT JOIN m_sparepart b ON c.sparepart_id = b.sparepart_id
LEFT JOIN m_device d on c.device_id = d.device_id
WHERE a.deleted_at IS NULL
${whereConditions.length > 0 ? ` AND ${whereConditions.join(" AND ")}` : ""}
@@ -69,15 +77,26 @@ const getAllNotificationErrorSparepartDb = async (searchParams = {}) => {
const getNotificationErrorSparepartByIdDb = async (id) => {
const queryText = `
SELECT
a.*,
b.sparepart_name,
b.brand_sparepart_description,
d.contact_name,
d.contact_type
b.sparepart_foto,
b.sparepart_stok,
b.sparepart_qty,
b.sparepart_description,
b.sparepart_model,
b.sparepart_merk,
b.sparepart_unit,
b.sparepart_item_type,
d.device_name
FROM notification_error_sparepart a
LEFT JOIN brand_sparepart b ON a.brand_sparepart_id = b.brand_sparepart_id
LEFT JOIN contact d on a.contact_id = d.contact_id
LEFT JOIN brand_sparepart c ON a.brand_sparepart_id = c.brand_sparepart_id
LEFT JOIN m_sparepart b ON c.sparepart_id = b.sparepart_id
LEFT JOIN m_device d on c.device_id = d.device_id
WHERE a.notification_error_sparepart_id = $1
AND a.deleted_at IS NULL
`;

View File

@@ -6,31 +6,23 @@ const {
deleteNotificationErrorSparepartDb,
} = require("../db/notification_error_sparepart.db");
const { getContactByIdDb } = require("../db/contact.db");
const { ErrorHandler } = require("../helpers/error");
class NotificationErrorSparepartService {
static _checkAccess(contactType) {
if (contactType !== "gudang") {
throw new ErrorHandler(
403,
"Akses ditolak. Hanya contact_type 'gudang' yang dapat getAll/create/update/delete."
);
static async getAll(param) {
try {
const results = await getAllNotificationErrorSparepartDb(param);
results.data.map(element => {
});
return results
} catch (error) {
throw new ErrorHandler(error.statusCode, error.message);
}
}
static async getAll(param, contact_id) {
const contactResult = await getContactByIdDb(contact_id);
if (!contactResult || contactResult.length < 1)
throw new ErrorHandler(404, "Contact tidak ditemukan");
const contact = contactResult[0];
this._checkAccess(contact.contact_type);
return await getAllNotificationErrorSparepartDb(param);
}
static async getById(id) {
const result = await getNotificationErrorSparepartByIdDb(id);
@@ -41,45 +33,36 @@ class NotificationErrorSparepartService {
}
static async create(data) {
const contactResult = await getContactByIdDb(data.contact_id);
try {
if (!data || typeof data !== 'object') data = {};
if (!contactResult || contactResult.length < 1)
throw new ErrorHandler(404, "Contact tidak ditemukan");
const result = await createNotificationErrorSparepartDb(data);
const contact = contactResult[0];
this._checkAccess(contact.contact_type);
return await createNotificationErrorSparepartDb(data);
return result;
} catch (error) {
throw new ErrorHandler(error.statusCode, error.message);
}
}
static async update(id, data) {
const contactResult = await getContactByIdDb(data.contact_id);
static async update(id, data) {
try {
if (!data || typeof data !== 'object') data = {};
if (!contactResult || contactResult.length < 1)
throw new ErrorHandler(404, "Contact tidak ditemukan");
const dataExist = await getNotificationErrorSparepartByIdDb(id);
const contact = contactResult[0];
this._checkAccess(contact.contact_type);
const exist = await getNotificationErrorSparepartByIdDb(id);
if (exist.length < 1)
throw new ErrorHandler(404, "Notification Error Sparepart not found");
return await updateNotificationErrorSparepartDb(id, data);
if (dataExist.length < 1) {
throw new ErrorHandler(404, 'Roles not found');
}
static async delete(id, contact_id) {
const contactResult = await getContactByIdDb(contact_id);
const result = await updateNotificationErrorSparepartDb(id, data);
if (!contactResult || contactResult.length < 1)
throw new ErrorHandler(404, "Contact tidak ditemukan");
return result;
} catch (error) {
throw new ErrorHandler(error.statusCode, error.message);
}
}
const contact = contactResult[0];
this._checkAccess(contact.contact_type);
static async delete(id) {
const exist = await getNotificationErrorSparepartByIdDb(id);