public CarrinhoController(Sessao sessao, ProdutoR reposProduto, CarrinhoR reposCarrinho,
                                  FreteR reposFrete, ClienteR reposCliente)
        {
            _sessao = sessao;

            _reposProduto  = reposProduto;
            _reposCarrinho = reposCarrinho;
            _reposFrete    = reposFrete;
            _reposCliente  = reposCliente;
        }
        public async Task <IActionResult> CalcularFrete(string cep, string servico)
        {
            try
            {
                var lista    = new List <Produto>();
                var carrinho = _reposCarrinho.Buscar(_sessao.UsuarioSessao().IdCliente);

                var quantidade = new Dictionary <uint, uint>();

                foreach (var item in carrinho)
                {
                    lista.Add(_reposProduto.Buscar(item.IdProduto));
                    quantidade.Add(item.IdProduto, item.Quantidade);
                }

                return(Json(await _reposFrete.CalcularFrete(cep, FreteR.PrepararPacotes(lista, quantidade), servico)));
            }
            catch (Exception erro)
            {
                GerarLogErro(erro, (byte)Global.Entidade.Carrinho, (byte)Global.Acao.Visualizar);
                return(BadRequest(Global.Mensagem.FalhaBanco));
            }
        }