Guest User

Untitled

a guest
Apr 24th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. pragma solidity ^0.4.21;
  2.  
  3. contract SeasonFactory {
  4. address public owner;
  5. address[] public seasons;
  6.  
  7. event SeasonCreated(uint64 indexed beginTicks, uint64 indexed endTicks, address season);
  8.  
  9. function SeasonFactory() public {
  10. owner = msg.sender;
  11. }
  12.  
  13. function newSeason(uint64 beginTicks, uint64 endTicks) public restricted {
  14. require(beginTicks < endTicks);
  15. require(seasons.length == 0 || Season(seasons[seasons.length - 1]).period().endTicks() < beginTicks);
  16.  
  17. Season season = new Season(owner, beginTicks, endTicks);
  18. seasons.push(season);
  19. emit SeasonCreated(beginTicks, endTicks, season);
  20. }
  21.  
  22. function getSeasonsCount() public view returns(uint) {
  23. return seasons.length;
  24. }
  25.  
  26. function getSeasonForDate(uint64 ticks) public view returns(address) {
  27. for (uint i = seasons.length - 1; i >= 0; i--) {
  28. Season season = Season(seasons[i]);
  29. if (ticks >= season.period.beginTicks() && ticks <= season.period.endTicks())
  30. return season;
  31. }
  32. return 0;
  33. }
  34.  
  35. modifier restricted {
  36. require(owner == msg.sender);
  37. _;
  38. }
  39. }
  40.  
  41. contract Season {
  42. address public owner;
  43. SharedTypes.DateRange public period;
  44.  
  45. function Season(address owner_, uint64 beginTicks, uint64 endTicks) public {
  46. owner = owner_;
  47. period = SharedTypes.DateRange(beginTicks, endTicks);
  48. }
  49. }
  50.  
  51. library SharedTypes {
  52. struct DateRange {
  53. uint64 beginTicks;
  54. uint64 endTicks;
  55. }
  56. }
Add Comment
Please, Sign In to add comment