https://github.com/neemiasborges/csharp_clientproductmanager
sistema de gerenciamento de clientes e produtos desenvolvido em C# com Windows Forms e .NET. Permite cadastrar, editar, remover e listar clientes e produtos, além de registrar e listar vendas. Utiliza PostgreSQL para persistência de dados e segue a Clean Architecture.
https://github.com/neemiasborges/csharp_clientproductmanager
clean-architecture clean-code csharp postgresql studies tdd testing
Last synced: about 2 months ago
JSON representation
sistema de gerenciamento de clientes e produtos desenvolvido em C# com Windows Forms e .NET. Permite cadastrar, editar, remover e listar clientes e produtos, além de registrar e listar vendas. Utiliza PostgreSQL para persistência de dados e segue a Clean Architecture.
- Host: GitHub
- URL: https://github.com/neemiasborges/csharp_clientproductmanager
- Owner: NeemiasBorges
- Created: 2024-06-21T20:19:53.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-15T00:26:09.000Z (almost 2 years ago)
- Last Synced: 2025-03-24T08:16:45.584Z (over 1 year ago)
- Topics: clean-architecture, clean-code, csharp, postgresql, studies, tdd, testing
- Language: CSS
- Homepage:
- Size: 61.2 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Documentação do Sistema [For study purposes]
## Requisitos do Sistema
#### Gerenciamento de Clientes
- **Cadastrar Cliente**: Permite a inclusão de novos clientes com as seguintes informações: nome, endereço, telefone e email.
- **Editar Cliente**: Permite a modificação das informações de clientes já cadastrados.
- **Remover Cliente**: Permite a exclusão de clientes do sistema.
- **Listar Clientes**: Permite o sistema de listar todos os clientes ja criados
#### Gerenciamento de Produtos
- **Cadastrar Produto**: Permite a inclusão de novos produtos com as seguintes informações: nome, descrição, preço e estoque.
- **Editar Produto**: Permite a modificação das informações de produtos já cadastrados.
- **Remover Produto**: Permite a exclusão de produtos do sistema.
- **Listar Produtor**: Permite o sistema de listar todos os produtos criados pelo usuario
#### Realização de Vendas
- **Registrar Venda**: Permite a realização de vendas registrando o cliente, os produtos e a quantidade, preço de cada item vendido.
- ** Listar Vendas**: Permite listar todas as vendas ja feitas pelo usuario
### Relatórios
- **Relatório de Vendas**: Gera um relatório detalhando a venda realizada, incluindo informações sobre o cliente,produto,preço e quantidade total no documento.
## Requisitos Técnicos e Linguagens utilizads
- **Linguagem de Programação**: C#
- **Interface Gráfica**: Windows Forms com MetroSet_UI
- **Banco de Dados**: PostgreSQL versão 16.3-2
- **Driver de Conexão com PostgreSQL**: NPGSQL 8.03
- **Ferramenta de Relatórios**: ReportViewer RDLC 17.0.0
- **Arquitetura escolhida**: Clean Architecture
- **Testes**: MSTest e Moq para testes
- **Logging e Alertas**: SEQ
## System Design

## Estrutura do Banco de Dados e Tabelas
### clientes
| Coluna | Tipo | Descrição |
|-------------|-----------------------|--------------------------|
| id | integer | Identificador único |
| nome | character varying(100)| Nome do cliente |
| id_endereco | integer | Referência ao endereço |
| id_telefone | integer | Referência ao telefone |
| email | character varying(100)| Email do cliente |
### contato
| Coluna | Tipo | Descrição |
|-------------|-----------------------|----------------------------|
| id | integer | Identificador único |
| nome | character varying(100)| Nome do contato |
### endereco
| Coluna | Tipo | Descrição |
|-------------|-----------------------|----------------------------|
| id | integer | Identificador único |
| nome | character varying(100)| Nome do endereço |
### produto
| Coluna | Tipo | Descrição |
|-------------|-----------------------|----------------------------|
| id | integer | Identificador único |
| nome | character varying(100)| Nome do produto |
| descricao | character varying(255)| Descrição do produto |
| preco | numeric(10,2) | Preço do produto |
### vendas
| Coluna | Tipo | Descrição |
|-------------|-----------------------|--------------------------------|
| id | integer | Identificador único |
| data_criacao| timestamp | Data de criação da venda |
| id_usuario | integer | Identificador do usuário |
| id_cliente | integer | Identificador do cliente |
### vendascorpo
| Coluna | Tipo | Descrição |
|-------------|-----------------------|--------------------------------|
| id | integer | Identificador único |
| id_venda | integer | Referência à venda |
| id_produto | integer | Referência ao produto |
| id_estoque | integer | Referência ao estoque |
| quantidade | double precision | Quantidade do produto |
| preco | numeric(10,2) | Preço do produto na venda |
## Estrutura do Projeto e Pastas
Abaixo está a estrutura de pastas do projeto, organizada de acordo com a minha interpretação da Clean Architecture:
```
/src
├── scriptsSQL.sql
├── /UnitTests
│ ├── DominioTest
│ ├── ApplicationTest
├── /Dominio
│ ├── /Entidades
├── /Aplicacao
│ ├── /DTO
│ ├── /Interfaces
│ ├── /Services
├── /Repositorio
│ ├── /Exceptions
│ ├── /Infra
│ └── /Interfaces
├── /View
│ ├── /Views
│ └── /Forms
│ ├── /Scripts
│ ├── /Content
│ ├── /Database
│ ├── /Fonts
│ ├── /Relatorios/
│ ├───── /PedidoVenda
└── /Infraestrutura
├── /Configuracoes
├── /Logging
└── /Integracoes
```
### 1. Configuração do Ambiente
1. Instale o [PostgreSQL](https://www.postgresql.org/docs/current/release-16-3.html) versão 16
2. Instale e configure o [SEQ](https://datalust.co/seq) para logging e alertas

### 2. Conexão com o Banco de Dados
A conexão com o banco de dados PostgreSQL é realizada através do NPGSQL. Para fazer a conexao com o banco de dados, devemos configurar a String de Conexao no arquivo `App.config` localizado na camada `View`
Deve se alterar a tag PorstgresConnection
#### 3. Configuração do SEQ (Opcional)
Caso deseje configurar tambem o ``Seq``, basta no mesmo arquiv `App.config` alterar a key Serilog:SeqUrl
### 4. Configurando o Banco de Dados
Execute os scripts SQL fornecidos na pasta raiz com o nome de `scriptsSQL` para criar as tabelas necessárias no PostgreSQL.
No momento de configurar o projeto e criar o script, adicionei alguns registros previos nas tabelas para facilitar a primeira utilização do sistema
### 5. Testes
Os testes unitários e de integração são realizados na camada de Tests importando os objetos da camada de Applicação (DTO) e os de Modelagem na camada Dominio (Entidade)
Para executar os testes basta Clicar com o botão direito na camada e selecionar ‘Executar Testes’
### 6. Executando o Sistema
Abra o projeto no Visual Studio, configure a string de conexão no código e execute o projeto. A interface gráfica será exibida, permitindo a utilização das funcionalidades descritas acima.
#### Clientes
- **Cadastro/Edição/Exclusão**
- 
#### Produtos
- **Cadatro/Edição/Exclusão/Listar**
- 
#### Vendas
- **Cadatro/Edição/Listar**
- 
### Relatórios
- 
***
## Contato
entre em contato comigo através dos seguintes canais:
- E-mail: neemiasb.dev@gmail.com
- Telefone: +55 11 96292-6357