private async Task <ModuloControleFrete.Models.Frete> getFrete(ModuloControleFrete.Models.Produto produto)
        {
            produto.nCdEmpresa          = String.Empty;
            produto.sCdAvisoRecebimento = "N";
            produto.sDsSenha            = String.Empty;
            produto.nCdFormato          = 1; // caixa
            produto.nCdServico          = "40010";

            ModuloControleFrete.Models.Frete frete = await _freteService.GetFreteAsyncc(produto);

            if (frete != null && "0".Equals(frete.codeErro))
            {
                frete.dataPrevista = DateTime.Now;
                frete.dataPrevista = frete.dataPrevista.AddDays(frete.prazoEntregaDias);
                frete.Id           = Guid.NewGuid().ToString();
                return(frete);
            }
            else
            {
                return(frete);
            }
        }
        public async Task <ActionResult <Solicitacao> > CriarSolicitacao(Solicitacao solicitacao)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            string userId = HttpContext.User.Identity.Name;

            Usuario parceiro = _usuarioService.GetById(int.Parse(userId));

            if (parceiro == null)
            {
                return(BadRequest("Perceiro não encontrado."));
            }

            solicitacao.Parceiro = parceiro;

            ModuloControleFrete.Models.Produto produto = _mapper.Map <ModuloControleFrete.Models.Produto>(solicitacao.Produto);
            ModuloControleFrete.Models.Frete   frete   = await this.getFrete(produto);

            if (frete == null || !"0".Equals(frete.codeErro))
            {
                return(BadRequest(frete.msgErro));
            }

            solicitacao.Frete.dataPrevista     = frete.dataPrevista;
            solicitacao.Frete.prazoEntregaDias = frete.prazoEntregaDias;
            solicitacao.Frete.valor            = frete.valor;

            Solicitacao newSolicitacao = _service.CriarSolicitacao(solicitacao);

            newSolicitacao.Parceiro.PasswordHash = null;
            newSolicitacao.Parceiro.PasswordSalt = null;

            return(CreatedAtAction(nameof(getSolicitacaoPorId), new { id = newSolicitacao.Id }, newSolicitacao));
        }
        public async Task <ActionResult <ModuloControleFrete.Models.Frete> > SimularFrete(ModuloControleFrete.Models.Produto produto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            return(await this.getFrete(produto));
        }