import prisma from './db'; interface MoveTrashParams { instance: any; entityType: 'produk' | 'kategori' | 'supplier' | 'member'; actorId: number; } export const moveToTrash = async (params: MoveTrashParams) => { const { instance, entityType, actorId } = params; const dataPayload: any = { main_record: instance, }; if (entityType === 'produk') { // harga_tingkat const hargaTingkat = await prisma.harga_tingkat.findMany({ where: { produk_id: instance.id }, }); dataPayload.harga_tingkat = hargaTingkat; // stok_batch const stokBatch = await prisma.stok_batch.findMany({ where: { produk_id: instance.id }, }); dataPayload.stok_batch = stokBatch; // stok_log const stokLog = await prisma.stok_log.findMany({ where: { produk_id: instance.id }, }); dataPayload.stok_log = stokLog; // stok_opname const stokOpname = await prisma.stok_opname.findMany({ where: { produk_id: instance.id }, }); dataPayload.stok_opname = stokOpname; } // Simpan payload di tabel trash await prisma.trash.create({ data: { entity_type: entityType, entity_id: instance.id, data: JSON.stringify(dataPayload), deleted_by: actorId, deleted_at: new Date(), }, }); // Soft delete / Nonaktifkan record aslinya const deletedAt = new Date(); if (entityType === 'produk') { await prisma.produk.update({ where: { id: instance.id }, data: { deleted_at: deletedAt, is_aktif: 0 }, }); } else if (entityType === 'kategori') { await prisma.kategori.update({ where: { id: instance.id }, data: { deleted_at: deletedAt, aktif: 0 }, }); } else if (entityType === 'supplier') { await prisma.supplier.update({ where: { id: instance.id }, data: { deleted_at: deletedAt, aktif: 0 }, }); } else if (entityType === 'member') { await prisma.member.update({ where: { id: instance.id }, data: { deleted_at: deletedAt, aktif: 0 }, }); } };