Esempio n. 1
0
        public IEnumerable <Endereco> Enderecos => _enderecos.ToList().AsReadOnly(); // essa expressão lambda equivale a...

        /*public IEnumerable<Endereco> Enderecos()
         * {
         * return _enderecos.ToList().AsReadOnly();
         * }*/

        /* só consigo (e só pode) adicionar endereço, dessa forma...
         */
        public void AdicionarEndereco(Endereco endereco)
        {
            /* Melhorando a validação...
             * if (endereco != null)
             * _enderecos.Add(endereco);
             */

            if (endereco == null)
            {
                // gera uma exceção (não é uma boa prática)... qwdo for uma coisa muito grave, tudo bem
                // devolver uma mensagem
                // ou mesclar as duas coisas (exceção e mensagem)

                NotificacaoDominio.AdicionarErro("Endereço deve ser instanciado");
            }
            else
            {
                endereco.SetNotificacao(new NotificacaoDominio());

                if (endereco.ValidarPropriedades())
                {
                    _enderecos.Add(endereco);
                }
                else
                {
                    NotificacaoDominio.AdicionarErro("Não é possível adicionar o endereço para pessoa.");
                }
            }
        }
        public bool ValidarPropriedades()
        {
            if (string.IsNullOrEmpty(Rua))
            {
                NotificacaoDominio.AdicionarErro("Rua deve ser preenchida.");
            }

            if (Numero <= 0)
            {
                NotificacaoDominio.AdicionarErro("Número deve ser preenchido.");
            }

            return(NotificacaoDominio.Validar());
        }