Пример #1
0
        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 });
        }
Пример #2
0
            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);
            }
Пример #3
0
            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));
                }
            }
Пример #4
0
        /// <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)));
        }
Пример #5
0
        /// <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);
            }
        }
Пример #6
0
        /// <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,
            }));
        }