/// <summary> /// Valida se a requisição de transferência está correta /// </summary> /// <param name="command"></param> /// <returns></returns> protected List <DomainValidationMessage> ValidarTransferencia(ITransferencia command) { List <DomainValidationMessage> messages = new List <DomainValidationMessage>(); if (command.numeroContaDestino == 0) { messages.Add(new DomainValidationMessage(ValidationLevel.Error, nameof(command.numeroContaDestino), "Número da Conta Destino é obrigatorio")); } if (command.numeroContaOrigem == 0) { messages.Add(new DomainValidationMessage(ValidationLevel.Error, nameof(command.numeroContaOrigem), "Número da Conta Origem é obrigatorio")); } if (command.valorTransferencia <= 0) { messages.Add(new DomainValidationMessage(ValidationLevel.Error, nameof(command.valorTransferencia), "Valor da Transferência deve ser maior que zero")); } if (command.numeroContaDestino == command.numeroContaOrigem) { messages.Add(new DomainValidationMessage(ValidationLevel.Error, nameof(command.valorTransferencia), "Conta Origem e Conta Destino devem ser diferentes")); } return(messages); }
/// <summary> /// Evento de debito em contacorrente /// </summary> /// <param name="command"></param> public void DebitoContaCorrente(ITransferencia command) { var lancamento = new Lancamentos(TipoLancamento.Debito, command.valorTransferencia); this.AdicionarLancamento(lancamento); this.saldoContaCorrente -= command.valorTransferencia; }
/// <summary> /// Faz as primeiras validacoes de campos obrigatorios para realizar uma transferencia /// </summary> /// <param name="command"></param> public ContaCorrente(ITransferencia command) { var msgs = ValidarTransferencia(command); if (msgs.Count > 0) { throw new DomainValidationException(msgs); } }
// Construtor Para injetar as dependencias Deposito. public UnitTestTransferencia(Injecao.FixtureTransferencia fix) { // morre quando não mais utilizado this.transferencia = fix.Container.Resolve <ITransferencia>(); this.ClientePrimeiro = new PessoaFisica("Raul Santiago", "222.333.333.-90"); // mocar mok this.ClienteSegundo = new PessoaJuridica("Empresa Ago", "15.432.444/0009-90"); // mocar mok this.ContaPrimeiro = new Conta(0838, 12345678, EnumTipoConta.Corrente, this.ClientePrimeiro); // mocar mok this.ContaSegundo = new Conta(9999, 09876544, EnumTipoConta.Poupanca, this.ClienteSegundo); // mocar mok DateTime data = DateTime.Today; ContaPrimeiro.AddExtrato(new Extrato(data, -5.0m, EnumTransacao.Transferencia)); ContaSegundo.AddExtrato(new Extrato(data, 5.0m, EnumTransacao.Transferencia)); }
/// <summary> /// Inicializa uma instancia de validação dos dados de Transferencia /// </summary> /// <param name="transferencia">Instancia da entidade transferencia a ser validada</param> public RegraTransferencia(ITransferencia transferencia) { _transferencia = transferencia; }