public RetornoBase <int> Realizar(Operacao.NovoLivro novoLivro)
        {
            var retorno = new RetornoBase <int>();

            var livro = novoLivro.Fabricar();

            if (livro.EstaEmEstadoIntegro())
            {
                var aoInserir = repLivro.Inserir(livro);
                retorno.Valor = aoInserir.Valor;
                if (aoInserir.Problemas.Count > 0)
                {
                    retorno.Mensagem = "Não foi possível registrar o novo livro.";
                    retorno.Problemas.AddRange(aoInserir.Problemas);
                }
            }
            else
            {
                retorno.Mensagem = "Os dados do novo livro não foram devidamente informados.";
                retorno.Problemas.AddRange(livro.Problemas);
            }

            return(retorno);
        }
        public RetornoBase <int> Realizar(NovoLivro novoLivro)
        {
            var retorno = new RetornoBase <int>();

            var editora = new Editora(novoLivro.Editora.EditoraId, novoLivro.Editora.Nome, novoLivro.Editora.Site);
            var autores = new List <Autor>();

            foreach (var tautor in novoLivro.Autores)
            {
                autores.Add(new Autor(
                                tautor.AutorId,
                                new Dominio.Descritores.TNomePessoa(tautor.Nome, tautor.Sobrenome),
                                new Dominio.Descritores.TEmail(tautor.Email)
                                ));
            }

            var livro = new Livro(0, novoLivro.Titulo, novoLivro.Estante, novoLivro.AnoPublicacao, editora, autores);

            if (livro.EstaEmEstadoIntegro())
            {
                var aoInserir = repLivro.Inserir(livro);
                retorno.Valor = aoInserir.Valor;
                if (aoInserir.Problemas.Count > 0)
                {
                    retorno.Mensagem = "Não foi possível registrar o novo livro.";
                    retorno.Problemas.AddRange(aoInserir.Problemas);
                }
            }
            else
            {
                retorno.Mensagem = "Os dados do novo livro não foram devidamente informados.";
                retorno.Problemas.AddRange(livro.Problemas);
            }

            return(retorno);
        }