From 21ab53ad6a899c63d7d90ccae242a394327f18f2 Mon Sep 17 00:00:00 2001 From: MohammadHMazarei Date: Thu, 17 Apr 2025 14:00:24 +0330 Subject: [PATCH] ADD: updateTransaction service --- components/transaction/transactionService.js | 22 +++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/components/transaction/transactionService.js b/components/transaction/transactionService.js index e44b6b9..6626012 100644 --- a/components/transaction/transactionService.js +++ b/components/transaction/transactionService.js @@ -6,6 +6,15 @@ const ObjectID = mongoose.Schema.Types.ObjectId const { client } = require('../../setup/typesense') const TsApiFeatures = require('../../utils/TsApiFeatures') +const filterObj = (obj, ...allowedFields) => { + const newObj = {} + Object.keys(obj).forEach((el) => { + if (allowedFields.includes(el)) newObj[el] = obj[el] + }) + + return newObj +} + const createTransaction = async (data) => { if (data.type == 'withdraw') { // Aggregate transactions to calculate inventory @@ -117,4 +126,15 @@ const getBelongingInventory = async (belongingId) => { return { belongingCode: belonging.belongingCode, ...result[0] } } -module.exports = { createTransaction, getUserTransaction, getBelongingInventory } +const updateTransaction = async (transactionId, data) => { + const filteredBody = filterObj(data, 'status') + const transaction = await Transaction.findOneAndUpdate({ _id: transactionId }, filteredBody, { new: true }) + + if (!transaction) { + throw new AppError('NoTransactionFound', 404, {}) + } + + return transaction +} + +module.exports = { createTransaction, getUserTransaction, getBelongingInventory, updateTransaction }