using Gestor.Model.Attributes; using Gestor.Model.Common; using Gestor.Model.Domain.Generic; using Gestor.Model.Helper; using Gestor.Model.Resources; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; using System.Runtime.CompilerServices; namespace Gestor.Model.Domain.Financeiro { public class Lancamento : DomainBase, IDomain { private decimal? _valorPago; private string _historico; private string _documento; private string _complemento; private string _competencia; [Description("DATA DA BAIXA")] [Log(true)] public DateTime? Baixa { get; set; } public bool Baixado { get; set; } [Description("CÓDIGO BANCO")] [Log(true)] public string CodigoBanco { get; set; } [Description("COMPETÊNCIA")] [Log(true)] public string Competencia { get { string str = this._competencia; if (str != null) { return str.ToUpper(); } return null; } set { this._competencia = value; } } [Log(true)] public string Complemento { get { string str = this._complemento; if (str != null) { return str.ToUpper(); } return null; } set { this._complemento = value; } } [Log(true)] public BancosContas Conta { get; set; } public ControleFinanceiro Controle { get; set; } [Description("DATA LANÇAMENTO")] [Log(true)] public DateTime? DataLancamento { get; set; } [Log(true)] public string Documento { get { string str = this._documento; if (str != null) { return str.ToUpper(); } return null; } set { this._documento = value; } } [Description("HISTÓRICO")] [Log(true)] public string Historico { get { string str = this._historico; if (str != null) { return str.ToUpper(); } return null; } set { this._historico = value; } } [Description("OBSERVAÇÃO")] [Log(true)] public string Observacao { get; set; } [Log(true)] public DateTime? Pagamento { get; set; } [Log(true)] public int Parcela { get; set; } public bool Selecionado { get; set; } [Log(true)] public Gestor.Model.Common.Sinal Sinal { get; set; } [Description("TIPO PAGAMENTO")] [Log(true)] public Gestor.Model.Common.TipoPagamento TipoPagamento { get; set; } [JsonIgnore] public Func>> ValidationEvent { get { Lancamento lancamento = this; return new Func>>(lancamento.Validate); } } [Log(true)] public decimal Valor { get; set; } [Description("VALOR PAGO")] [Log(true)] public decimal? ValorPago { get { return new decimal?(this._valorPago.GetValueOrDefault()); } set { this._valorPago = value; } } [Log(true)] public DateTime Vencimento { get; set; } public Lancamento() { } public List> Validate() { List> keyValuePairs = ValidationHelper.AddValue(); keyValuePairs.AddRange(this.Controle.Validate()); if (string.IsNullOrWhiteSpace(this.Historico)) { keyValuePairs.AddValue("Historico", Messages.Obrigatorio, true); } else if (this.Historico.Length > 100) { keyValuePairs.AddValue("Historico", string.Format(Messages.MaiorQueLimite, 100), true); } if (this.Valor <= decimal.Zero) { keyValuePairs.AddValue("Valor", Messages.Obrigatorio, true); } decimal? valorPago = this.ValorPago; decimal num = new decimal(); if ((valorPago.GetValueOrDefault() < num) & valorPago.HasValue) { keyValuePairs.AddValue("ValorPago", Messages.Obrigatorio, true); } if (this.Conta == null) { keyValuePairs.AddValue("Conta|CONTA CORRENTE", string.Concat(Messages.Obrigatorio, "\nSE NÃO HOUVER NENHUMA CONTA CORRENTE CADASTRADA\nACESSE A TELA BANCOS E CONTAS PARA INCLUIR"), true); } if (!string.IsNullOrWhiteSpace(this.Documento) && this.Documento.Length > 50) { keyValuePairs.AddValue("Documento", string.Format(Messages.MaiorQueLimite, 50), true); } if (!string.IsNullOrWhiteSpace(this.Competencia) && this.Competencia.Length > 8) { keyValuePairs.AddValue("Competencia|COMPETÊNCIA", string.Format(Messages.MaiorQueLimite, 8), true); } if (!string.IsNullOrWhiteSpace(this.Complemento) && this.Complemento.Length > 50) { keyValuePairs.AddValue("Complemento", string.Format(Messages.MaiorQueLimite, 50), true); } if (this.Baixa.HasValue && (DateTime.Compare(this.Baixa.Value, new DateTime(1753, 1, 1)) < 0 || DateTime.Compare(this.Baixa.Value, new DateTime(9999, 12, 31)) > 0)) { keyValuePairs.AddValue("Baixa", string.Format(Messages.DataInvalida, Array.Empty()), true); } if (DateTime.Compare(this.Vencimento, new DateTime(1753, 1, 1)) < 0 || DateTime.Compare(this.Vencimento, new DateTime(9999, 12, 31)) > 0) { keyValuePairs.AddValue("Vencimento", string.Format(Messages.DataInvalida, Array.Empty()), true); } if (this.Pagamento.HasValue && (DateTime.Compare(this.Pagamento.Value, new DateTime(1753, 1, 1)) < 0 || DateTime.Compare(this.Pagamento.Value, new DateTime(9999, 12, 31)) > 0)) { keyValuePairs.AddValue("Pagamento", string.Format(Messages.DataInvalida, Array.Empty()), true); } if (!this.Baixa.HasValue && this.Baixado) { keyValuePairs.AddValue("Baixa", "NÃO É POSSÍVEL SALVAR UM DOCUMENTO SEM DATA DE BAIXA QUANDO O LANÇAMENTO POSSUÍ BAIXA", true); } return keyValuePairs; } } }