Exemple #1
0
        /// <summary>
        /// Insere um registro na tabela de arquivos otimizados e salva as etiquetas otimizadas.
        /// </summary>
        /// <param name="direcao"></param>
        /// <param name="extensaoArquivo"></param>
        /// <param name="etiquetas"></param>
        /// <param name="codArquivoOtimiz"></param>
        /// <returns></returns>
        public ArquivoOtimizacao InserirArquivoOtimizacao(ArquivoOtimizacao.DirecaoEnum direcao,
                                                          string extensaoArquivo, List <RelModel.Etiqueta> etiquetas, List <string> codArquivoOtimiz)
        {
            List <string> etiq = new List <string>(), forma = new List <string>();

            foreach (RelModel.Etiqueta e in etiquetas)
            {
                etiq.Add(e.NumEtiqueta);
                forma.Add(e.Forma);
            }

            return(InserirArquivoOtimizacao(direcao, extensaoArquivo, etiq, forma, codArquivoOtimiz));
        }
Exemple #2
0
        /// <summary>
        /// Insere um registro na tabela de arquivos otimizados e salva as etiquetas otimizadas.
        /// </summary>
        /// <param name="direcao"></param>
        /// <param name="extensaoArquivo"></param>
        /// <param name="etiquetas"></param>
        /// <param name="formas"></param>
        /// <param name="codArquivoOtimiz"></param>
        /// <returns></returns>
        public ArquivoOtimizacao InserirArquivoOtimizacao(ArquivoOtimizacao.DirecaoEnum direcao,
                                                          string extensaoArquivo, List <string> etiquetas, List <string> formas, List <string> codArquivoOtimiz)
        {
            // Cria o registro na tabela
            ArquivoOtimizacao a = new ArquivoOtimizacao();

            a.IdFunc          = UserInfo.GetUserInfo.CodUser;
            a.DataCad         = DateTime.Now;
            a.Direcao         = (int)direcao;
            a.ExtensaoArquivo = extensaoArquivo.TrimEnd('\"');

            // Estão ocorrendo três erros misteriosos ao chamar esse insert, "The given key was not present in the dictionary",
            // "Probable I/O race condition..." e "Index out of range", alterei para tentar inserir 5 vezes e caso ocorra erro, salva o mesmo no banco
            var cont = 1;

            while (true)
            {
                try
                {
                    var id = Insert(a);
                    a.IdArquivoOtimizacao = id;
                    break;
                }
                catch
                {
                    Thread.Sleep(500);

                    if (cont++ == 6)
                    {
                        throw new Exception("Falha ao inserir arquivo otimização. ln.:162");
                    }
                }
            }

            // Insere as etiquetas na tabela auxiliar
            if (etiquetas != null)
            {
                for (int i = 0; i < etiquetas.Count; i++)
                {
                    if (etiquetas[i] == null)
                    {
                        continue;
                    }

                    EtiquetaArquivoOtimizacao e = new EtiquetaArquivoOtimizacao();
                    e.IdArquivoOtimiz      = a.IdArquivoOtimizacao;
                    e.NumEtiqueta          = etiquetas[i];
                    e.IdPedido             = Glass.Conversoes.StrParaUint(e.NumEtiqueta.Split('-')[0]);
                    e.TemArquivoOtimizacao = codArquivoOtimiz != null && formas != null && formas.Count > i &&
                                             !String.IsNullOrEmpty(formas[i]) && codArquivoOtimiz.Contains(formas[i] + ".SAG");

                    // Estão ocorrendo três erros misteriosos ao chamar esse insert, "The given key was not present in the dictionary",
                    // "Probable I/O race condition..." e "Index out of range", alterei para tentar inserir 5 vezes e caso ocorra erro, salva o mesmo no banco
                    cont = 1;
                    while (true)
                    {
                        try
                        {
                            EtiquetaArquivoOtimizacaoDAO.Instance.Insert(e);
                            break;
                        }
                        catch
                        {
                            Thread.Sleep(500);

                            if (cont++ == 6)
                            {
                                throw new Exception("Falha ao inserir etiquetas do arq. arquivo otimização. ln.:195");
                            }
                            ;
                        }
                    }
                }
            }

            return(a);
        }