-
Notifications
You must be signed in to change notification settings - Fork 0
/
Titulo.cs
115 lines (95 loc) · 4.33 KB
/
Titulo.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
using System;
using System.Linq;
using System.Text.RegularExpressions;
namespace NetBoletoSantander
{
public class Titulo
{
public double Valor { get; }
public string NossoNumero { get; }
public string SeuNumero { get; }
public DateTime DataVencimento { get; }
public string Mensagem { get; }
public DateTime DataEmissao { get; }
public Especie Especie { get; }
public InstrucoesDoTitulo InstrucoesDoTitulo { get; }
public Titulo(double valor, Especie especie, string nossoNumero, string seuNumero, DateTime dataVencimento,
DateTime dataEmissao, bool digitoVerificador = true)
{
Valor = valor;
Especie = especie;
NossoNumero = nossoNumero + (digitoVerificador ? CalcularDigitoVerificador(nossoNumero).ToString() : "");
SeuNumero = seuNumero;
DataVencimento = dataVencimento;
DataEmissao = dataEmissao;
Validar();
}
public Titulo(double valor, Especie especie, string nossoNumero, string seuNumero, DateTime dataVencimento,
DateTime dataEmissao, string mensagem, bool digitoVerificador = true)
{
Valor = valor;
Especie = especie;
NossoNumero = nossoNumero + (digitoVerificador ? CalcularDigitoVerificador(nossoNumero).ToString() : "");
SeuNumero = seuNumero;
DataVencimento = dataVencimento;
DataEmissao = dataEmissao;
Mensagem = mensagem;
Validar();
}
public Titulo(double valor, Especie especie, string nossoNumero, string seuNumero, DateTime dataVencimento,
DateTime dataEmissao, InstrucoesDoTitulo instrucoesDoTitulo, bool digitoVerificador = true)
{
Valor = valor;
Especie = especie;
NossoNumero = nossoNumero + (digitoVerificador ? CalcularDigitoVerificador(nossoNumero).ToString() : "");
SeuNumero = seuNumero;
DataVencimento = dataVencimento;
DataEmissao = dataEmissao;
InstrucoesDoTitulo = instrucoesDoTitulo;
Validar();
}
public Titulo(double valor, Especie especie, string nossoNumero, string seuNumero, DateTime dataVencimento,
DateTime dataEmissao, string mensagem, InstrucoesDoTitulo instrucoesDoTitulo, bool digitoVerificador = true)
{
Valor = valor;
Especie = especie;
NossoNumero = nossoNumero + (digitoVerificador ? CalcularDigitoVerificador(nossoNumero).ToString() : "");
SeuNumero = seuNumero;
DataVencimento = dataVencimento;
DataEmissao = dataEmissao;
Mensagem = mensagem;
InstrucoesDoTitulo = instrucoesDoTitulo;
Validar();
}
private int CalcularDigitoVerificador(string nossoNumero) {
var digito = 0;
var multiplicador = 2;
var total = 0;
var nossoNumeroArray = nossoNumero.ToCharArray().Reverse();
foreach (var numero in nossoNumeroArray) {
total += multiplicador * numero;
if (++multiplicador > 9) {
multiplicador = 2;
}
}
var modulo = total % 11;
if (modulo > 1) {
digito = 11 - modulo;
}
return digito;
}
private void Validar()
{
if (NossoNumero.Length == 0 || NossoNumero.Equals("0"))
throw new ArgumentException("Não poder ser uma string vazia.", "NossoNumero");
if (NossoNumero.Length > 14)
throw new ArgumentException("Não poder ter mais que 14 caracteres.", "NossoNumero");
if (!Regex.IsMatch(NossoNumero, @"^[0-9]*$"))
throw new ArgumentException("Deve possuir apenas números.", "NossoNumero");
if (SeuNumero.Length == 0)
throw new ArgumentException("Não poder ser uma string vazia.", "SeuNumero");
if (SeuNumero.Length > 15)
throw new ArgumentException("Não poder ter mais que 15 caracteres.", "SeuNumero");
}
}
}