Skip to content

Instantly share code, notes, and snippets.

@blackjmxx
Created November 29, 2020 15:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save blackjmxx/7266369620002e1919e9da732da5e8b2 to your computer and use it in GitHub Desktop.
Save blackjmxx/7266369620002e1919e9da732da5e8b2 to your computer and use it in GitHub Desktop.
applyAsset(store) {
const errors = [];
const travel = store.account.get(this.asset.travelId);
const passenger = store.account.get(this.asset.passengerId);
const driver = store.account.get(this.asset.carId);
const travelDriverBalance = travel.asset.travelDriverBalance || [];
const foundTravelDriverBalanceIndex = travelDriverBalance.findIndex(
(element) => element.passengerAddress === this.asset.passengerId
);
if (
!travelDriverBalance[foundTravelDriverBalanceIndex].rating &&
new utils.BigNum(
travelDriverBalance[foundTravelDriverBalanceIndex].amountTravel
).gt(0)
) {
const amountToWidthdraw = new utils.BigNum(
travelDriverBalance[foundTravelDriverBalanceIndex].amountTravel
);
travelDriverBalance[foundTravelDriverBalanceIndex] = {
...travelDriverBalance[foundTravelDriverBalanceIndex],
rating: this.asset.rating,
amountTravel: "0",
};
const newTravelBalance = new utils.BigNum(travel.balance).sub(
new utils.BigNum(amountToWidthdraw)
);
const newDriverBalance = new utils.BigNum(driver.balance).add(
amountToWidthdraw
);
const ratings = passenger.asset.ratings || [];
ratings.push({
rating: this.asset.rating,
notedBy: this.senderId,
timestamp: this.timestamp,
});
const updatedTravelAccount = {
...travel,
balance: newTravelBalance.toString(),
asset: {
...travel.asset,
travelDriverBalance: travelDriverBalance,
},
};
const updatedPassengerAccount = {
...passenger,
asset: {
...passenger.asset,
ratings: ratings,
},
};
const updatedDriverAccount = {
...driver,
balance: newDriverBalance.toString(),
};
store.account.set(travel.address, updatedTravelAccount);
store.account.set(passenger.address, updatedPassengerAccount);
store.account.set(driver.address, updatedDriverAccount);
}
return errors;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment