// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; contract CoopChain { address private owner; //The array is just for query all the Cooperatives inside the contract. string[] public cooperativesList; //The mapping is just for having a reference about which coop own the minute. Kinda left join... mapping(address => string) public cooperatives; //used on getCoop function struct Minute { uint id; address coop_address; string title; string document; string sign; } Minute public minute; mapping(uint => Minute) public coopMinutes; //Modifiers modifier isOwner() { require(owner == msg.sender, "Sender no autorizado."); _; } constructor() { owner = address(0x5B38Da6a701c568545dCfcB03FcB875f56beddC4); } function subscribeMinute(uint _id, string memory _title, string memory _document, string memory _hash, address _coop_address) public isOwner { Minute storage new_minute = minute; new_minute.id = _id; new_minute.title = _title; new_minute.document = _document; new_minute.sign = _hash; new_minute.coop_address = _coop_address; coopMinutes[_id] = new_minute; } //Coops management function addCoop(string memory _coop_name, address _coop_address) public isOwner { require(address(_coop_address) == _coop_address, "Parametro requerido o address invalida (coop address"); cooperatives[_coop_address] = _coop_name; cooperativesList.push(_coop_name); } function deleteCoop(string memory _coop_name, address _coop_address) public isOwner { require(address(_coop_address) == _coop_address, "Parametro requerido o address invalida (coop address"); cooperatives[_coop_address] = _coop_name; cooperativesList.push(_coop_name); } function getCoops() public view returns(string memory) { string memory _return = ""; for (uint i = 0; i < cooperativesList.length; i++) { _return = append(_return, cooperativesList[i]); } return _return; } function getCoop(address _coop_address) public view returns(string memory) { return cooperatives[_coop_address]; } function changeOwner(address newOwner) public isOwner { owner = newOwner; } //Helpers function append(string memory a, string memory b) internal pure returns (string memory) { return string(abi.encodePacked(a, ", ", b)); } }
0.7.1