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(); }
public function addRealizacao(Realizacao $realizacao) { $realizacao->setUsuario($this); $this->realizacoes->add($realizacao); }
public function setUsuario($usuario) { $this->__load(); return parent::setUsuario($usuario); }