Giter VIP home page Giter VIP logo

balance's People

Contributors

petersonwpm avatar wandersonwhcr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

balance's Issues

Pesquisa em Listagem

Após o desenvolvimento e merge da tarefa #43, precisamos efetuar a pesquisa através do formulário.

As informações de pesquisa deverão ser armazenadas na sessão para que o usuário mantenha a pesquisa em posteriores acesso à página, bem como paginação. Ou será que as informações de pesquisa deveriam ser colocadas numa query do location, como as lojas virtuais fazem?

Estudar.

Bower

Precisamos instalar o Bower na máquina virtual Vagrant. Isso irá incluir a instalação de dependências, como o npm e aquela configuração de HTTPS do apt-get.

Centralizar os Tipos de Conta e Entradas de Lançamento

Os nomes de tipos de conta não estão encapsulados em método. A consulta de contas utiliza um CASE...END no banco de dados, o select do formulário utiliza uma configuração direta. Caso necessite modificar num local, como iremos encontrar os outros?

Precisamos encapsular estas informações de tipos de conta, bem como os tipos de entrada de lançamento para futuro desenvolvimento. Não colocar na classe de persistência em banco de dados. Será que não precisamos de um Entity?

Execução do Phinx no Travis CI

Precisamos executar o migrate no início do script no Travis CI e migrate -t0 na finalização do script. Isso fará os testes com as migrations e inicializará o banco de dados para os testes.

Otimizar Cabeçalho de Páginas

Podemos criar um template para cabeçalhos de página, com base no topo das páginas de erro desenvolvidas nas issues #32 e #33. Porém, esta tarefa somente deve ser feita após o término das issues relacionadas.

jQuery e Bootstrap

Precisamos utilizar o Bower para instalação do jQuery e Bootstrap no aplicativo, inicializando-os no layout.phtml principal do projeto.

Paginador

Devemos criar o template do Paginator e utilizá-lo nos lançamentos. Este recurso deve trabalhar em conjunto com o objeto Table durante a configuração em setElements, já que teremos um paginador do Zend Framework.

Zend Framework 2

Instalar o Zend Framework utilizando o Composer. Também inicializá-lo com um módulo homônimo ao projeto, com controladora e visualização vazias.

Configurar a Timezone no Vagrant

Adicionar uma configuração de PHP para ajustar a timezone da máquina virtual, evitando avisos do PHP durante a execução do Phinx.

Criação de favicon

Devemos criar um favicon para o projeto. Podemos capturar as próprias imagens do font-awesome ou procurar alguma imagem aberta na Internet.

Melhorar Página de Erro 404

Melhorar a página de erro para página não encontrada (HTTP 404) disponível no sistema, verificando configuração para apresentar ou não o tipo de erro gerado.

Breadcrumbs Vazia em Editar Contas

No formulário de edição de contas, os breadcrumbs estão vazios. Creio que temos que adicioná-los de alguma forma. Se auxiliar, podemos deixar o último elemento das breadcrumbs sem âncora, ignorando a rota.

Camada de Modelo com Subcamada de Banco de Dados

Acho que seria interessante a existẽncia de uma camada de modelo que possua uma subcamada de persistência, neste caso, uma camada de banco de dados. Esta camada de persistência seria um objeto configurado na camada de modelo.

Com isto, poderemos ter a seguinte estrutura:

Model
    Form
    Persistence

A classe do tipo Model é uma camada de modelo normal que possui um objeto não configurável externamente Form que representa o formulário de cadastro e um objeto externamente configurável do tipo Persistence que representa a camada de persistência.

Quando inicializado no ServiceManager, podemos configurar como camada de persistência um objeto de banco de dados.

Composer sendo executado como root

Durante o provisionamento da maquina virtual, o composer está sendo executado como root,
é necessário alterar o puppet para executar com o usuário vagrant.

Mensagens de Alteração

Precisamos que a controladora padrão adicione as mensagens necessárias em salvamentos, como em inserção de elemento, atualização e remoção, bem como a validação de formulário.

Criação de Classe para Renderização de Tabela

Precisamos criar um pequeno componente onde consigamos cadastrar colunas e linhas para posterior renderização utilizando um template. Quando a estrutura da tabela estiver modificada, poderemos alterar num único local centralizado no sistema.

Este componente pode ser bem simples e possivelmente alguém já pode ter construído ele. Podemos procurar na Internet se já existe um módulo do Zend Framework que faça esta tarefa.

Criação da base e usuário durante provisionamento

A verficação do puppet com unless está fazendo com que
as instruções para criação de usuário e base de dados
não seja executado. O retorno da verificação é 0, porém
o código não é executado.

Template para FlashMessenger

Criar um template para o FlashMessenger e exibir 4 tipos de mensagens no topo da página principal. As mensagens não importam, somente precisamos apresentá-las nas cores de alertas do Bootstrap, bem como com o ícone de fechamento. A exibição no topo da página principal é somente para apresentação do mesmo.

Apresentação de Formulário

Melhorar a apresentação do formulário de contas, buscando encontrar um padrão para o desenvolvimento do sistema. Não sei se o título do topo está bem definido, acho que podemos utilizar um panel, como na listagem.

Menu Superior

Criação de menu superior utilizando as rotas criadas em issues anteriores. Este menu deve ser construído conforme os padrões do Bootstrap, seguindo este formato:

Home
Accounts
Postings

Vagrant

Inicializar as configurações do Vagrant para termos uma máquina virtual de desenvolvimento.

Padronizar Valor Vazio em Seletores

O valor vazio de objetos do tipo Select de formulários deve ser sempre o mesmo, configurado para todos. Encontrar uma forma de fazer isso. O valor padrão deve ser -- Selecione --.

Composer

Criação do arquivo de configuração do Composer, incluindo a instalação do aplicativo na máquina virtual no Vagrant.

Banco de Dados

Configurar o banco de dados na máquina virtual. Precisamos de um usuário e um banco de dados com o mesmo nome do projeto. A senha deste usuário pode ser também igual ao nome do usuário.

Formulário do ZF com Bootstrap

Procurar algum módulo do Zend Framework que efetue a renderização do formulário utilizando o Bootstrap. Creio que isto já exista, caso contrário deveríamos criá-lo.

Variavel de ambinete do composer

Quando o composer executa um self-update, está sendo utlizado a variavel

COMPOSER_HOME=/home/vagrant/.composer

realizar a troca para

COMPOSER_HOME=/root/.composer

Títulos de Páginas

Os títulos das páginas devem estar de acordo com o conteúdo a ser exibido. Para tanto, precisamos adicionar configurações de headTitle nas camadas de visualização, sendo:

Balance\Controller\Home::indexAction() = Página Principal
Balance\Controller\Accounts::indexAction() = Contas - Listar
Balance\Controller\Accounts::editAction() = Contas - (Adicionar|Editar)
Balance\Controller\Postings::indexAction() = Lançamentos - Listar
Balance\Controller\Postings::editAction() = Lançamentos - (Adicionar|Editar)

Na ação de adicionar ou editar, precisamos verificar qual a chave primária informada. Se ela for igual a zero, então estamos adicionando um elemento, caso contrário, editando.

Corrigir Tipos de Contas e Entradas de Lançamento

Os tipos de contas e de entradas de lançamento foram desenvolvidos de forma errada. Precisamos criar migrations para alterar esta tipagem. Os tipos corretos são:

contas -> tipo = (Ativo|Passivo)
entradas de lançamento -> tipo = (Crédito|Débito)

Portanto, precisamos criar dois tipos no PostgreSQL separados, diferentemente do estado atual. Os nomes dos tipos serão: ACCOUNT_TYPE e ENTRY_TYPE. As variações serão as seguintes:

ACCOUNT_TYPE = (ACTIVE|PASSIVE)
ENTRY_TYPE = (CREDIT|DEBIT)

Após, criar uma migration para alterar as colunas nas tabelas correspondentes.

Template para Breadcrumbs

Criar um template para criação de breadcrumbs que serão apresentadas em todas as páginas. Acho que podemos fazer isso em conjunto com o Navigation do Zend Framework.

Integrador Contínuo

Precisamos configurar o sistema para utilizar algum CI grátis disponível na Internet. Também instalar o PHPLOC, PHPCPD, PHP Parallel Lint, PHPCS, PHPCS Fixer, PHPMD e PHPUnit.

Criação da Tela Principal

Precisamos desenhar a tela inicial do sistema, onde é apresentado o balanço geral do sistema. Há uma divisão de contas de ativo e passivo e no rodapé da tabela há uma apresentação de lucro ou prejuízo. No topo da página, como filtro, precisamos colocar um campo de texto que possibilita a pesquisa por data limite.

Camada de Modelo

Criação da camada de modelo para o sistema. Primeiro, criar uma interface para a camada de modelo. Após, utilizá-la nas camadas de modelo criadas. Precisamos criar 2 camadas de modelo: contas e lançamentos.

Confirmação em Âncoras

Para evitar que algumas âncoras sejam acessadas diretamente, sem confirmação, como por exemplo, remoção de elementos, precisamos criar um Javascript para isto.

Após, adicionar um atributo data-confirm no botão de remoção do layout/table-action.

Melhorar Página de Erro 500

Precisamos melhorar a apresentação de erros internos (HTTP 500) do aplicativo, verificando configurações para condições de exibição ou não de dados sobre o erro gerado.

Validador de Balanço de Lançamento

Precisamos criar uma estrutura que possibilite a validação do balanço do lançamento a ser adicionado no banco de dados. Precisamos também criar os devidos testes durante o desenvolvimento. Este validador deve ser um componente isolado que possibilite a reutilização em outros pontos.

Estrutura de Banco de Dados

Precisamos criar a estrutura básica de banco de dados para armazenar as informações do Balance. Basicamente, o Balance necessita destas informações:

contas
    - id
    - nome
    - tipo (ativo|passivo)
    - descrição
lançamentos
    - id
    - data e hora
    - descrição
entradas
    - contas -> id
    - lançamentos -> id
    - tipo (crédito|débito)
    - valor

Utilizar o PHINX para criação das migrations de banco de dados. Colocar as migrations dentro do módulo e não na raiz do projeto. Para cada tabela gerada, criar uma migration separada.

Criar Template de Renderização de Exceptions

Podemos capturar a renderização da Exception na issue #32, colocando-a num template e utilizar também na renderização da página de erro desenvolvida na issue #33. Eu só descobri que uma página 404 no ZF também envia uma Exception por causa do Skeleton. Somente podemos fazer esta tarefa após o término das tarefas em questão.

Instalação do Composer e Bower

A execução do composer install está executando o bower install com o diretório HOME dentro do projeto, adicionando assim um diretório .config que não deve existir. O problema é que este diretório é responsável pelas configurações do Bower e, portanto, o HOME deve ser o diretório do usuário, no nosso caso, o /home/vagrant.

Rotas

Criar todas as rotas do sistema. Isso incluir a criação de todas as controladoras e visualizações necessárias para estas rotas. Buscar saber quais são os termos utilizados no banco de dados para nomenclatura das controladoras.

Utilizar Factory para Carregar Elementos

Podemos utilizar uma AbstractFactory para inicializar os elementos do ServiceManager no Zend Framework. As controladoras e modelos podem usufruir deste tipo de carregamento, assim como outros objetos que utilizam o mesmo tipo de construtores.

Esta tarefa deve ser feita após a issue #31.

Configuração do Banco de Dados no Zend Framework

Precisamos adicionar uma configuração para inicializar o banco de dados durante a execução do aplicativo Balance através do Zend Framework. Esta configuração deverá ficar na raiz do projeto, porque é indiferente de módulo.

Formulário de Pesquisa em Listagem

Começar a desenvolver o formulário de pesquisa em listagem, mas somente a visualização, sem o recurso funcionando. Isto será definido em outra tarefa.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.