How to work with Bigbom Freelancer DApp

Ropsten Contract Information

  • BBO: 0x1d893910d30edc1281d97aecfe10aefeabe0c41b
  • proxyAddressJob: 0x62aa93f9dffec25daf9d2955d468194e996e8c87
  • proxyAddressBid: 0x0ff11890ef301dfd0fb37e423930b391836c69c9
  • proxyAddressPayment: 0x7b7e6f2b02a48bd24b5b1554fafff5f70547ab0a

Example

  • Job Status 0 : init 1 : start 2 : finish 4 : reject 5 : claim Payment 9 : accept Payment
  • Create new job
let job = await BBFreelancerJob.at(proxyAddressJob);
var userA = '0x12312321';
var expiredTime = parseInt(Date.now()/1000) + 7 * 24 * 3600; // expired after 7 days
var totalTime = 3 * 24 * 3600;// requirement job done in 3 days 
// createJob: jobHash, expiredTime, totalTime,budget, category
var jobLog  = await job.createJob(jobHash, expiredTime, totalTime, 500e18, 'banner', {from:userA});
// check event logs

    
  • cancel job
     var jobLog  = await job.cancelJob(jobHash, {from:userA});
  • create bid
    var userB = '0x98988997897';
    let bid = await BBFreelancerBid.at(proxyAddressBid);
    var timeDone = 2 * 24 * 3600; //Freelancer suggest time done affer 2 days
    var jobLog  = await bid.createBid(jobHash, 400e18, timeDone,{from:userB});
  • cancel bid
    var jobLog  = await bid.cancelBid(jobHash, {from:userB});
  • acceept bid
    var userA = '0x12312321';
    let bid = await BBFreelancerBid.at(proxyAddressBid);
    let bbo = await BBO.at(BBOAddress);// abi BBO contract
    // approve bid's BBO amount to contract proxyAddressBid
    await bbo.approve(proxyAddressBid, 400e18, {from:userA});
    // call accept function
    var jobLog  = await bid.acceptBid(jobHash, accounts[1], {from:userA});
  • start working job
     var jobLog  = await job.startJob(jobHash, {from:userB});
  • finish job
     var jobLog  = await job.finishJob(jobHash, {from:userB});
  • reject payment
     let payment = await BBFreelancerPayment.at(proxyAddressPayment);
     var userA = '';
     var jobLog  = await payment.rejectPayment(jobHash, {from:userA});
  • claime payment
     let payment = await BBFreelancerPayment.at(proxyAddressPayment);
     var userB = '';
     var jobLog  = await payment.claimePayment(jobHash, {from:userB});
  • acceept payment
     var jobLog  = await payment.acceptPayment(jobHash, {from:userA});
  • get job by Hash
    let job = await BBFreelancerJob.at(proxyAddressJob);
    var jobLog  = await job.getJob(jobHash);
    // return [owner, expired, budget, cancel, status, freelancer]
  • view list job
//  event JobCreated(bytes jobHash, address indexed owner, uint created, string category);

BBFreelancerJob.at(proxyAddressJob).getPastEvents('JobCreated', {
    filter: {owner: '0x123', category: ['banner','it']},  // filter by owner, category
    fromBlock: 0, // should use recent number
    toBlock: 'latest'
}, function(error, events){
    //TODO
    });

Event lists:

  • event JobCreated(bytes jobHash, address indexed owner, uint expired, bytes32 indexed category, uint256 budget);
  • event JobCanceled(bytes jobHash);
  • event JobStarted(bytes jobHash);
  • event JobFinished(bytes jobHash);
  • event BidCreated(bytes jobHash, address indexed owner, uint256 bid, uint created);
  • event BidCanceled(bytes jobHash, address indexed owner);
  • event BidAccepted(bytes jobHash, address indexed freelancer);
  • event PaymentClaimed(bytes jobHash, address indexed sender);
  • event PaymentAccepted(bytes jobHash, address indexed sender);
  • event PaymentRejected(bytes jobHash, address indexed sender);