static HistoricoKhan() { var identificadoresProduto = new[] { new IdentificadorItemEsquema(nameof(Global.Negocios.Entidades.Produto.IdProd), typeof(int)), }; Produtos = new ItemEsquema <Global.Negocios.Entidades.Produto>( (int)EsquemaHistoricoKhan.Produtos, "Produto", "Integração dos produtos", identificadoresProduto, (produto) => new object[] { produto.IdProd }); var identificadoresNotaFiscal = new[] { new IdentificadorItemEsquema(nameof(Data.Model.NotaFiscal.IdNf), typeof(int)), }; NotasFiscais = new ItemEsquema <Data.Model.NotaFiscal>( (int)EsquemaHistoricoKhan.NotasFiscais, "NotaFiscal", "Integração das notas fiscais", identificadoresNotaFiscal, (notaFiscal) => new object[] { notaFiscal.IdNf }); }
private IEnumerable <object> ObterIdentificadores(ItemEsquema itemEsquema) { var identificadores = new List <object>(); var index = 0; foreach (var identificador in itemEsquema.Identificadores) { if (identificador.Tipo == typeof(int) || identificador.Tipo == typeof(uint)) { switch (index) { case 0: identificadores.Add(this.IdInteiro1); break; case 1: identificadores.Add(this.IdInteiro2); break; default: throw new InvalidOperationException("A quantidade de identificador é maior que a suportada."); } } else { identificadores.Add(this.IdTextual); } index++; } return(identificadores); }
public Item CriarItem(ItemEsquema itemEsquema) { if (this.Tipo == Glass.Data.Model.TipoEventoItemIntegracao.Falha) { Falha falha = null; if (!string.IsNullOrEmpty(this.TipoFalha)) { falha = new Falha(this.TipoFalha, this.MensagemFalha, this.PilhaChamadaFalha); } return(new Item(itemEsquema, this.Mensagem, falha, this.ObterIdentificadores(itemEsquema), this.Data)); } else { return(new Item(itemEsquema, ObterTipoItemHistorico(this.Tipo), this.Mensagem, this.ObterIdentificadores(itemEsquema), this.Data)); } }
/// <inheritdoc /> public IEnumerable <Item> ObterItensNaoIntegrados(ItemEsquema itemEsquema) { var consulta = SourceContext.Instance.CreateQuery() .From <Data.Model.EventoItemIntegracao>("ev") .InnerJoin <Data.Model.ItemIntegracao>("ev.IdItemIntegracao=i.IdItemIntegracao", "i") .LeftJoin <Data.Model.FalhaIntegracao>("ev.IdEventoItemIntegracao=f.IdEventoItemIntegracao", "f") .Where(@"i.IdEsquemaHistorico=?idEsquemaHistorico AND i.IdItemEsquemaHistorico=?idItemEsquemaHistorico AND i.Situacao=?situacao AND ev.Tipo=?eventoIntegrando") .Add("?idEsquemaHistorico", itemEsquema.Esquema.Id) .Add("?idItemEsquemaHistorico", itemEsquema.Id) .Add("?situacao", Data.Model.SituacaoItemIntegracao.Integrando) .Add("?eventoIntegrando", Data.Model.TipoEventoItemIntegracao.Integrando) .Select(@"i.IdInteiro1, i.IdInteiro2, i.IdTextual, ev.Tipo, ev.Mensagem, ev.Data, f.Tipo AS TipoFalha, f.Mensagem AS MensagemFalha, f.PilhaChamada AS PilhaChamadaFalha") .OrderBy("Data DESC"); return(consulta .Execute <ItemInfo>() .Select(f => f.CriarItem(itemEsquema))); }
/// <inheritdoc /> public IEnumerable <bool> VerificarItensIntegrados(ItemEsquema itemEsquema, IEnumerable <IEnumerable <object> > itensIdentificadores) { var consulta = SourceContext.Instance.CreateQuery() .From <Data.Model.ItemIntegracao>("i") .Where("i.IdEsquemaHistorico=?idEsquemaHistorico AND i.IdItemEsquemaHistorico=?idItemEsquemaHistorico") .Add("?idEsquemaHistorico", itemEsquema.Esquema.Id) .Add("?idItemEsquemaHistorico", itemEsquema.Id) .Select(@"i.IdInteiro1, i.IdInteiro2, i.IdTextual, i.Situacao"); var index = 0; foreach (var identificadores in itensIdentificadores) { using (var enumeradorIdentificadoresEsquema = itemEsquema.Identificadores.GetEnumerator()) using (var enumeradorIdentificadores = identificadores.GetEnumerator()) { while (enumeradorIdentificadoresEsquema.MoveNext() && enumeradorIdentificadores.MoveNext()) { var identificadorEsquema = enumeradorIdentificadoresEsquema.Current; var identificador = enumeradorIdentificadores.Current; if (identificador == null || (identificador as string) == string.Empty) { continue; } if (identificadorEsquema.Tipo == typeof(int) || identificadorEsquema.Tipo == typeof(uint)) { switch (index) { case 0: consulta .WhereClause .And("i.IdInteiro1=?idInteiro1") .Add("?idInteiro1", Convert.ToInt32(identificador, System.Globalization.CultureInfo.InvariantCulture)); break; case 1: consulta .WhereClause .And("i.IdInteiro2=?idInteiro2") .Add("?idInteiro2", Convert.ToInt32(identificador, System.Globalization.CultureInfo.InvariantCulture)); break; default: throw new InvalidOperationException("A quantidade de identificador é maior que a suportada."); } } else { var valor = identificador; var convertible = valor as IConvertible; if (convertible != null) { valor = convertible.ToString(System.Globalization.CultureInfo.InvariantCulture); } consulta .Where("i.IdTextual=?idTextual") .Add("?idTextual", valor?.ToString()); } } } } var situacoes = consulta .Execute() .Select(f => new { IdInteiro1 = f.GetInt32("IdInteiro1"), IdInteiro2 = f.GetInt32("IdInteiro2"), IdTextual = f.GetString("IdTextual") ?? string.Empty, Situacao = (Data.Model.SituacaoItemIntegracao)f.GetInt32("Situacao"), }) .ToList(); foreach (var identificadores in itensIdentificadores) { var idInteiro1 = 0; var idInteiro2 = 0; string idTextual = null; using (var enumeradorIdentificadoresEsquema = itemEsquema.Identificadores.GetEnumerator()) using (var enumeradorIdentificadores = identificadores.GetEnumerator()) { while (enumeradorIdentificadoresEsquema.MoveNext() && enumeradorIdentificadores.MoveNext()) { var identificadorEsquema = enumeradorIdentificadoresEsquema.Current; var identificador = enumeradorIdentificadores.Current; if (identificador == null || (identificador as string) == string.Empty) { continue; } if (identificadorEsquema.Tipo == typeof(int) || identificadorEsquema.Tipo == typeof(uint)) { switch (index) { case 0: idInteiro1 = Convert.ToInt32(identificador, System.Globalization.CultureInfo.InvariantCulture); break; case 1: idInteiro2 = Convert.ToInt32(identificador, System.Globalization.CultureInfo.InvariantCulture); break; } } else { var valor = identificador; var convertible = valor as IConvertible; if (convertible != null) { valor = convertible.ToString(System.Globalization.CultureInfo.InvariantCulture); } idTextual = valor?.ToString(); } } } var situacao = situacoes.FirstOrDefault(f => f.IdInteiro1 == idInteiro1 && f.IdInteiro2 == idInteiro2 && (f.IdTextual ?? string.Empty) == (idTextual ?? string.Empty))?.Situacao ?? Data.Model.SituacaoItemIntegracao.Integrando; yield return(situacao == Data.Model.SituacaoItemIntegracao.Integrado); } }
/// <inheritdoc /> public IEnumerable <Item> ObterItens(ItemEsquema itemEsquema, TipoItemHistorico?tipo, IEnumerable <object> identificadores) { var consulta = SourceContext.Instance.CreateQuery() .From <Data.Model.EventoItemIntegracao>("ev") .InnerJoin <Data.Model.ItemIntegracao>("ev.IdItemIntegracao=i.IdItemIntegracao", "i") .LeftJoin <Data.Model.FalhaIntegracao>("ev.IdEventoItemIntegracao=f.IdEventoItemIntegracao", "f") .Where("i.IdEsquemaHistorico=?idEsquemaHistorico AND i.IdItemEsquemaHistorico=?idItemEsquemaHistorico") .Add("?idEsquemaHistorico", itemEsquema.Esquema.Id) .Add("?idItemEsquemaHistorico", itemEsquema.Id) .Select(@"i.IdInteiro1, i.IdInteiro2, i.IdTextual, ev.Tipo, ev.Mensagem, ev.Data, f.Tipo AS TipoFalha, f.Mensagem AS MensagemFalha, f.PilhaChamada AS PilhaChamadaFalha") .OrderBy("Data DESC"); if (identificadores != null) { var index = 0; using (var enumeradorIdentificadoresEsquema = itemEsquema.Identificadores.GetEnumerator()) using (var enumeradorIdentificadores = identificadores.GetEnumerator()) { while (enumeradorIdentificadoresEsquema.MoveNext() && enumeradorIdentificadores.MoveNext()) { var identificadorEsquema = enumeradorIdentificadoresEsquema.Current; var identificador = enumeradorIdentificadores.Current; if (identificador == null || (identificador as string) == string.Empty) { continue; } if (identificadorEsquema.Tipo == typeof(int) || identificadorEsquema.Tipo == typeof(uint)) { switch (index) { case 0: consulta .WhereClause .And("i.IdInteiro1=?idInteiro1") .Add("?idInteiro1", Convert.ToInt32(identificador, System.Globalization.CultureInfo.InvariantCulture)); break; case 1: consulta .WhereClause .And("i.IdInteiro2=?idInteiro2") .Add("?idInteiro2", Convert.ToInt32(identificador, System.Globalization.CultureInfo.InvariantCulture)); break; default: throw new InvalidOperationException("A quantidade de identificador é maior que a suportada."); } } else { var valor = identificador; var convertible = valor as IConvertible; if (convertible != null) { valor = convertible.ToString(System.Globalization.CultureInfo.InvariantCulture); } consulta .Where("i.IdTextual=?idTextual") .Add("?idTextual", valor?.ToString()); } } } } if (tipo.HasValue) { var tipoEvento = ObterTipoEvento(tipo.Value); consulta .WhereClause .And("ev.Tipo=?tipoEvento") .Add("?tipoEvento", tipoEvento); } var itensIntegracao = consulta .ToVirtualResultLazy <ItemInfo>(); return(new VirtualList <Item>( 20, new VirtualListLoaderHandler <Item>(this.ProcessarItens), new ProcessadorItensInfo { ItemEsquema = itemEsquema, ItensIntegracao = itensIntegracao, })); }