UNPKG

stromdao-businessobject

Version:

Abstract BusinessObject for StromDAO Energy Blockchain. Abstraction layer between blockchain technology and business logic providing energy market related entities and use cases.

88 lines (78 loc) 2.96 kB
/** * StromDAO Business Object: MPO * ========================================= * Meter Point Operator handling for StromDAO Energy Blockchain. * * In general a Meter Point Operating (Contract) handles meter readings and issues Deliverables as soon as a new reading is received. * * @author Thorsten Zoerner thorsten.zoerner@stromdao.de * */ this.mpo = function(obj_or_address) { if(typeof obj_or_address == "undefined") obj_or_address=parent.options.contracts["StromDAO-BO.sol_MPO"]; var p1 = new Promise(function(resolve, reject) { var instance=parent._objInstance(obj_or_address,'StromDAO-BO.sol_MPO'); instance.test = {}; /** * Approve a new Blockchain Address to this contract instance. Limit: Only-Owner * @param _meter address * @param _role Eq. to 4= Consumer or 5= Producer */ instance.approveMP=function(address_meterpoint,uint256_role) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.approveMP(address_meterpoint,uint256_role).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; /** * Stores a reading to this contract instance. Requires sender to be approved Meter-Point * @see approveMP() */ instance.storeReading=function(uint256_reading) { uint256_reading=Math.round(uint256_reading); var p2 = new Promise(function(resolve2, reject2) { instance.obj.storeReading(uint256_reading).then(function(o) { parent._waitForTransactionKeepRef(o,resolve2); }); }); return p2; }; /** * Allows a test commit to check if it fails. Promise that might be used to validate a Meter-Point is fully connected. */ instance.test.storeReading=function(uint256_reading) { uint256_reading=Math.round(uint256_reading); var p2 = new Promise(function(resolve2, reject2) { instance.obj.estimate.storeReading(uint256_reading).then(function(cost) { resolve2(cost.toString()); }).catch(function() { reject2(-1); }); }); return p2; }; /** * Returns last delivery issued for a Meter-Point */ instance.lastDelivery=function(address_meterpoint) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.lastDelivery(address_meterpoint).then(function(o) { resolve2(o); }); }); return p2; }; /** * Returns last reading for a Meter-Point */ instance.readings=function(address_meterpoint) { var p2 = new Promise(function(resolve2, reject2) { instance.obj.readings(address_meterpoint).then(function(o) { resolve2(o); }); }); return p2; }; resolve(instance); }); return p1; };