Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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: 12 days 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.

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

![image](https://github.com/NeemiasBorges/SI_GerenciamentoClientProdutos/assets/51499704/04d6e6ba-6cf0-4cf2-b8cc-5bdd5deceb68)

## 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
![image](https://github.com/NeemiasBorges/SI_GerenciamentoClientProdutos/assets/51499704/2a444ea4-b8a9-4ea6-8fbb-c4067729b2f1)

### 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**
- ![clienteGIF](https://github.com/NeemiasBorges/SI_GerenciamentoClientProdutos/assets/51499704/b7a3facf-43e9-46fa-a350-83539c5e4d05)

#### Produtos
- **Cadatro/Edição/Exclusão/Listar**
- ![produto](https://github.com/NeemiasBorges/SI_GerenciamentoClientProdutos/assets/51499704/cb4f53cc-6a82-4d33-9a84-3550f4dc78c2)

#### Vendas
- **Cadatro/Edição/Listar**
- ![vendas](https://github.com/NeemiasBorges/SI_GerenciamentoClientProdutos/assets/51499704/99d7a6d3-4b97-4124-80ce-7f2fd6a2f11c)

### Relatórios
- ![relatorio](https://github.com/NeemiasBorges/SI_GerenciamentoClientProdutos/assets/51499704/be133622-234b-4ca5-a8e6-61b98505338a)

***

## Contato
entre em contato comigo através dos seguintes canais:

- E-mail: [email protected]
- Telefone: +55 11 96292-6357