public void EditarPedido(Pedido ped, Model.retConsCad consulta) { using (var context = new ColinfoContext()) { var vnd = context.Arquivos .Include(vd => vd.Pedidos) .ThenInclude(cli => cli.Cliente) .ThenInclude(cons => cons.RetConsultaCadastro) .ThenInclude(inf => inf.infCons) .ThenInclude(cad => cad.infCad) .FirstOrDefault(v => v.ArquivoID == ped.Arquivo.ArquivoID); var oldPed = vnd.Pedidos.FirstOrDefault(pd => pd.PedidoID == ped.PedidoID); var ctxPed = Arquivos.FirstOrDefault(v => v.ArquivoID == ped.Arquivo.ArquivoID).Pedidos.FirstOrDefault(p => p.PedidoID == ped.PedidoID); oldPed.Cliente.RetConsultaCadastro = consulta; oldPed.Cliente.Situacao = SituacaoCadastro(oldPed); context.Entry(oldPed).State = EntityState.Modified; context.SaveChanges(); ctxPed.Cliente.RetConsultaCadastro = consulta; } }
public void ConsultaCadastro(Pedido ped) { int NumOfRetries = 10; int trysExCom = 0; int trysExOthers = 0; var recRet = new Model.retConsCad(); Task.Run(() => { TryAgain: try { var servicoNFe = new ServicosNFe(Configuracoes.CfgServico); //var cert = DFe.Utils.Assinatura.CertificadoDigital.ListareObterDoRepositorio(); //Configuracoes.CfgServico.Certificado.Serial = cert.SerialNumber; //Configuracoes.CfgServico.Certificado.Serial = "00D424AA"; var retornoConsulta = servicoNFe.NfeConsultaCadastro("MG", (ConsultaCadastroTipoDocumento)1, ped.Cliente.CNPJ.Replace(".", "").Replace("/", "").Replace("-", "")); recRet = FuncoesXml.XmlStringParaClasse <Model.retConsCad>(retornoConsulta.RetornoCompletoStr); //ped.Cliente.RetConsultaCadastro = recRet; using (var context = new ColinfoContext()) { var vnd = context.Arquivos .Include(vd => vd.Pedidos) .ThenInclude(cli => cli.Cliente) .ThenInclude(cons => cons.RetConsultaCadastro) .ThenInclude(inf => inf.infCons) .ThenInclude(cad => cad.infCad) .FirstOrDefault(v => v.ArquivoID == ped.Arquivo.ArquivoID); var oldPed = vnd.Pedidos.FirstOrDefault(pd => pd.PedidoID == ped.PedidoID); var ctxPed = Arquivos.FirstOrDefault(v => v.ArquivoID == ped.Arquivo.ArquivoID).Pedidos.FirstOrDefault(p => p.PedidoID == ped.PedidoID); var ctxVnd = Arquivos.FirstOrDefault(v => v.ArquivoID == ped.Arquivo.ArquivoID); oldPed.Cliente.RetConsultaCadastro = recRet; oldPed.Cliente.Situacao = SituacaoCadastro(oldPed); context.Entry(oldPed).State = EntityState.Modified; context.SaveChanges(); ctxPed.Cliente.RetConsultaCadastro = recRet; Arquivo = ctxVnd; NotifyOfPropertyChange(() => ctxVnd.Pedidos); NotifyOfPropertyChange(() => Arquivo.Pedidos); Arquivo.ForcePropertyChanged("Pedidos"); ctxPed.Cliente.ForcePropertyChanged("RetConsultaCadastro"); } } catch (ComunicacaoException ex) { if (trysExCom < NumOfRetries) { trysExCom += 1; goto TryAgain; } var consulta = new Model.retConsCad() { ErrorCode = "err_dives", ErrorMessage = ex.Message }; EditarPedido(ped, consulta); } catch (ValidacaoSchemaException ex) { var consulta = new Model.retConsCad() { ErrorCode = "err_dives", ErrorMessage = ex.Message }; EditarPedido(ped, consulta); } catch (DbUpdateException) { throw; } catch (Exception ex) { if (trysExOthers < NumOfRetries) { trysExOthers += 1; goto TryAgain; } var consulta = new Model.retConsCad() { ErrorCode = "err_dives", ErrorMessage = ex.Message }; EditarPedido(ped, consulta); } }); }