Skip to content

jldsilva/InvoiceReminder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

InvoiceReminder

Sistema para envio automático de lembretes de pagamento de boletos bancários.

Índice


Sobre o Projeto

O InvoiceReminder é um sistema desenvolvido em C# para automatizar o envio de lembretes referentes a pagamentos de boletos bancários (invoices). Ele pode ser utilizado por empresas ou profissionais autônomos que desejam organizar e automatizar o processo de cobrança/reminder, evitando atrasos e otimizando o fluxo de caixa.

Funcionalidades

  • Cadastro de clientes e notas fiscais
  • Agendamento de lembretes automáticos via Telegram chat bot
  • Personalização de mensagens de lembrete
  • Relatórios de notas fiscais pendentes e lembretes enviados
  • Suporte a múltiplos usuários
  • Interface Rest API

Tecnologias Utilizadas

  • Linguagem: C#
  • Framework: .NET Core 9
  • Autenticação: JSON Web Token
  • Banco de Dados: PostgreSQL
  • Solução de ORM: Entity Framework Core 9 e Dapper
  • Serviços Externos: Google Api, iText, Telegram.Bot
  • Agendamento de Tarefas: Quartz.net
  • Testes Unitários: MSTest, NSubstitute e Shouldly

Pré-requisitos

  • .NET SDK (versão recomendada: 9.0 ou superior)
  • PostgreSQL (versão recomendada: 16 ou superior)
  • Google OAuth Client para gerar chave de integração com o sistema de autenticação sem senha
  • Criar um chat bot do Telegram através da interação com @BotFather
  • Acesso à internet para recuperação de e-mails e posterior envio de mensagens

Instalação

Clone o repositório:

git clone https://github.com/jldsilva/InvoiceReminder.git
cd InvoiceReminder

Restaure os pacotes NuGet e compile o projeto:

dotnet restore
dotnet build

Configuração

Antes de executar, configure os parâmetros de banco de dados e outros no arquivo de configuração (exemplo: appsettings.json):

{
  "ProviderName": "Npgsql",
  "appKeys": {
    "googleOauthClientId": "CLIENT_ID",
    "googleOauthClientSecret": "CLIENT_SECRET",
    "telegramBotToken": "BOT_TOKEN"
  },
  "ConnectionStrings": {
    "DatabaseConnection": "CONNECTION_STRING"
  },
  "JwtOptions": {
    "Issuer": "ISSUER",
    "Audience": "AUDIENCE",
    "SecretKey": "SECRET_KEY"
  }
}

Nota: Nunca compartilhe suas credenciais em repositórios públicos dê preferência ao recurso de user secrets do Visual Studio ou VS Code.

Como Usar

Execute o projeto:

dotnet run

Em ambiente development, a interface Rest API Scalar estará disponível para uso. Siga as instruções exibidas na tela para cadastrar clientes, notas fiscais e configurar os lembretes.

Exemplo de uso (CLI):

# Adicionar cliente
curl https://localhost:7104/api/user \
  --request POST \
  --header 'Content-Type: application/json' \
  --data '{
  "id": "",
  "name": null,
  "email": null,
  "password": null
}'

# Adicionar um scan de boleto
curl https://localhost:7104/api/scan_email \
  --request POST \
  --header 'Content-Type: application/json' \
  --data '{
  "id": "",
  "userId": "",
  "invoiceType": 1,
  "beneficiary": null,
  "description": null,
  "senderEmailAddress": null,
  "attachmentFileName": null
}'

# Adicionar um job_schedule
curl https://localhost:7104/api/job_schedule \
  --request POST \
  --header 'Content-Type: application/json' \
  --data '{
  "id": "",
  "userId": "",
  "cronExpression": null
}'

Contribuição

Contribuições são bem-vindas! Para contribuir:

  1. Faça um fork do projeto
  2. Crie uma branch com sua feature (git checkout -b feature/nova-feature)
  3. Commit suas alterações (git commit -m 'Adiciona nova feature')
  4. Push para a branch (git push origin feature/nova-feature)
  5. Abra um Pull Request

Licença

Este projeto está sob licença MIT.

Contato

Feito por jldsilva - Entre em contato para dúvidas ou sugestões!


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •