Пример #1
0
exports.init_z2bEvents = function (req, res, next)
{
    let method = 'init_z2bEvents';
    if (bRegistered) {res.send('Already Registered');}
    else{
        bRegistered = true;
//        svc.createAlertSocket();
        let businessNetworkConnection;
        businessNetworkConnection = new BusinessNetworkConnection();
        businessNetworkConnection.setMaxListeners(50);
        //
        // v0.14
        // return businessNetworkConnection.connect(config.composer.connectionProfile, config.composer.network, config.composer.adminID, config.composer.adminPW)
        //
        // v0.15
        return businessNetworkConnection.connect(config.composer.adminCard)
        .then(() => {
            // using the businessNetworkConnection, start monitoring for events.
            // when an event is provided, call the _monitor function, passing in the al_connection, f_connection and event information
            businessNetworkConnection.on('event', (event) => {_monitor(req.app.locals, event); });
            res.send('event registration complete');
        }).catch((error) => {
            // if an error is encountered, log the error and send it back to the requestor
            console.log(method+' business network connection failed'+error.message);
            res.send(method+' business network connection failed'+error.message);
        });
    }
};
exports.addInbound = function(feedItem, callback) {
  /**
   * parameters expected in the args:
  * feedItem (Inbound)
  **/
  const BusinessNetworkConnection = require('composer-client').BusinessNetworkConnection;
  const bizNetworkConnection = new BusinessNetworkConnection();
  bizNetworkConnection.connect(process.env.CARD_NAME)
    .then((bizNetworkDefinition) => {
	const factory = bizNetworkDefinition.getFactory();
	const id = generateId();
	bizNetworkConnection.getParticipantRegistry('info.glennengstrand.Inbound')
	  .then((inboundRegistry) => {
	      var inb = factory.newResource('info.glennengstrand', 'Inbound', id);
	      inb.created = new Date();
	      inb.subject = feedItem.subject;
	      inb.story = feedItem.story;
	      inb.recipient = factory.newRelationship('info.glennengstrand', 'Broadcaster', feedItem.to);
	      inboundRegistry.add(inb)
		.then((result) => {
		    callback(null, feedItem);
		});
	  });
    });
}
exports.getInbound = function(args, callback) {
  /**
   * parameters expected in the args:
  * id (Long)
  **/
  const BusinessNetworkConnection = require('composer-client').BusinessNetworkConnection;
  const bizNetworkConnection = new BusinessNetworkConnection();
  bizNetworkConnection.connect(process.env.CARD_NAME)
    .then((bizNetworkDefinition) => {
	var query = bizNetworkConnection.buildQuery('SELECT info.glennengstrand.Inbound WHERE (recipient == _$broadcaster)');
	bizNetworkConnection.query(query, { broadcaster: 'resource:info.glennengstrand.Broadcaster#PID:' + args.id.value })
	  .then((results) => {
	      const retVal = results.map(function(result) {
		  return {
		      "from": null, 
		      "to": args.id.value,
		      "occurred": result.created, 
		      "subject": result.subject, 
		      "story": result.story
		  };
	      });
	      callback(null, retVal);
	  });
    });
}
 .then(() => {
     businessNetworkConnection = new BusinessNetworkConnection({ fs: bfs_fs });
     events = [];
     businessNetworkConnection.on('event', (event) => {
         events.push(event);
     });
     return businessNetworkConnection.connect('defaultProfile', 'my-network', identity.userID, identity.userSecret);
 });
Пример #5
0
            .then(() => {

                // Create and establish a business network connection
                businessNetworkConnection = new BusinessNetworkConnection({
                    fs: bfs_fs
                });                
                return businessNetworkConnection.connect('defaultProfile', 'decentralized-energy-network', 'admin', 'adminpw');

            })
 /**
  * Reconnect using a different identity.
  * @param {String} cardName The name of the card for the identity to use
  */
 async function useIdentity(cardName) {
     await businessNetworkConnection.disconnect();
     businessNetworkConnection = new BusinessNetworkConnection({ cardStore: cardStore });
     events = [];
     businessNetworkConnection.on('event', (event) => {
         events.push(event);
     });
     await businessNetworkConnection.connect(cardName);
     factory = businessNetworkConnection.getBusinessNetwork().getFactory();
 }
            .then(() => {

                // Create and establish a business network connection
                businessNetworkConnection = new BusinessNetworkConnection({ fs: bfs_fs });
                events = [];
                businessNetworkConnection.on('event', (event) => {
                    events.push(event);
                });
                return businessNetworkConnection.connect('defaultProfile', 'my-network', 'admin', 'adminpw');

            })
Пример #8
0
 .then((modelSchemas) => {
     console.log('Generated schemas for all types in business network definition');
     console.log('Adding schemas for all types to Loopback ...');
     modelSchemas.forEach((modelSchema) => {
         let model = app.loopback.createModel(modelSchema);
         app.model(model, {
             dataSource: dataSource,
             public: true
         });
     });
     businessNetworkConnection = new BusinessNetworkConnection({ fs: bfs_fs });
     return businessNetworkConnection.connect('defaultProfile', 'bond-network', 'admin', 'Xurw3yU9zI0l');
 })
Пример #9
0
 .then((modelSchemas) => {
     console.log('Generated schemas for all types in business network definition');
     console.log('Adding schemas for all types to Loopback ...');
     modelSchemas.forEach((modelSchema) => {
         let model = app.loopback.createModel(modelSchema);
         app.model(model, {
             dataSource: dataSource,
             public: true
         });
     });
     businessNetworkConnection = new BusinessNetworkConnection({ cardStore });
     return businessNetworkConnection.connect('admin@bond-network');
 })
Пример #10
0
 it('should bind an identity and make it available for a ping request', async function () {
     const identityName = uuid.v4();
     const cardName = `${identityName}@systest-identities`;
     const { certificate, privateKey } = getNextIdentity();
     await client.bindIdentity(participant, certificate);
     const card = new IdCard({ businessNetwork: 'systest-identities', userName: identityName }, TestUtil.getCurrentConnectionProfile());
     card.setCredentials({ certificate, privateKey });
     const admin = new AdminConnection({ cardStore });
     await admin.importCard(cardName, card);
     client = new BusinessNetworkConnection({ cardStore });
     await client.connect(cardName);
     const result = await client.ping();
     result.participant.should.equal(participant.getFullyQualifiedIdentifier());
 });
Пример #11
0
 it('should bind an identity and make the identity available for transaction processor functions', async function () {
     const identityName = uuid.v4();
     const cardName = `${identityName}@systest-identities`;
     const { certificate, privateKey } = getNextIdentity();
     await client.bindIdentity(participant, certificate);
     const card = new IdCard({ businessNetwork: 'systest-identities', userName: identityName }, TestUtil.getCurrentConnectionProfile());
     card.setCredentials({ certificate, privateKey });
     const admin = new AdminConnection({ cardStore });
     await admin.importCard(cardName, card);
     client = new BusinessNetworkConnection({ cardStore });
     await client.connect(cardName);
     const factory = client.getBusinessNetwork().getFactory();
     const transaction = factory.newTransaction('systest.identities', 'TestGetCurrentIdentity');
     await client.submitTransaction(transaction);
 });
Пример #12
0
 .then((bnd) => {
     ser = bnd.getSerializer();
     //
     // v0.14
     // return businessNetworkConnection.connect(config.composer.connectionProfile, config.composer.network, req.body.userID, req.body.secret)
     //
     // v0.15
     console.log(method+' req.body.userID is: '+req.body.userID );
     return businessNetworkConnection.connect(req.body.userID)
     .then(() => {
         return businessNetworkConnection.query('selectOrders')
         .then((orders) => {
             allOrders = new Array();
             for (let each in orders)
                 { (function (_idx, _arr)
                     {
                     let _jsn = ser.toJSON(_arr[_idx]);
                     _jsn.id = _arr[_idx].orderNumber;
                     allOrders.push(_jsn);
                 })(each, orders);
             }
             res.send({'result': 'success', 'orders': allOrders});
         })
         .catch((error) => {console.log('selectOrders failed ', error);
             res.send({'result': 'failed', 'error': 'selectOrders: '+error.message});
         });
     })
     .catch((error) => {console.log('businessNetwork connect failed ', error);
         res.send({'result': 'failed', 'error': 'businessNetwork: '+error.message});
     });
 })
    /**
     * Disconnects from the Hyperledger Fabric.
     * @return {Promise} A promise that will be resolved when the connection is
     * terminated.
     */
    disconnect () {
        debug('disconnect');

        // Remove all registered event listeners.
        this.businessNetworkConnection.removeAllListeners();

        // Now disconnect from the business network.
        return this.businessNetworkConnection.disconnect()
            .then(() => {
                this.connected = this.connecting = false;
            })
            .catch((error) => {
                this.connected = this.connecting = false;
                throw error;
            });
    }
Пример #14
0
    .then((bizNetworkDefinition) => {
	var query = bizNetworkConnection.buildQuery('SELECT info.glennengstrand.Inbound WHERE (recipient == _$broadcaster)');
	bizNetworkConnection.query(query, { broadcaster: 'resource:info.glennengstrand.Broadcaster#PID:' + args.id.value })
	  .then((results) => {
	      const retVal = results.map(function(result) {
		  return {
		      "from": null, 
		      "to": args.id.value,
		      "occurred": result.created, 
		      "subject": result.subject, 
		      "story": result.story
		  };
	      });
	      callback(null, retVal);
	  });
    });
Пример #15
0
    beforeEach(async () => {
        // Generate a business network definition from the project directory.
        let businessNetworkDefinition = await BusinessNetworkDefinition.fromDirectory(path.resolve(__dirname, '..'));
        businessNetworkName = businessNetworkDefinition.getName();
        await adminConnection.install(businessNetworkDefinition);
        const startOptions = {
            networkAdmins: [
                {
                    userName: '******',
                    enrollmentSecret: 'adminpw'
                }
            ]
        };
        const adminCards = await adminConnection.start(businessNetworkName, businessNetworkDefinition.getVersion(), startOptions);
        await adminConnection.importCard(adminCardName, adminCards.get('admin'));

        // Create and establish a business network connection
        businessNetworkConnection = new BusinessNetworkConnection({ cardStore: cardStore });
        events = [];
        businessNetworkConnection.on('event', event => {
            events.push(event);
        });
        await businessNetworkConnection.connect(adminCardName);

        // Get the factory for the business network.
        factory = businessNetworkConnection.getBusinessNetwork().getFactory();

        const participantRegistry = await businessNetworkConnection.getParticipantRegistry(participantNS);
        // Create the participants.
        const alice = factory.newResource(namespace, participantType, '*****@*****.**');
        alice.firstName = 'Alice';
        alice.lastName = 'A';

        const bob = factory.newResource(namespace, participantType, '*****@*****.**');
        bob.firstName = 'Bob';
        bob.lastName = 'B';

        participantRegistry.addAll([alice, bob]);

        const assetRegistry = await businessNetworkConnection.getAssetRegistry(assetNS);
        // Create the assets.
        const asset1 = factory.newResource(namespace, assetType, '1');
        asset1.owner = factory.newRelationship(namespace, participantType, '*****@*****.**');
        asset1.value = '10';

        const asset2 = factory.newResource(namespace, assetType, '2');
        asset2.owner = factory.newRelationship(namespace, participantType, '*****@*****.**');
        asset2.value = '20';

        assetRegistry.addAll([asset1, asset2]);

        // Issue the identities.
        let identity = await businessNetworkConnection.issueIdentity(participantNS + '#alice@email.com', 'alice1');
        await importCardForIdentity(aliceCardName, identity);
        identity = await businessNetworkConnection.issueIdentity(participantNS + '#bob@email.com', 'bob1');
        await importCardForIdentity(bobCardName, identity);
    });
Пример #16
0
 .then(() => {
     return businessNetworkConnection.submitTransaction(createNew)
     .then(() => {console.log(' order '+orderNo+' successfully added');
         res.send({'result': ' order '+orderNo+' successfully added'});
     })
     .catch((error) => {
         if (error.message.search('MVCC_READ_CONFLICT') !== -1)
             {console.log(orderNo+' retrying assetRegistry.add for: '+orderNo);
             svc.loadTransaction(req.app.locals, createNew, orderNo, businessNetworkConnection);
         }
         else
         {console.log(orderNo+' submitTransaction failed with text: ',error.message);}
     });
 })
Пример #17
0
    .then((bizNetworkDefinition) => {
	const factory = bizNetworkDefinition.getFactory();
	const id = generateId();
	bizNetworkConnection.getParticipantRegistry('info.glennengstrand.Inbound')
	  .then((inboundRegistry) => {
	      var inb = factory.newResource('info.glennengstrand', 'Inbound', id);
	      inb.created = new Date();
	      inb.subject = feedItem.subject;
	      inb.story = feedItem.story;
	      inb.recipient = factory.newRelationship('info.glennengstrand', 'Broadcaster', feedItem.to);
	      inboundRegistry.add(inb)
		.then((result) => {
		    callback(null, feedItem);
		});
	  });
    });
Пример #18
0
exports.getMyOrders = function (req, res, next) {
    // connect to the network
    let method = 'getMyOrders';
    console.log(method+' req.body.userID is: '+req.body.userID );
    let allOrders = new Array();
    let businessNetworkConnection;
    if (svc.m_connection === null) {svc.createMessageSocket();}
    let ser;
    let archiveFile = fs.readFileSync(path.join(path.dirname(require.main.filename),'network','dist','zerotoblockchain-network.bna'));
    businessNetworkConnection = new BusinessNetworkConnection();
    return BusinessNetworkDefinition.fromArchive(archiveFile)
    .then((bnd) => {
        ser = bnd.getSerializer();
        //
        // v0.14
        // return businessNetworkConnection.connect(config.composer.connectionProfile, config.composer.network, req.body.userID, req.body.secret)
        //
        // v0.15
        console.log(method+' req.body.userID is: '+req.body.userID );
        return businessNetworkConnection.connect(req.body.userID)
        .then(() => {
            return businessNetworkConnection.query('selectOrders')
            .then((orders) => {
                allOrders = new Array();
                for (let each in orders)
                    { (function (_idx, _arr)
                        {
                        let _jsn = ser.toJSON(_arr[_idx]);
                        _jsn.id = _arr[_idx].orderNumber;
                        allOrders.push(_jsn);
                    })(each, orders);
                }
                res.send({'result': 'success', 'orders': allOrders});
            })
            .catch((error) => {console.log('selectOrders failed ', error);
                res.send({'result': 'failed', 'error': 'selectOrders: '+error.message});
            });
        })
        .catch((error) => {console.log('businessNetwork connect failed ', error);
            res.send({'result': 'failed', 'error': 'businessNetwork: '+error.message});
        });
    })
    .catch((error) => {console.log('create bnd from archive failed ', error);
        res.send({'result': 'failed', 'error': 'create bnd from archive: '+error.message});
    });
};
Пример #19
0
 .then(() => {
     return businessNetworkConnection.query('selectOrders')
     .then((orders) => {
         allOrders = new Array();
         for (let each in orders)
             { (function (_idx, _arr)
                 {
                 let _jsn = ser.toJSON(_arr[_idx]);
                 _jsn.id = _arr[_idx].orderNumber;
                 allOrders.push(_jsn);
             })(each, orders);
         }
         res.send({'result': 'success', 'orders': allOrders});
     })
     .catch((error) => {console.log('selectOrders failed ', error);
         res.send({'result': 'failed', 'error': 'selectOrders: '+error.message});
     });
 })
 /**
  * Connect to the Business Network
  * @return {Promise} A promise that is resolved when the connector has connected.
  */
 connect() {
     debug('connect');
     this.connecting = true;
     this.connected = false;
     this.connectionPromise = this.businessNetworkConnection.connect(this.settings.card)
         .then((businessNetwork) => {
             this.businessNetwork = businessNetwork;
             this.serializer = this.businessNetwork.getSerializer();
             this.modelManager = this.businessNetwork.getModelManager();
             this.introspector = this.businessNetwork.getIntrospector();
         })
         .then(() => {
             this.connected = true;
             this.connecting = false;
             return this.businessNetworkConnection;
         })
         .catch((error) => {
             this.connected = this.connecting = false;
             throw error;
         });
     return this.connectionPromise;
 }
Пример #21
0
exports.addOrder = function (req, res, next) {
    let method = 'addOrder';
    console.log(method+' req.body.buyer is: '+req.body.buyer );
    let businessNetworkConnection;
    let factory;
    let ts = Date.now();
    let orderNo = req.body.buyer.replace(/@/, '').replace(/\./, '')+ts;
    if (svc.m_connection === null) {svc.createMessageSocket();}
    businessNetworkConnection = new BusinessNetworkConnection();
    //
    // v0.14
    // return businessNetworkConnection.connect(config.composer.connectionProfile, config.composer.network, req.body.buyer, req.body.secret)
    //
    // v0.15
    return businessNetworkConnection.connect(req.body.buyer)
    //return businessNetworkConnection.connect(config.composer.adminCard)
    .then(() => {
        factory = businessNetworkConnection.getBusinessNetwork().getFactory();
        let order = factory.newResource(NS, 'Order', orderNo);
        order = svc.createOrderTemplate(order);
        order.amount = 0;
        order.orderNumber = orderNo;
        order.buyer = factory.newRelationship(NS, 'Buyer', req.body.buyer);
        order.seller = factory.newRelationship(NS, 'Seller', req.body.seller);
        order.provider = factory.newRelationship(NS, 'Provider', 'noop@dummy');
        order.shipper = factory.newRelationship(NS, 'Shipper', 'noop@dummy');
        order.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
        for (let each in req.body.items)
        {(function(_idx, _arr)
            {   _arr[_idx].description = _arr[_idx].itemDescription;
            order.items.push(JSON.stringify(_arr[_idx]));
            order.amount += parseInt(_arr[_idx].extendedPrice);
        })(each, req.body.items);
        }
        // create the buy transaction
        const createNew = factory.newTransaction(NS, 'CreateOrder');

        createNew.order = factory.newRelationship(NS, 'Order', order.$identifier);
        createNew.buyer = factory.newRelationship(NS, 'Buyer', req.body.buyer);
        createNew.seller = factory.newRelationship(NS, 'Seller', req.body.seller);
        createNew.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
        createNew.amount = order.amount;
        // add the order to the asset registry.
        return businessNetworkConnection.getAssetRegistry(NS+'.Order')
        .then((assetRegistry) => {
            return assetRegistry.add(order)
                .then(() => {
                    return businessNetworkConnection.submitTransaction(createNew)
                    .then(() => {console.log(' order '+orderNo+' successfully added');
                        res.send({'result': ' order '+orderNo+' successfully added'});
                    })
                    .catch((error) => {
                        if (error.message.search('MVCC_READ_CONFLICT') !== -1)
                            {console.log(orderNo+' retrying assetRegistry.add for: '+orderNo);
                            svc.loadTransaction(req.app.locals, createNew, orderNo, businessNetworkConnection);
                        }
                        else
                        {console.log(orderNo+' submitTransaction failed with text: ',error.message);}
                    });
                })
                .catch((error) => {
                    if (error.message.search('MVCC_READ_CONFLICT') !== -1)
                        {console.log(orderNo+' retrying assetRegistry.add for: '+orderNo);
                        svc.loadTransaction(req.app.locals, createNew, orderNo, businessNetworkConnection);
                    }
                    else
                    {
                        console.log(orderNo+' assetRegistry.add failed: ',error.message);
                        res.send({'result': 'failed', 'error':' order '+orderNo+' getAssetRegistry failed '+error.message});
                    }
                });
        })
        .catch((error) => {
            console.log(orderNo+' getAssetRegistry failed: ',error.message);
            res.send({'result': 'failed', 'error':' order '+orderNo+' getAssetRegistry failed '+error.message});
        });
    })
    .catch((error) => {
        console.log(method + ' : '+orderNo+' business network connection failed: text',error.message);
        res.send({'result': 'failed', 'error':' order '+orderNo+' add failed on on business network connection '+error.message});
    });
};
Пример #22
0
 .then((result) => {
     app = result.app;
     businessNetworkConnection = new BusinessNetworkConnection({ cardStore });
     return businessNetworkConnection.connect('admin@bond-network');
 })
Пример #23
0
 before(function () {
     businessNetworkConnection = new BusinessNetworkConnection();
     return businessNetworkConnection.connect('admin@zerotoblockchain-network');
 });
Пример #24
0
 .then(function() {
     businessNetworkConnection = new BusinessNetworkConnection({ fs: bfs_fs });
     return businessNetworkConnection.connect('defaultProfile', '<%= appname%>', 'admin', 'Xurw3yU9zI0l');
 });
Пример #25
0
 .then(() => {
     businessNetworkConnection = new BusinessNetworkConnection({
         fs: bfs_fs
     });                
     return businessNetworkConnection.connect('defaultProfile', 'decentralized-energy-network', identity.userID, identity.userSecret);
 });
Пример #26
0
 .then((result) => {
     app = result.app;
     businessNetworkConnection = new BusinessNetworkConnection({ fs: bfs_fs });
     return businessNetworkConnection.connect('defaultProfile', 'bond-network', 'admin', 'Xurw3yU9zI0l');
 })
Пример #27
0
 .then((result) => {
     httpServer = result.server;
     businessNetworkConnection = new BusinessNetworkConnection({ cardStore });
     return businessNetworkConnection.connect('admin@bond-network');
 });
Пример #28
0
exports.orderAction = function (req, res, next) {
    let method = 'orderAction';
    console.log(method+' req.body.participant is: '+req.body.participant );
    if ((req.body.action === 'Dispute') && (typeof(req.body.reason) !== 'undefined') && (req.body.reason.length > 0) )
    {/*let reason = req.body.reason;*/}
    else {
        if ((req.body.action === 'Dispute') && ((typeof(req.body.reason) === 'undefined') || (req.body.reason.length <1) ))
            {res.send({'result': 'failed', 'error': 'no reason provided for dispute'});}
    }
    if (svc.m_connection === null) {svc.createMessageSocket();}
    let businessNetworkConnection;
    let updateOrder;
    businessNetworkConnection = new BusinessNetworkConnection();
    //
    // v0.14
    // return businessNetworkConnection.connect(config.composer.connectionProfile, config.composer.network, req.body.participant, req.body.secret)
    //
    // v0.15
    return businessNetworkConnection.connect(req.body.participant)
    .then(() => {
        return businessNetworkConnection.getAssetRegistry(NS+'.Order')
        .then((assetRegistry) => {
            return assetRegistry.get(req.body.orderNo)
            .then((order) => {
                let factory = businessNetworkConnection.getBusinessNetwork().getFactory();
                order.status = req.body.action;
                switch (req.body.action)
                {
                case 'Pay':
                    console.log('Pay entered');
                    updateOrder = factory.newTransaction(NS, 'Pay');
                    updateOrder.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    break;
                case 'Dispute':
                    console.log('Dispute entered');
                    updateOrder = factory.newTransaction(NS, 'Dispute');
                    updateOrder.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
                    updateOrder.buyer = factory.newRelationship(NS, 'Buyer', order.buyer.$identifier);
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    updateOrder.dispute = req.body.reason;
                    break;
                case 'Purchase':
                    console.log('Purchase entered');
                    updateOrder = factory.newTransaction(NS, 'Buy');
                    updateOrder.buyer = factory.newRelationship(NS, 'Buyer', order.buyer.$identifier);
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    break;
                case 'Order From Supplier':
                    console.log('Order from Supplier entered for '+order.orderNumber+ ' inbound id: '+ req.body.participant+' with order.seller as: '+order.seller.$identifier);
                    updateOrder = factory.newTransaction(NS, 'OrderFromSupplier');
                    updateOrder.provider = factory.newRelationship(NS, 'Provider', req.body.provider);
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    break;
                case 'Request Payment':
                    console.log('Request Payment entered');
                    updateOrder = factory.newTransaction(NS, 'RequestPayment');
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    updateOrder.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
                    break;
                case 'Refund':
                    console.log('Refund Payment entered');
                    updateOrder = factory.newTransaction(NS, 'Refund');
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    updateOrder.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
                    updateOrder.refund = req.body.reason;
                    break;
                case 'Resolve':
                    console.log('Resolve entered');
                    updateOrder = factory.newTransaction(NS, 'Resolve');
                    updateOrder.buyer = factory.newRelationship(NS, 'Buyer', order.buyer.$identifier);
                    updateOrder.shipper = factory.newRelationship(NS, 'Shipper', order.shipper.$identifier);
                    updateOrder.provider = factory.newRelationship(NS, 'Provider', order.provider.$identifier);
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    updateOrder.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
                    updateOrder.resolve = req.body.reason;
                    break;
                case 'Request Shipping':
                    console.log('Request Shipping entered');
                    updateOrder = factory.newTransaction(NS, 'RequestShipping');
                    updateOrder.shipper = factory.newRelationship(NS, 'Shipper', req.body.shipper);
                    updateOrder.provider = factory.newRelationship(NS, 'Provider', order.provider.$identifier);
                    break;
                case 'Update Delivery Status':
                    console.log('Update Delivery Status');
                    updateOrder = factory.newTransaction(NS, 'Delivering');
                    updateOrder.shipper = factory.newRelationship(NS, 'Shipper', req.body.participant);
                    updateOrder.deliveryStatus = req.body.delivery;
                    break;
                case 'Delivered':
                    console.log('Delivered entered');
                    updateOrder = factory.newTransaction(NS, 'Deliver');
                    updateOrder.shipper = factory.newRelationship(NS, 'Shipper', req.body.participant);
                    break;
                case 'BackOrder':
                    console.log('BackOrder entered');
                    updateOrder = factory.newTransaction(NS, 'BackOrder');
                    updateOrder.backorder = req.body.reason;
                    updateOrder.provider = factory.newRelationship(NS, 'Provider', order.provider.$identifier);
                    updateOrder.backorder = req.body.reason;
                    break;
                case 'Authorize Payment':
                    console.log('Authorize Payment entered');
                    updateOrder = factory.newTransaction(NS, 'AuthorizePayment');
                    updateOrder.buyer = factory.newRelationship(NS, 'Buyer', order.buyer.$identifier);
                    updateOrder.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
                    break;
                case 'Cancel':
                    console.log('Cancel entered');
                    updateOrder = factory.newTransaction(NS, 'OrderCancel');
                    updateOrder.buyer = factory.newRelationship(NS, 'Buyer', order.buyer.$identifier);
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    break;
                default :
                    console.log('default entered for action: '+req.body.action);
                    res.send({'result': 'failed', 'error':' order '+req.body.orderNo+' unrecognized request: '+req.body.action});
                }
                updateOrder.order = factory.newRelationship(NS, 'Order', order.$identifier);
                return businessNetworkConnection.submitTransaction(updateOrder)
                .then(() => {
                    console.log(' order '+req.body.orderNo+' successfully updated to '+req.body.action);
                    res.send({'result': ' order '+req.body.orderNo+' successfully updated to '+req.body.action});
                })
                .catch((error) => {
                    if (error.message.search('MVCC_READ_CONFLICT') !== -1)
                        {console.log(' retrying assetRegistry.update for: '+req.body.orderNo);
                        svc.loadTransaction(req.app.locals, updateOrder, req.body.orderNo, businessNetworkConnection);
                    }
                    else
                    {console.log(req.body.orderNo+' submitTransaction to update status to '+req.body.action+' failed with text: ',error.message);}
                });

            })
            .catch((error) => {
                console.log('Registry Get Order failed: '+error.message);
                res.send({'result': 'failed', 'error': 'Registry Get Order failed: '+error.message});
            });
        })
        .catch((error) => {console.log('Get Asset Registry failed: '+error.message);
            res.send({'result': 'failed', 'error': 'Get Asset Registry failed: '+error.message});
        });
    })
    .catch((error) => {console.log('Business Network Connect failed: '+error.message);
        res.send({'result': 'failed', 'error': 'Get Asset Registry failed: '+error.message});
    });
};
Пример #29
0
    .then(() => {
        factory = businessNetworkConnection.getBusinessNetwork().getFactory();
        let order = factory.newResource(NS, 'Order', orderNo);
        order = svc.createOrderTemplate(order);
        order.amount = 0;
        order.orderNumber = orderNo;
        order.buyer = factory.newRelationship(NS, 'Buyer', req.body.buyer);
        order.seller = factory.newRelationship(NS, 'Seller', req.body.seller);
        order.provider = factory.newRelationship(NS, 'Provider', 'noop@dummy');
        order.shipper = factory.newRelationship(NS, 'Shipper', 'noop@dummy');
        order.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
        for (let each in req.body.items)
        {(function(_idx, _arr)
            {   _arr[_idx].description = _arr[_idx].itemDescription;
            order.items.push(JSON.stringify(_arr[_idx]));
            order.amount += parseInt(_arr[_idx].extendedPrice);
        })(each, req.body.items);
        }
        // create the buy transaction
        const createNew = factory.newTransaction(NS, 'CreateOrder');

        createNew.order = factory.newRelationship(NS, 'Order', order.$identifier);
        createNew.buyer = factory.newRelationship(NS, 'Buyer', req.body.buyer);
        createNew.seller = factory.newRelationship(NS, 'Seller', req.body.seller);
        createNew.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
        createNew.amount = order.amount;
        // add the order to the asset registry.
        return businessNetworkConnection.getAssetRegistry(NS+'.Order')
        .then((assetRegistry) => {
            return assetRegistry.add(order)
                .then(() => {
                    return businessNetworkConnection.submitTransaction(createNew)
                    .then(() => {console.log(' order '+orderNo+' successfully added');
                        res.send({'result': ' order '+orderNo+' successfully added'});
                    })
                    .catch((error) => {
                        if (error.message.search('MVCC_READ_CONFLICT') !== -1)
                            {console.log(orderNo+' retrying assetRegistry.add for: '+orderNo);
                            svc.loadTransaction(req.app.locals, createNew, orderNo, businessNetworkConnection);
                        }
                        else
                        {console.log(orderNo+' submitTransaction failed with text: ',error.message);}
                    });
                })
                .catch((error) => {
                    if (error.message.search('MVCC_READ_CONFLICT') !== -1)
                        {console.log(orderNo+' retrying assetRegistry.add for: '+orderNo);
                        svc.loadTransaction(req.app.locals, createNew, orderNo, businessNetworkConnection);
                    }
                    else
                    {
                        console.log(orderNo+' assetRegistry.add failed: ',error.message);
                        res.send({'result': 'failed', 'error':' order '+orderNo+' getAssetRegistry failed '+error.message});
                    }
                });
        })
        .catch((error) => {
            console.log(orderNo+' getAssetRegistry failed: ',error.message);
            res.send({'result': 'failed', 'error':' order '+orderNo+' getAssetRegistry failed '+error.message});
        });
    })
Пример #30
0
            .then((order) => {
                let factory = businessNetworkConnection.getBusinessNetwork().getFactory();
                order.status = req.body.action;
                switch (req.body.action)
                {
                case 'Pay':
                    console.log('Pay entered');
                    updateOrder = factory.newTransaction(NS, 'Pay');
                    updateOrder.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    break;
                case 'Dispute':
                    console.log('Dispute entered');
                    updateOrder = factory.newTransaction(NS, 'Dispute');
                    updateOrder.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
                    updateOrder.buyer = factory.newRelationship(NS, 'Buyer', order.buyer.$identifier);
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    updateOrder.dispute = req.body.reason;
                    break;
                case 'Purchase':
                    console.log('Purchase entered');
                    updateOrder = factory.newTransaction(NS, 'Buy');
                    updateOrder.buyer = factory.newRelationship(NS, 'Buyer', order.buyer.$identifier);
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    break;
                case 'Order From Supplier':
                    console.log('Order from Supplier entered for '+order.orderNumber+ ' inbound id: '+ req.body.participant+' with order.seller as: '+order.seller.$identifier);
                    updateOrder = factory.newTransaction(NS, 'OrderFromSupplier');
                    updateOrder.provider = factory.newRelationship(NS, 'Provider', req.body.provider);
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    break;
                case 'Request Payment':
                    console.log('Request Payment entered');
                    updateOrder = factory.newTransaction(NS, 'RequestPayment');
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    updateOrder.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
                    break;
                case 'Refund':
                    console.log('Refund Payment entered');
                    updateOrder = factory.newTransaction(NS, 'Refund');
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    updateOrder.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
                    updateOrder.refund = req.body.reason;
                    break;
                case 'Resolve':
                    console.log('Resolve entered');
                    updateOrder = factory.newTransaction(NS, 'Resolve');
                    updateOrder.buyer = factory.newRelationship(NS, 'Buyer', order.buyer.$identifier);
                    updateOrder.shipper = factory.newRelationship(NS, 'Shipper', order.shipper.$identifier);
                    updateOrder.provider = factory.newRelationship(NS, 'Provider', order.provider.$identifier);
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    updateOrder.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
                    updateOrder.resolve = req.body.reason;
                    break;
                case 'Request Shipping':
                    console.log('Request Shipping entered');
                    updateOrder = factory.newTransaction(NS, 'RequestShipping');
                    updateOrder.shipper = factory.newRelationship(NS, 'Shipper', req.body.shipper);
                    updateOrder.provider = factory.newRelationship(NS, 'Provider', order.provider.$identifier);
                    break;
                case 'Update Delivery Status':
                    console.log('Update Delivery Status');
                    updateOrder = factory.newTransaction(NS, 'Delivering');
                    updateOrder.shipper = factory.newRelationship(NS, 'Shipper', req.body.participant);
                    updateOrder.deliveryStatus = req.body.delivery;
                    break;
                case 'Delivered':
                    console.log('Delivered entered');
                    updateOrder = factory.newTransaction(NS, 'Deliver');
                    updateOrder.shipper = factory.newRelationship(NS, 'Shipper', req.body.participant);
                    break;
                case 'BackOrder':
                    console.log('BackOrder entered');
                    updateOrder = factory.newTransaction(NS, 'BackOrder');
                    updateOrder.backorder = req.body.reason;
                    updateOrder.provider = factory.newRelationship(NS, 'Provider', order.provider.$identifier);
                    updateOrder.backorder = req.body.reason;
                    break;
                case 'Authorize Payment':
                    console.log('Authorize Payment entered');
                    updateOrder = factory.newTransaction(NS, 'AuthorizePayment');
                    updateOrder.buyer = factory.newRelationship(NS, 'Buyer', order.buyer.$identifier);
                    updateOrder.financeCo = factory.newRelationship(NS, 'FinanceCo', financeCoID);
                    break;
                case 'Cancel':
                    console.log('Cancel entered');
                    updateOrder = factory.newTransaction(NS, 'OrderCancel');
                    updateOrder.buyer = factory.newRelationship(NS, 'Buyer', order.buyer.$identifier);
                    updateOrder.seller = factory.newRelationship(NS, 'Seller', order.seller.$identifier);
                    break;
                default :
                    console.log('default entered for action: '+req.body.action);
                    res.send({'result': 'failed', 'error':' order '+req.body.orderNo+' unrecognized request: '+req.body.action});
                }
                updateOrder.order = factory.newRelationship(NS, 'Order', order.$identifier);
                return businessNetworkConnection.submitTransaction(updateOrder)
                .then(() => {
                    console.log(' order '+req.body.orderNo+' successfully updated to '+req.body.action);
                    res.send({'result': ' order '+req.body.orderNo+' successfully updated to '+req.body.action});
                })
                .catch((error) => {
                    if (error.message.search('MVCC_READ_CONFLICT') !== -1)
                        {console.log(' retrying assetRegistry.update for: '+req.body.orderNo);
                        svc.loadTransaction(req.app.locals, updateOrder, req.body.orderNo, businessNetworkConnection);
                    }
                    else
                    {console.log(req.body.orderNo+' submitTransaction to update status to '+req.body.action+' failed with text: ',error.message);}
                });

            })