Support multiple expenses in one reimburesement

This commit is contained in:
2020-05-29 18:47:49 +02:00
parent 19f212f283
commit 7fdeb78617
6 changed files with 45 additions and 33 deletions

View File

@@ -9,7 +9,10 @@ class Reimbursement extends Record {
getById (id) {
return this.functions.get(id)
.then(data => {
return this.ipfs.catAndMerge(data, ExpenseSerializer.deserialize);
return this.ipfs.catAndMerge(data, (ipfsDocument) => {
const expenses = JSON.parse(ipfsDocument);
return { expenses };
});
});
}
@@ -18,26 +21,32 @@ class Reimbursement extends Record {
}
async add (attrs, callOptions = {}) {
const reimbursement = new ExpenseSerializer(attrs);
const amount = parseInt(attrs.amount);
const token = attrs.token;
const recipient = attrs.recipient;
const expenses = attrs.expenses.map( e => new ExpenseSerializer(e) );
try { await reimbursement.validate(); }
catch (error) { return Promise.reject(error); }
if (!amount > 0 || !token || token === '' || !recipient || recipient === '' || !expenses.length > 0) {
return Promise.reject(new Error('Invalid data. amount, token, expenses is required.'));
}
const jsonStr = reimbursement.serialize();
return Promise.all(expenses.map(e => e.validate()))
.then(() => {
const jsonStr = JSON.stringify(expenses.map(e => e.data), null, 2);
return this.ipfs
.add(jsonStr)
.then(ipfsHashAttr => {
let reimbursement = [
amount,
token,
recipient,
ipfsHashAttr.hashDigest,
ipfsHashAttr.hashFunction,
ipfsHashAttr.hashSize,
];
return this.ipfs
.add(jsonStr)
.then(ipfsHashAttr => {
let reimbursement = [
attrs.amount,
attrs.token,
ipfsHashAttr.hashDigest,
ipfsHashAttr.hashFunction,
ipfsHashAttr.hashSize,
];
console.log(reimbursement)
return this.functions.add(...reimbursement, callOptions);
return this.functions.add(...reimbursement, callOptions);
});
});
}
}