Files
cod-api/services/sparepart.service.js
2025-11-24 16:44:34 +07:00

110 lines
3.6 KiB
JavaScript

const {
getAllSparepartDb,
getSparepartByIdDb,
createSparepartDb,
updateSparepartDb,
deleteSparepartDb,
checkSparepartNameExistsDb,
} = require("../db/sparepart.db");
const { ErrorHandler } = require("../helpers/error");
class SparepartService {
static async getAllSparepart(param) {
try {
const results = await getAllSparepartDb(param);
results.data.map((item) => {});
return results;
} catch (error) {
throw new ErrorHandler(error.statusCode || 500, error.message);
}
}
static async getSparepartById(id) {
try {
const Sparepart = await getSparepartByIdDb(id);
if (!Sparepart) throw new ErrorHandler(404, "Sparepart not found");
return Sparepart;
} catch (error) {
throw new ErrorHandler(error.statusCode || 500, error.message);
}
}
static async createSparepart(data) {
try {
if (!data || typeof data !== "object") data = {};
if (data.sparepart_name) {
const exists = await checkSparepartNameExistsDb(data.sparepart_name);
if (exists)
throw new ErrorHandler(400, "Sparepart name already exists");
}
const insertData = {
sparepart_name: data.sparepart_name,
sparepart_description: data.sparepart_description,
sparepart_foto: data.sparepart_foto,
sparepart_stok: data.sparepart_stok,
sparepart_model: data.sparepart_model,
sparepart_merk: data.sparepart_merk,
sparepart_qty: data.sparepart_qty,
sparepart_item_type: data.sparepart_item_type,
sparepart_unit: data.sparepart_unit,
created_by: data.created_by,
};
const created = await createSparepartDb(insertData);
if (!created) throw new ErrorHandler(500, "Failed to create Sparepart");
return created;
} catch (error) {
throw new ErrorHandler(error.statusCode || 500, error.message);
}
}
static async updateSparepart(id, data) {
try {
const existing = await getSparepartByIdDb(id);
if (!existing) throw new ErrorHandler(404, "Sparepart not found");
if (
data.sparepart_name &&
data.sparepart_name !== existing.sparepart_name
) {
const exists = await checkSparepartNameExistsDb(
data.sparepart_name,
id
);
if (exists)
throw new ErrorHandler(400, "Sparepart name already exists");
}
const updateData = {
sparepart_name: data.sparepart_name,
sparepart_description: data.sparepart_description,
sparepart_foto: data.sparepart_foto,
sparepart_stok: data.sparepart_stok,
sparepart_model: data.sparepart_model,
sparepart_merk: data.sparepart_merk,
sparepart_qty: data.sparepart_qty,
sparepart_item_type: data.sparepart_item_type,
sparepart_unit: data.sparepart_unit,
updated_at: data.updated_at,
updated_by: data.updated_by
};
const updated = await updateSparepartDb(id, updateData);
if (!updated) throw new ErrorHandler(500, "Failed to update Sparepart");
return await this.getSparepartById(id);
} catch (error) {
throw new ErrorHandler(error.statusCode || 500, error.message);
}
}
static async deleteSparepart(id, userId) {
try {
const existing = await getSparepartByIdDb(id);
if (!existing) throw new ErrorHandler(404, "Sparepart not found");
const deleted = await deleteSparepartDb(id, userId);
if (!deleted) throw new ErrorHandler(500, "Failed to delete Sparepart");
return deleted;
} catch (error) {
throw new ErrorHandler(error.statusCode || 500, error.message);
}
}
}
module.exports = SparepartService;