Spaces:
Sleeping
Sleeping
| 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 }, | |
| }); | |
| } | |
| }; | |