# Criação de uma aplicação financeira
###### tags: `Aplicação Financeira`
[ToC]
## Tecnologias utilizadas
- Framework .NET 5.0
- Banco de dados SQL Server 2.019 através do Docker;
- Docker;
- Dapper para acessar o banco de dados;
- .Net Core Web API
---
## Azure Devops (Board)
:::info
:pushpin: Board do projeto ➜ [Clique aqui para ir até o Board](https://projectmarcelodeoliveira.visualstudio.com/CloneMobills)
:::
---
## Camadas do Sistema
- **Aplicação**: Responsável em orquestrar as requisições de entrada/saída e nutrir de informações para as demais camadas;
- **Contratos**: Irá armazernar todas as interfaces (contratos) que serão usados nas camadas abaixo:
- **CamadaInfraEstrutura**: Irá armazenar todas as interfaces que a camada de infraestrutura irá utilizar;
-
- **CamadaServico**:Irá armazenar todas as interfaces que a camada de serviços irá utilizar;
- **DTOs (Data Transfer Objects)**: Classes anêmicas que serão responsáveis em transportar informações entre as camadas;
- **ObjetosValor**:
- **Serviços**:
- **Comandos**: Irá armazenar as classes de comandos que poderão ser utilizados nos parâmetros das Apis e poderão ser divididos em: **comandos de atualização e comandos de consulta**;
- **Infraestrutura**: Responsável em fazer todo o acesso externo da aplicação, como por exemplo, acessar os bancos de dados, acessar APIs externas entre outro recursos;
- **Repositórios**: Classes de acesso a recursos externos como por exemplo, acesso ao banco Sql Server, MongoDB entre outras coisas;
- **IOC**: Classe responsável em realizar o inverse of control e irá armazenar um classe onde será armazenada as strings de conexões de acesso a bancos ou outra configurações necessárias para acesso ou parâmetros aos recursos externos;
- **RecursosCompartilhados**:Irá armazenar classes que serão compartilhadas entre todas as outras camadas;
- **BancoDados**: Projeto que irá armazenar toda as estrutura de objetos relacionados ao banco de dados Sql Server e também irá atualizar o banco de produção e de desenvolvimento;
- **Dominio**: Projeto que irá armazenar as classes de domínio de negócio, como por exemplo: Classes que representam um determinado cliente, fornecedor, representante e poderão ser usadas para persistir os dados em algum recursos externo, como um gerenciador de banco de dados;
---
## Relação de tabelas
- **Idiomas**
| Campos | Tipo | Obrigatorio | AutoIncremento | Valor Default| Descrição |
| ---------------------| ------------- |:-----------:|:--------------:|:-------------|---------- |
| IDIdioma | Short | S | S | | |
| DescricaoIdioma | Varchar(100) | S | N | | |
- **Moeda**
| Campos | Tipo | Obrigatorio | AutoIncremento | Valor Default| Descrição |
| ---------------------| ------------- |:-----------:|:--------------:|:-------------|---------- |
| IDMoeda | Short | S | S | | |
| DescricaoMoeda | Varchar(150) | S | N | | |
| SiglaInternacional | Varchar(20) | S | N | | |
- **Usuario**
| Campos | Tipo | Obrigatorio | AutoIncremento | Valor Default| Descrição |
| ---------------------| ------------- |:-----------:|:--------------:|:-------------|---------- |
| IDUsuario | Varchar(40) | S | N | | |
| Email | Varchar(200) | S | N | | |
| Senha | Varchar(40 ) | S | N | | |
| IDIdioma | Short | S | N | | |
| Foto | Binary | N | N | | |
- **TipoConta**
| Campos | Tipo | Obrigatorio | AutoIncremento | Valor Default| Descrição |
| ---------------------| ------------- |:-----------:|:--------------:|:-------------|---------- |
| IDTipoConta | Short | S | S | | |
| DescricaoTipoConta | Varchar(40) | S | N | | |
| Icone | | S | N | | |
- **ContaCorrente**
| Campos | Tipo | Obrigatorio | AutoIncremento | Valor Default| Descrição |
| ----------------------| ------------- |:-----------:|:--------------:|:-------------|---------- |
| IDUsuario | Varchar(40) | S | N | | |
| Saldo | Decimal(18,2) | N | N | | |
| CodigoBacen | Varchar(5) | S | N | | |
| NomeConta | Varchar(50) | S | N | | |
| IDTipoConta | Short | S | N | | |
| IncluirSomaTelaInicial| Byte | N | N | 0 (Zero) | |
| Cor | Byte | N | N | | |
- **BandeirasCartaoCredito**
| Campos | Tipo | Obrigatorio | AutoIncremento | Valor Default| Descrição |
| -----------------------| ------------- |:-----------:|:--------------:|:-------------|---------- |
| IDBandeiraCartaoCredito| Short | S | S | | |
| NomeBandeira | Varchar(40) | S | N | | |
| Icone | Binary | N | N | | |
- **CartaoCredito**
| Campos | Tipo | Obrigatorio | AutoIncremento | Valor Default| Descrição |
| -----------------------| ------------- |:-----------:|:--------------:|:-------------|---------- |
| IDUsuario | Varchar(40) | S | N | | |
| IDBandeiraCartaoCredito| Short | S | N | | |
| Limite | Decimal(18,2) | N | N | 0 (Zero) | |
| NomeDoCartao | Varchar(60) | N | N | | |
| CodigoBacen | Varchar(5) | S | N | | |
| DiaFechamento | Byte | S | N | | |
| DiaPagamento | Byte | S | N | | |
- **InstituicaoFinanceira**
| Campos | Tipo | Obrigatorio | AutoIncremento | Valor Default| Descrição |
| ---------------------| ------------- |:-----------:|:--------------:|:-------------|---------- |
| CodigoBacen | Varchar(5) | S | S | | |
| NomeReduzido | Varchar(200) | S | N | | |
| LogoTipo | Binary | N | N | | |
- **Tags**
| Campos | Tipo | Obrigatorio | AutoIncremento | Valor Default| Descrição |
| ---------------------| ------------- |:-----------:|:--------------:|:-------------|---------- |
| IDUsuario | Varchar(40) | S | N | | |
| IDTag | Short | S | S | | |
| NomeTag | Varchar(100) | S | N | | |
- **Categoria**
| Campos | Tipo | Obrigatorio | AutoIncremento | Valor Default| Descrição |
| ---------------------| ------------- |:-----------:|:--------------:|:-------------|---------- |
| IDUsuario | Varchar(40) | S | N | | |
| IDCategoria | Short | S | S | | |
| NomeCategoria | Varchar(100) | S | N | | |
| Icone | | S | N | | |
| Cor | | S | N | | |
- **SubCategoria**
| Campos | Tipo | Obrigatorio | AutoIncremento | Valor Default| Descrição |
| ---------------------| ------------- |:-----------:|:--------------:|:-------------|---------- |
| IDUsuario | Varchar(40) | S | N | | |
| IDCategoria | Short | S | S | | |
| IDSubCategoria | Short | S | S | | |
| NomeSubCategoria | Varchar(100) | S | N | | |
| Icone | | S | N | | |
| Cor | | S | N | | |
- **Lançamentos**
| Campos | Tipo | Obrigatorio | AutoIncremento | Valor Default | Descrição |
| --------------- | ------------- |:-----------:|:--------------:|:------------------------------------------ | ---------- |
| IDUsuario | Varchar(40 | S | N | | |
| IDTransacao | Integer | S | S | | |
| TipoTransacao | Char(1) | S | | | D (Despesa) R (Receita) C (Cartão Crédito) |
| ValorOriginal | Decimal(18,2) | S | N | 0(Zero) | |
| DataPagamento | DateTime | N | N | 0(Zero) | |
| ValorPago | Decimal(18,2) | N | N | 0(Zero) | |
| IDCodigoMoeda | Short | S | N | | |
| FoiPaga | Byte | S | N | 0(Zero) | |
| Parcela | Varchar(7) | N | N | | |
| DataTransacao | DateTime | S | N | 0(Zero) | |
| Descricao | Varchar(max) | S | N | | |
| IDCategoria | Short | S | | | |
| IDSubCategoria | Short | N | | | |
| IDCodigoConta | Short | S | | | |
| IgnoraTransacao | Byte | S | | 0(Zero) | |
| SomaProximoMes | Byte | N | | 0(Zero) | |
| IDTag | Short | N | | Null | |
| Observacao | Varchar(max) | N | | | |
| DespesaFixa | Byte | N | | 0(Zero) | |
| Repetir | Byte | N | | 0(Zero) | |
| QtdVezesRepetir | Short | N | | 0(Zero) | |
| Periodicidade | Byte | | | 1 - Dias, 2 - Semanas, 3 - Meses 4 Anos | |
| IDContaCorrente | Short | S | | | |
{"metaMigratedAt":"2023-06-16T10:51:03.850Z","metaMigratedFrom":"Content","title":"Criação de uma aplicação financeira","breaks":true,"contributors":"[{\"id\":\"b277554e-58cf-4bbc-bb60-dd8c58acfc95\",\"add\":24186,\"del\":11047}]"}