public Produto CriarProduto(Produto produto)
 {
     produto.Validar();
     produto.Unidade.Validar();
     var unidade = _unidadeRepository.ObterPorCodigo(produto.Unidade.UnidadeCodigo);
     AssertionConcern.AssertArgumentNotEquals(unidade, null, Erros.UnitDoesNotExist);
     produto.Unidade = unidade;
     return _produtoRepository.Criar(produto);
 }
 public Produto AtualizarProduto(Produto produto)
 {
     produto.Validar();
     AssertionConcern.AssertArgumentNotEquals(0, produto.ProdutoCodigo, string.Format(Erros.NotZeroParameter, "ProdutoCodigo"));
     produto.Unidade.Validar();
     var unidade = _unidadeRepository.ObterPorCodigo(produto.Unidade.UnidadeCodigo);
     AssertionConcern.AssertArgumentNotEquals(unidade, null, Erros.UnitDoesNotExist);
     var produtoAtual = _produtoRepository.ObterComUnidadePorCodigo(produto.ProdutoCodigo);
     AssertionConcern.AssertArgumentNotEquals(produtoAtual, null, Erros.ProductDoesNotExist);
     produtoAtual.PrecoCusto = produto.PrecoCusto;
     produtoAtual.PrecoVenda = produto.PrecoVenda;
     produtoAtual.ProdutoNome = produto.ProdutoNome;
     produtoAtual.Unidade = unidade;
     return _produtoRepository.Atualizar(produtoAtual);
 }