public function cumprir()
 {
     $realizacoes = $this->usuario->getRealizacoes();
     $realizacao = null;
     foreach ($realizacoes as $r) {
         if ($r->getTarefa() == $this->tarefa) {
             $realizacao = $r;
         }
     }
     if ($this->usuario->pagarEnergia($this->tarefa->getCusto())) {
         if (is_null($realizacao)) {
             $realizacao = new Realizacao();
             $realizacao->setTarefa($this->tarefa);
             $this->usuario->addRealizacao($realizacao);
         }
         if (count($this->tarefa->getRequisitos()) > 0) {
             $requisitos = $this->tarefa->getRequisitos();
             foreach ($requisitos as $requisito) {
                 $requisito->cumprir($this->usuario);
             }
         }
         $realizacao->setExecucao($realizacao->getExecucao() + 1);
         if (count($this->tarefa->getBeneficios()) > 0) {
             $beneficios = $this->tarefa->getBeneficios();
             foreach ($beneficios as $beneficio) {
                 $beneficio->fornecerPara($this->usuario);
             }
         }
     } else {
         throw new \Exception('Energia Insuficiente');
     }
 }
 public function testInicializacao()
 {
     $tarefaFake = $this->getMockBuilder("Application\\Entity\\Tarefa")->disableOriginalConstructor()->getMock();
     $usuarioFake = $this->getMock('Application\\Entity\\Usuario');
     $realizacao = new Entity\Realizacao();
     $realizacao->setExecucao(1);
     $realizacao->setTarefa($tarefaFake);
     $realizacao->setUsuario($usuarioFake);
     $this->assertEquals(1, $realizacao->getExecucao());
 }
 public function testSucessoCumpriuRequisito()
 {
     $usuario = new Entity\Usuario();
     $tarefaRequisito = new Entity\Tarefa('Tarefa Entity\\Requisito', 0, 0);
     $realizacao = new Entity\Realizacao();
     $realizacao->setTarefa($tarefaRequisito);
     $usuario->addRealizacao($realizacao);
     $usuario->setEnergia(1);
     $tarefa = new Entity\Tarefa('Tarefa foo', 1, 5);
     $requisito = new Entity\RequisitoTarefa();
     $requisito->setTarefa($tarefa);
     $requisito->setTarefaRequisito($tarefaRequisito);
     $tarefa->addRequisito($requisito);
     $cumprirTarefa = new Service\CumprirTarefa($tarefa, $usuario);
     $cumprirTarefa->cumprir();
 }
Example #4
0
 public function addRealizacao(Realizacao $realizacao)
 {
     $realizacao->setUsuario($this);
     $this->realizacoes->add($realizacao);
 }
 public function setUsuario($usuario)
 {
     $this->__load();
     return parent::setUsuario($usuario);
 }