protected void odsArquivoCalcEngine_Inserted(object sender, Colosoft.WebControls.VirtualObjectDataSourceStatusEventArgs e)
        {
            if (e.Exception == null)
            {
                // Salva o arquivo que será subido.
                var fluArquivoCalcEngine = ((FileUpload)dtvArquivoCalcEngine.FindControl("fluArquivoCalcEngine"));
                // Recupera o id do último arquivo CalcEngine inserido no sistema.
                var idArquivoCalcEngine = (uint)ArquivoCalcEngineDAO.Instance.ObtemUltimoIdArquivoCalcEngine();

                try
                {
                    // Variável criada para recuperar os arquivos do .calcpackage.
                    CalcEngine.ProjectFilesPackage pacote = null;
                    // Variável criada para ler a configuração do projeto.
                    CalcEngine.Dxf.DxfProject projeto = null;
                    // Lista criada para setar as variáveis do CalcEngine.
                    var lstVariaveisCalcEngine = new List <ArquivoCalcEngineVariavel>();

                    using (System.IO.Stream pacoteStream = fluArquivoCalcEngine.FileContent)
                    {
                        // Esse método deserializa os dados do pacote que estão contidos na Stream a recupera a instância do pacote de configuração.
                        pacote = CalcEngine.ProjectFilesPackage.LoadPackage(pacoteStream);
                    }

                    // Lê a configuração do projeto.
                    projeto = CalcEngine.Dxf.DxfProject.LoadFromPackage(pacote);

                    // Seta as variáveis do CalcEngine em uma lista.
                    foreach (var variavel in projeto.Variables.Where(f => f.GetType() == typeof(CalcEngine.Variable)))
                    {
                        // Cria uma nova variável CalcEngine.
                        var variavelCalcEngine = new ArquivoCalcEngineVariavel();
                        variavelCalcEngine.VariavelCalcEngine = variavel.Name;
                        // Salva o valor padrão da variável somente se não forem medidas de altura ou largura.
                        variavelCalcEngine.ValorPadrao = (decimal)(variavel.Name.ToLower() == "altura" || variavel.Name.ToLower() == "largura" ||
                                                                   variavel.Name.ToLower() == "alturabase" || variavel.Name.ToLower() == "largurabase" ? 0 : variavel.Value);
                        if (variavel.Name.ToLower() == "altura" || variavel.Name.ToLower() == "largura" ||
                            variavel.Name.ToLower() == "alturabase" || variavel.Name.ToLower() == "largurabase")
                        {
                            variavelCalcEngine.VariavelSistema = variavelCalcEngine.VariavelCalcEngine;
                        }

                        // Seta a variável CalcEngine na lista.
                        lstVariaveisCalcEngine.Add(variavelCalcEngine);
                    }

                    // Salva as variáveis do CalcEngine.
                    foreach (var variavel in lstVariaveisCalcEngine)
                    {
                        variavel.IdArquivoCalcEngine = idArquivoCalcEngine;
                        // Insere a variável do arquivo CalcEngine e associa-a ao arquivo.
                        ArquivoCalcEngineVariavelDAO.Instance.Insert(variavel);
                    }
                }
                catch (Exception ex)
                {
                    // Caso o arquivo tenha sido salvo, então deve ser excluído.
                    if (System.IO.File.Exists(ProjetoConfig.CaminhoSalvarCalcEngine + fluArquivoCalcEngine.FileName))
                    {
                        System.IO.File.Delete(ProjetoConfig.CaminhoSalvarCalcEngine + fluArquivoCalcEngine.FileName);
                    }

                    // Deleta as variáveis associadas ao arquivo CalcEngine.
                    ArquivoCalcEngineVariavelDAO.Instance.DeletaPeloIdArquivoCalcEngine(idArquivoCalcEngine);
                    ArquivoCalcEngineDAO.Instance.DeleteByPrimaryKey(idArquivoCalcEngine);

                    // Retorna uma mensagem informando o erro ocorrido ao salvar o arquivo.
                    throw ex;
                }

                Response.Redirect("CadArquivoCalcEngine.aspx?IdArquivoCalcEngine=" + idArquivoCalcEngine);
            }
            else
            {
                // Deleta as variáveis associadas ao arquivo CalcEngine.
                ArquivoCalcEngineVariavelDAO.Instance.DeletaPeloIdArquivoCalcEngine((uint)(ArquivoCalcEngineDAO.Instance.ObtemUltimoIdArquivoCalcEngine() + 1));

                Glass.MensagemAlerta.ErrorMsg("Erro ao inserir o arquivo.", e.Exception.InnerException, this);
                e.ExceptionHandled = true;
            }
        }
        /// <summary>
        /// Atualiza o arquivo selecionado na pasta dos arquivos CalcEngine.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void odsArquivoCalcEngine_Updating(object sender, Colosoft.WebControls.VirtualObjectDataSourceMethodEventArgs e)
        {
            var arquivoCalcEngine = e.InputParameters[0] as Glass.Data.Model.ArquivoCalcEngine;

            // Salva o arquivo que será subido.
            var fluArquivoCalcEngine = ((FileUpload)dtvArquivoCalcEngine.FindControl("fluArquivoCalcEngine"));


            if (fluArquivoCalcEngine != null && !String.IsNullOrEmpty(fluArquivoCalcEngine.FileName))
            {
                // Salva o nome do arquivo CalcEngine.
                var nomeArquivo = fluArquivoCalcEngine.FileName;

                /* Chamado 62033. */
                if (arquivoCalcEngine.Nome != nomeArquivo.ToUpper().Replace(".CALCPACKAGE", string.Empty))
                {
                    throw new Exception("Não é possível atualizar inserir um arquivo com o nome diferente do arquivo atualizado.");
                }

                // Variável criada para recuperar os arquivos do .calcpackage.
                CalcEngine.ProjectFilesPackage pacote = null;
                // Variável criada para ler a configuração do projeto.
                CalcEngine.Dxf.DxfProject projeto = null;
                // Lista criada para setar as variáveis do CalcEngine.
                var lstVariaveisCalcEngine = new List <ArquivoCalcEngineVariavel>();

                // Apaga o arquivo CalcEngine antigo.
                if (System.IO.File.Exists(ProjetoConfig.CaminhoSalvarCalcEngine + arquivoCalcEngine.Nome + ".calcpackage"))
                {
                    System.IO.File.Delete(ProjetoConfig.CaminhoSalvarCalcEngine + arquivoCalcEngine.Nome + ".calcpackage");
                }

                // Salva o arquivo CalcEngine.
                using (var m = new System.IO.MemoryStream(fluArquivoCalcEngine.FileBytes))
                {
                    //if (!ArquivoMesaCorteDAO.Instance.ValidarCadastroCalcEngine(m))
                    //    throw new Exception("O arquivo inserido está com falhas de validação");

                    //m.Position = 0;

                    var buffer = new byte[1024];
                    var read   = 0;

                    using (var file = System.IO.File.Create(ProjetoConfig.CaminhoSalvarCalcEngine + fluArquivoCalcEngine.FileName))
                    {
                        while ((read = m.Read(buffer, 0, buffer.Length)) > 0)
                        {
                            file.Write(buffer, 0, read);
                        }

                        file.Flush();
                    }
                }

                using (System.IO.Stream pacoteStream = fluArquivoCalcEngine.FileContent)
                {
                    // Esse método deserializa os dados do pacote que estão contidos na Stream a recupera a instância do pacote de configuração.
                    pacote = CalcEngine.ProjectFilesPackage.LoadPackage(pacoteStream);
                }

                // Lê a configuração do projeto.
                projeto = CalcEngine.Dxf.DxfProject.LoadFromPackage(pacote);

                try
                {
                    // Seta as variáveis do CalcEngine em uma lista.
                    foreach (var variavel in projeto.Variables.Where(f => f.GetType() == typeof(CalcEngine.Variable)))
                    {
                        // Cria uma nova variável CalcEngine.
                        var variavelCalcEngine = new ArquivoCalcEngineVariavel();
                        variavelCalcEngine.VariavelCalcEngine = variavel.Name;
                        // Salva o valor padrão da variável somente se não forem medidas de altura ou largura.
                        variavelCalcEngine.ValorPadrao = (decimal)(variavel.Name.ToLower() == "altura" || variavel.Name.ToLower() == "largura" ||
                                                                   variavel.Name.ToLower() == "alturabase" || variavel.Name.ToLower() == "largurabase" ? 0 : variavel.Value);
                        if (variavel.Name.ToLower() == "altura" || variavel.Name.ToLower() == "largura" ||
                            variavel.Name.ToLower() == "alturabase" || variavel.Name.ToLower() == "largurabase")
                        {
                            variavelCalcEngine.VariavelSistema = variavelCalcEngine.VariavelCalcEngine;
                        }

                        // Seta a variável CalcEngine na lista.
                        lstVariaveisCalcEngine.Add(variavelCalcEngine);
                    }

                    ArquivoCalcEngineVariavelDAO.Instance.DeletaPeloIdArquivoCalcEngine(arquivoCalcEngine.IdArquivoCalcEngine);

                    // Salva as variáveis do CalcEngine.
                    foreach (var variavel in lstVariaveisCalcEngine)
                    {
                        variavel.IdArquivoCalcEngine = arquivoCalcEngine.IdArquivoCalcEngine;
                        // Insere a variável do arquivo CalcEngine e associa-a ao arquivo.
                        ArquivoCalcEngineVariavelDAO.Instance.Insert(variavel);
                    }
                }
                catch (Exception ex)
                {
                    // Deleta as variáveis associadas ao arquivo CalcEngine.
                    ArquivoCalcEngineVariavelDAO.Instance.DeletaPeloIdArquivoCalcEngine(arquivoCalcEngine.IdArquivoCalcEngine);

                    // Retorna uma mensagem informando o erro ocorrido ao salvar o arquivo.
                    throw ex;
                }
            }
        }