private function _salvarNovoCurso() { if (!$this->form_validation->run()) { $json = create_json_feedback(false, validation_errors_json()); } else { try { $segmentoDao = WeLearn_DAO_DAOFactory::create('SegmentoDAO'); $usuarioDao = WeLearn_DAO_DAOFactory::create('UsuarioDAO'); $dadosNovoCurso = $this->input->post(); $segmentoId = $dadosNovoCurso['segmento']; $dadosNovoCurso['segmento'] = $segmentoDao->recuperar($segmentoId); $dadosNovoCurso['criador'] = $usuarioDao->criarGerenciadorPrincipal($this->autenticacao->getUsuarioAutenticado()); $dadosNovoCurso['configuracao'] = $this->_cursoDao->criarConfiguracao($dadosNovoCurso); //Gerando e salvando imagem, caso houver. if (isset($dadosNovoCurso['imagem']) && is_array($dadosNovoCurso['imagem'])) { $dadosNovoCurso['imagem'] = $this->_salvarImagem($dadosNovoCurso['imagem']); } $novoCurso = $this->_cursoDao->criarNovo($dadosNovoCurso); $this->_cursoDao->salvar($novoCurso); if ($dadosNovoCurso['acao'] == 'criarFromSugestao') { $sugestaoDao = WeLearn_DAO_DAOFactory::create('SugestaoCursoDAO'); $sugestao = $sugestaoDao->recuperar($dadosNovoCurso['sugestao']); $sugestao->registrarCriacaoCurso($novoCurso, $sugestaoDao); //Enviar notificação aos usuarios $notificadorBatch = new WeLearn_Notificacoes_NotificadorCassandraBatch(); $notificadorTempoReal = new WeLearn_Notificacoes_NotificadorTempoReal(); //notificar criador $notificacao = new WeLearn_Notificacoes_NotificacaoSugestaoCursoAceitaCriador(); $notificacao->setSugestao($sugestao); $notificacao->setCursoCriado($novoCurso); $notificacao->setDestinatario($sugestao->getCriador()); $notificacao->adicionarNotificador($notificadorBatch); $notificacao->adicionarNotificador($notificadorTempoReal); $notificacao->notificar(); //Notificar votantes try { $idsVotantes = $sugestaoDao->recuperarTodosIdsVotantes($sugestao); } catch (cassandra_NotFoundException $e) { $idsVotantes = array(); } foreach ($idsVotantes as $idVotante) { $votante = new WeLearn_Usuarios_Usuario(); $votante->setId($idVotante); $notificacao = new WeLearn_Notificacoes_NotificacaoSugestaoCursoAceitaVotante(); $notificacao->setSugestao($sugestao); $notificacao->setCursoCriado($novoCurso); $notificacao->setDestinatario($votante); $notificacao->adicionarNotificador($notificadorBatch); $notificacao->adicionarNotificador($notificadorTempoReal); $notificacao->notificar(); } //fim notificação. } $notificacoesFlash = create_notificacao_json('sucesso', 'O novo curso foi criado com sucesso e você é o Gerenciador Principal!' . '<br /> Comece a Alterar as configurações, editar o conteúdo e convidar alunos em potencial.', 5000); $this->session->set_flashdata('notificacoesFlash', $notificacoesFlash); $extraJson = Zend_Json::encode(array('idNovoCurso' => $novoCurso->getId())); $json = create_json_feedback(true, '', $extraJson); } catch (Exception $e) { log_message('error', 'Ocorreu um erro ao criar um curso: ' . create_exception_description($e)); $error = create_json_feedback_error_json('Ocorreu um erro desconhecido, já estamos verificando. Tente novamente mais tarde.'); $json = create_json_feedback(false, $error); } } return $json; }
/** * @param WeLearn_Usuarios_Usuario $usuario * @return array */ private function _extrairDadosUsuarioParaArray(WeLearn_Usuarios_Usuario $usuario) { $usuarioArray = array('id' => $usuario->getId(), 'nome' => $usuario->getNome(), 'sobrenome' => $usuario->getSobrenome(), 'email' => $usuario->getEmail(), 'nomeUsuario' => $usuario->getNomeUsuario(), 'senha' => $usuario->getSenha(), 'dataCadastro' => $usuario->getDataCadastro(), 'persistido' => $usuario->isPersistido()); if ($usuario->getImagem()) { $usuarioArray['imagem'] = $usuario->getImagem(); } if ($usuario->getDadosPessoais()) { $usuarioArray['dadosPessoais'] = $usuario->getDadosPessoais(); } if ($usuario->getDadosProfissionais()) { $usuarioArray['dadosProfissionais'] = $usuario->getDadosProfissionais(); } if ($usuario->getSegmentoInteresse()) { $usuarioArray['segmentoInteresse'] = $usuario->getSegmentoInteresse(); } if ($usuario->getConfiguracao()) { $usuarioArray['configuracao'] = $usuario->getConfiguracao(); } return $usuarioArray; }
/** * @param WeLearn_Cursos_Conteudo_Pagina $pagina * @param WeLearn_Usuarios_Usuario $usuario * @return WeLearn_DTO_IDTO */ public function recuperarPorUsuario(WeLearn_Cursos_Conteudo_Pagina $pagina, WeLearn_Usuarios_Usuario $usuario) { $paginaUUID = UUID::import($pagina->getId()); $column = $this->_cf->get($paginaUUID->bytes, array($usuario->getId())); return $this->_criarFromCassandra($column, $pagina, $usuario); }
/** * @param WeLearn_Usuarios_Usuario $usuario * @param WeLearn_Cursos_Enquetes_Enquete $enquete * @return bool */ public function usuarioJaVotouEnquete(WeLearn_Usuarios_Usuario $usuario, WeLearn_Cursos_Enquetes_Enquete $enquete) { try { $enqueteUUID = CassandraUtil::import($enquete->getId()); $this->_cf->get($enqueteUUID->bytes, array($usuario->getId())); return true; } catch (cassandra_NotFoundException $e) { return false; } }
private function _criarFromCassandra(array $column, WeLearn_Usuarios_Usuario $remetentePadrao = null, WeLearn_Usuarios_Usuario $destinatariooPadrao = null) { // verifica qual usuario é o remetente if ($column['remetente'] == $remetentePadrao->getId()) { $column['remetente'] = $remetentePadrao; $column['destinatario'] = $destinatariooPadrao; } else { $column['remetente'] = $destinatariooPadrao; $column['destinatario'] = $remetentePadrao; } $mensagem = $this->criarNovo(); $mensagem->fromCassandra($column); return $mensagem; }
/** * @param array|null $dados * @return WeLearn_DTO_IDTO */ public function recuperarPendentes(WeLearn_Usuarios_Usuario $usuarioAutenticado, WeLearn_Usuarios_Usuario $usuarioPerfil) { try { $enviado = $this->_convitePorRemetente->get($usuarioAutenticado->getId(), array($usuarioPerfil->getId())); $convite = $this->_criarFromCassandra($this->_cf->get($enviado[$usuarioPerfil->getId()]), $usuarioAutenticado, $usuarioPerfil); return $convite; } catch (cassandra_NotFoundException $e) { $recebido = $this->_convitePorDestinatario->get($usuarioAutenticado->getId(), array($usuarioPerfil->getId())); $convite = $this->_criarFromCassandra($this->_cf->get($recebido[$usuarioPerfil->getId()]), $usuarioPerfil, $usuarioAutenticado); return $convite; } // funçao sempre retorna um convite }
/** * @param WeLearn_Cursos_SugestaoCurso $sugestao * @param WeLearn_Usuarios_Usuario $votante * @return array * @throws WeLearn_Cursos_UsuarioJaVotouException */ public function votar(WeLearn_Cursos_SugestaoCurso &$sugestao, WeLearn_Usuarios_Usuario $votante) { $sugestaoUUID = CassandraUtil::import($sugestao->getId()); try { $this->_sugestaoUsuariosVotantesCF->get($sugestaoUUID->bytes, array($votante->getId())); throw new WeLearn_Cursos_UsuarioJaVotouException(); } catch (cassandra_NotFoundException $e) { $this->_contadorCF->add($this->_keyContador, $sugestaoUUID->bytes); $votos = array_values($this->_contadorCF->get($this->_keyContador, array($sugestaoUUID->bytes))); $votos = $votos[0]; get_instance()->db->where('id', $sugestaoUUID->string)->update($this->_mysql_tbl_name, array('votos' => $votos)); $sugestao->setVotos($votos); $this->salvar($sugestao); $this->_sugestaoUsuariosVotantesCF->insert($sugestaoUUID->bytes, array($votante->getId() => '')); return $votos; } }
/** * @param WeLearn_Usuarios_Usuario $usuarioParaComparar * @param WeLearn_Usuarios_Usuario $oCriador * @return bool */ public function isAutor(WeLearn_Usuarios_Usuario $usuarioParaComparar, WeLearn_Usuarios_Usuario $oCriador) { return $usuarioParaComparar->getId() === $oCriador->getId(); }
/** * @param WeLearn_Usuarios_Usuario $usuario * @param WeLearn_Cursos_Curso $doCurso */ public function removerConviteGerenciador(WeLearn_Usuarios_Usuario $usuario, WeLearn_Cursos_Curso $doCurso) { $cursoUUID = UUID::import($doCurso->getId()); $this->_usuariosPorCursoCF->remove($cursoUUID->bytes, array($usuario->getId())); $this->_cursosPorConviteGerenciadorCF->remove($usuario->getId(), array($cursoUUID->bytes)); }
/** * @param WeLearn_Usuarios_Usuario $usuario * @return void */ public function limparNovas(WeLearn_Usuarios_Usuario $usuario) { try { $cfKeys = array_keys($this->_notificacoesNovasPorUsuarioCF->get($usuario->getId(), null, '', '', false, 1000000)); } catch (cassandra_NotFoundException $e) { return; } $batchAtualizacao = array(); for ($i = 0; $i < count($cfKeys); $i++) { $batchAtualizacao[$cfKeys[$i]] = array('status' => WeLearn_Notificacoes_StatusNotificacao::LIDO); } $this->_cf->batch_insert($batchAtualizacao); $this->_notificacoesNovasPorUsuarioCF->remove($usuario->getId()); }
/** * @param $idAmizade * @param null|WeLearn_Usuarios_Usuario $usuarioAtual * @param WeLearn_Usuarios_Usuario $amigoAtual * @return array */ private function _recuperarUsuariosDeIdAmizade($idAmizade, WeLearn_Usuarios_Usuario $usuarioAtual = null, WeLearn_Usuarios_Usuario $amigoAtual = null) { $arrayIdUsuarios = explode('::', $idAmizade); $arrayRetorno = array(); if ($usuarioAtual instanceof WeLearn_Usuarios_Usuario) { $arrayRetorno['usuario'] = $usuarioAtual; if ($usuarioAtual instanceof WeLearn_Usuarios_Usuario) { $arrayRetorno['amigo'] = $amigoAtual; return $arrayRetorno; } elseif ($arrayIdUsuarios[0] == $usuarioAtual->getId()) { $arrayRetorno['amigo'] = $this->_usuarioDao->recuperar($arrayIdUsuarios[1]); return $arrayRetorno; } elseif ($arrayRetorno[1] == $usuarioAtual->getId()) { $arrayRetorno['amigo'] = $this->_usuarioDao->recuperar($arrayIdUsuarios[0]); return $arrayRetorno; } } $arrayRetorno['usuario'] = $this->_usuarioDao->recuperar($arrayIdUsuarios[0]); $arrayRetorno['amigo'] = $this->_usuarioDao->recuperar($arrayIdUsuarios[1]); return $arrayRetorno; }