Skip to content

Instantly share code, notes, and snippets.

@rpaskin
Last active August 26, 2022 16:53
Show Gist options
  • Save rpaskin/5c1436555abdd1d2a52010d6407f1884 to your computer and use it in GitHub Desktop.
Save rpaskin/5c1436555abdd1d2a52010d6407f1884 to your computer and use it in GitHub Desktop.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
// @title Contrato para votar no melhor sanduíche
contract Votoiche {
// quem votou em qual grupo
mapping(address => uint8) public voto;
// número de votos de cada grupo
mapping(uint8 => uint) public numeroDeVotos;
// numero de grupos participantes
uint8 public numeroDeGrupos;
// data/hora inicial da votação
uint public quandoComecou;
// data/hora final para a votação
uint public quandoAcaba;
uint public totalDeVotos;
uint public maiorNumeroDeVotos;
uint8 public grupoVencedor;
constructor(uint8 _numeroDeGrupos, uint _timeLimitMinutes) {
numeroDeGrupos = _numeroDeGrupos;
quandoComecou = block.timestamp;
quandoAcaba = quandoComecou + (_timeLimitMinutes * 1 minutes);
}
function votar(uint8 _emQueGrupo) external {
require(_emQueGrupo > 0 && _emQueGrupo <= numeroDeGrupos, "Grupo invalido");
require(block.timestamp < quandoAcaba, "Votacao encerrada");
require(voto[msg.sender] == 0, "Voce ja votou");
// registra o voto
voto[msg.sender] = _emQueGrupo;
// aumenta o numero de votos
totalDeVotos++;
numeroDeVotos[_emQueGrupo]++;
if (numeroDeVotos[_emQueGrupo] > maiorNumeroDeVotos) {
maiorNumeroDeVotos = numeroDeVotos[_emQueGrupo];
grupoVencedor = _emQueGrupo;
}
}
}
// https://docs.soliditylang.org/en/v0.8.15/solidity-by-example.html
@rpaskin
Copy link
Author

rpaskin commented Aug 26, 2022

Corrigido bug no require de numero de grupo na hora da votação

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment