private IHttpActionResult ValidarExportacaoPedido(GDASession sessao, PedidosExportarDto exportacao) { if (!Config.PossuiPermissao(Config.FuncaoMenuPedido.ExportarImportarPedido)) { return(this.ErroValidacao("Exportação desativada no sistema.")); } foreach (var pedido in exportacao.Pedidos) { if (pedido.IdPedido.GetValueOrDefault() > 0) { var situacao = PedidoExportacaoDAO.Instance.GetSituacaoExportacao(sessao, (uint)pedido.IdPedido); if (situacao == PedidoExportacao.SituacaoExportacaoEnum.Exportando) { return(this.ErroValidacao($"O pedido num.: {pedido.IdPedido} está com situacao Exportando, consulte a situação do pedido.")); } } } var validacao = this.ValidarExistenciaIdsFornecedoresPedidosEProdutosPedidoExportacao(sessao, exportacao.Pedidos); return(validacao); }
public IHttpActionResult ExportarPedidos(PedidosExportarDto dados) { using (var sessao = new GDATransaction()) { try { sessao.BeginTransaction(); var validacao = this.ValidarExportacaoPedido(sessao, dados); if (validacao != null) { return(validacao); } var fornecedor = FornecedorDAO.Instance.GetElement(sessao, (uint)(dados.IdFornecedor ?? 0)); var loja = LojaDAO.Instance.GetElement(sessao, UserInfo.GetUserInfo.IdLoja); Dictionary <uint, bool> idsPedidosComOuSemBeneficiamentos = new Dictionary <uint, bool>(); Dictionary <uint, List <uint> > idsPedidosProdutosPedido = new Dictionary <uint, List <uint> >(); List <uint> idsProdutosPedidos = new List <uint>(); List <uint> idsProdutosPedido = new List <uint>(); foreach (var pedido in dados.Pedidos) { idsPedidosComOuSemBeneficiamentos.Add( (uint)(pedido.IdPedido ?? 0), pedido.ExportarBeneficiamento.GetValueOrDefault(false)); idsProdutosPedido = pedido.IdsProdutoPedido.Select(idpp => (uint)idpp).ToList(); idsPedidosProdutosPedido.Add((uint)(pedido.IdPedido ?? 0), idsProdutosPedido); idsProdutosPedidos.AddRange(idsProdutosPedido); } uint[] listaIdsPedidos = new uint[idsPedidosComOuSemBeneficiamentos.Count]; idsPedidosComOuSemBeneficiamentos.Keys.CopyTo(listaIdsPedidos, 0); byte[] buffer = UtilsExportacaoPedido.ConfigurarExportacao(idsPedidosComOuSemBeneficiamentos, idsProdutosPedidos.ToArray()); UtilsExportacaoPedido.CriarExportacao((uint)fornecedor.IdFornec, listaIdsPedidos, idsPedidosProdutosPedido); var urlFornecedor = $"{fornecedor.UrlSistema.ToLower().Substring(0, fornecedor.UrlSistema.ToLower().LastIndexOf("/webglass")).TrimEnd('/')}/service/wsexportacaopedido.asmx"; object[] parametros = new object[] { loja.Cnpj, 1, buffer }; var retornoWebService = WebService.ChamarWebService(urlFornecedor, "SyncService", "EnviarPedidosFornecedor", parametros); string[] dadosRetorno = retornoWebService as string[]; UtilsExportacaoPedido.ProcessarDadosExportacao(sessao, dadosRetorno, idsPedidosComOuSemBeneficiamentos); sessao.Commit(); sessao.Close(); return(this.Ok(dadosRetorno[1])); } catch (Exception e) { sessao.Rollback(); sessao.Close(); return(this.ErroValidacao("Erro ao exportar pedidos.", e)); } } }