Guest User

Untitled

a guest
Jul 18th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. pragma solidity ^0.4.23;
  2. import "github.com/Arachnid/solidity-stringutils/strings.sol";
  3.  
  4. contract Polling{
  5. using strings for *;
  6.  
  7. struct Event{
  8. string name;
  9. mapping(uint => Options) options;
  10. uint optionsCount;
  11. mapping(address => bool) hasVoted;
  12. }
  13.  
  14. mapping(uint => Event) public events;
  15.  
  16. uint public eventCount;
  17.  
  18. struct Options{
  19. string name;
  20. uint vote;
  21. }
  22.  
  23. constructor() public{
  24. }
  25.  
  26. function addEvent(string _name, string _options) public{
  27. eventCount++;
  28. events[eventCount].name=_name;
  29.  
  30. strings.slice memory s = _options.toSlice();
  31. strings.slice memory delim = "-".toSlice();
  32. string[] memory parts = new string[](s.count(delim)+1);
  33. for(uint i = 0; i < parts.length; i++) {
  34. parts[i] = s.split(delim).toString();
  35. events[eventCount].options[i].name=parts[i];
  36. events[eventCount].optionsCount++;
  37. }
  38. }
  39.  
  40. function getOptions(uint id) public returns(string categories){
  41. categories=string(abi.encodePacked(events[id].options[0].name));
  42. for(uint i=1;i<events[id].optionsCount;i++){
  43. categories=string(abi.encodePacked(categories,",",events[id].options[i].name));
  44. }
  45. }
  46.  
  47. function vote(uint _eventId,uint _optionId) public{
  48. require(!events[_eventId].hasVoted[msg.sender]);
  49. events[_eventId].options[_optionId].vote++;
  50. events[_eventId].hasVoted[msg.sender]=true;
  51. }
  52.  
  53. function seeVotes(uint eventId,uint optionId) public returns (uint num){
  54. num = events[eventId].options[optionId].vote;
  55. }
  56.  
  57. function flashResult(uint _eventId) public returns(string winnerName,uint value){
  58. winnerName=events[_eventId].options[0].name;
  59. value=events[_eventId].options[0].vote;
  60.  
  61. for(uint i=1;i<events[_eventId].optionsCount;i++){
  62. if(events[_eventId].options[i].vote>value){
  63. value=events[_eventId].options[i].vote;
  64. winnerName=events[_eventId].options[i].name;
  65. }
  66. }
  67. }
  68. }
Add Comment
Please, Sign In to add comment