pragma solidity ^0.4.24; contract DistributionEntities { // Registered addresses mapping(address => bool) isRegisteredEntity; mapping(address => Inventory) addressInventory; // Distribution entities struct Entity { address ID; uint8 EntityType; bool Active; } // Opioids inventory struct Inventory { address ID; uint code; string name; uint StockIn; uint StockOut; } // Entities array Entity[] private entities; // Inventory array Inventory[] private inventories; // Health Institutions fund the contract directly function () public payable { } function createEntity(uint8 _EntityType) public { require(!isRegisteredEntity[msg.sender]); // entities.push(Entity(msg.sender, _EntityType, true)); isRegisteredEntity[msg.sender] = true; } // Authorized addresses only function getContractBalance() public view returns (uint) { return address(this).balance; } // Fund Distribution Entities from the contract if active and <= limit function fundEntities(uint limitEth, uint fundsEth) public { uint limit = limitEth * 1e18; uint funds = fundsEth * 1e18; for (uint i = 0; i < entities.length; i++) { if ( entities[i].Active && entities[i].ID.balance <= limit && address(this).balance >= funds ) entities[i].ID.transfer(funds); } } }
0.4.24