Esempio n. 1
0
        /// <summary>
        /// Atualização de arquivos
        /// </summary>
        private async Task <bool> AtualizarExe()
        {
            return(await Task.Run(() =>
            {
                try
                {
                    TelaPrincipal.AbaAtualizacao.IsIndeterminateBarra1 = false;
                    var FileLastModified = Ftp.GetFileLasModified(PathExe);

                    if (!FileLastModified.ToString().Equals(ConfiguracaoModel.VersaoArquivo))
                    {
                        TelaPrincipal.AbaAtualizacao.LabelContent = "Baixando arquivos da atualizaçãos...";
                        var arquivos = Ftp.Download(PathExe, TelaPrincipal);

                        using (MemoryStream mem = new MemoryStream(arquivos))
                            using (ZipArchive zipStream = new ZipArchive(mem))
                            {
                                var filesCount = 1;
                                foreach (ZipArchiveEntry file in zipStream.Entries)
                                {
                                    string completeFileName = Path.Combine($@"{ConfiguracaoModel.DiretorioSistema}\Update", file.FullName);
                                    string directory = Path.GetDirectoryName(completeFileName);

                                    if (!Directory.Exists(directory))
                                    {
                                        Directory.CreateDirectory(directory);
                                    }
                                    if (file.Name != "")
                                    {
                                        file.ExtractToFile(completeFileName, true);
                                    }

                                    TelaPrincipal.AbaAtualizacao.LabelContent = "Extraindo arquivo (" + filesCount + "/" + zipStream.Entries.Count.ToString() + ")";
                                    TelaPrincipal.AbaAtualizacao.ProgressoBarra1 = Math.Min((int)((double)filesCount / zipStream.Entries.Count) * 100, 100);
                                    //file.ExtractToFile(completeFileName, true);
                                    filesCount++;
                                }
                            }
                    }

                    ConfiguracaoModel.VersaoArquivo = FileLastModified.ToString().Trim();
                    ConfiguracaoModel.ToModel().GravarConfiguracao();
                    TelaPrincipal.Indicadores.AtualizouExe = true;
                    return true;
                }
                catch (Exception e)
                {
                    log.Error(e.Message);
                    TelaPrincipal.AbaAtualizacao.LabelContent = "Problemas ao atualizar programas.";
                    return false;
                }
            }));
        }
Esempio n. 2
0
        /// <summary>
        /// Roda Rmenu todos de uma vez e retorna a ultima versão
        /// </summary>
        private async Task <bool> AtualizarSql(PostoContext context, bool backup)
        {
            return(await Task.Run(async() =>
            {
                try
                {
                    await BuscaVersoes();

                    Rmenu = "";

                    TelaPrincipal.AbaAtualizacao.LabelContent = "Baixando o Rmenu...";
                    ListaSql.ForEach(row =>
                    {
                        Rmenu += Encoding.ASCII.GetString(Ftp.Download((PathSql + row.Arquivo), TelaPrincipal));
                    });

                    if (backup)
                    {
                        TelaPrincipal.AbaAtualizacao.ProgressoBarra2 = 17;

                        if (Rmenu != "")
                        {
                            if (ConfiguracaoModel.DiretorioPostgreSql == "")
                            {
                                throw new Exception("Não definido o diretório para do postgres para a rotina de backup do banco.");
                            }
                            else
                            {
                                TelaPrincipal.AbaAtualizacao.LabelContent = "Gerando backup do banco de dados";

                                if (!await ExecutaBackup())
                                {
                                    throw new Exception("Ocorreu um erro ao tentar gerar backup antes de atualizar o sistema.");
                                }
                            }
                        }
                    }

                    TelaPrincipal.AbaAtualizacao.ProgressoBarra2 = 25;
                    TelaPrincipal.AbaAtualizacao.IsIndeterminateBarra1 = true;
                    TelaPrincipal.AbaAtualizacao.LabelContent = "Executando Rmenu de v." + AtualizarModel.Versao.ToString() + " até v." + UltimaVersao.ToString() + "";

                    context.Query(Rmenu).ExecuteNonQuery();

                    TelaPrincipal.Indicadores.AtualizouBanco = true;
                    TelaPrincipal.AbaAtualizacao.IsIndeterminateBarra1 = false;
                }
                catch (Exception e)
                {
                    context.RollBack();
                    log.Error(e.Message);
                    TelaPrincipal.AbaAtualizacao.LabelContent = "Problemas ao rodar o Rmenu.";

                    return false;
                }
                finally
                {
                    context.Commit();

                    if (UltimaVersao <= 0)
                    {
                        UltimaVersao = AtualizarModel.Versao.GetValueOrDefault();
                    }
                }
                return true;
            }));
        }