pragma solidity ^0.4.0;
contract fund{
struct Needer{
address neederAddress;
uint goal;
uint sum;
uint funderNum;
mapping(uint => Funder) funderList;
}
struct Funder{
address funderAddress;
uint money;
}
uint neederNum;
mapping(uint => Needer) neederList;
function newNeeder(address _address, uint _goal) public {
neederNum++;
neederList[neederNum] = Needer(_address, _goal, 0, 0);
}
function contribute(address _funderAddress, uint _neederId) public payable{
Needer storage needer = neederList[_neederId];
needer.sum += msg.value;
needer.funderNum++;
needer.funderList[needer.funderNum] = Funder(_funderAddress, msg.value);
}
function transfer(uint _neederId) public payable {
Needer storage needer = neederList[_neederId];
if(needer.sum >= needer.goal){
needer.neederAddress.transfer(needer.sum);
}
}
}