public void DerrubaConexoes() { var context = new PostoContext(Configuracao); context.Query("SELECT pg_terminate_backend(PID) FROM pg_stat_activity WHERE PID <> pg_backend_pid()").ExecuteNonQuery(); context.Close(); }
/// <summary> /// Atualiza viewmodel com as informações do banco de dados /// </summary> public async Task <bool> AtualizaViewModel() { return(await Task.Run(() => { try { var context = new PostoContext(ConfiguracaoModel); var query = context.Query("SELECT *, (SELECT oft000.parversao FROM oft000 LIMIT 1) AS versao, NOW() AS dataAtual FROM atualiz"); using (var reader = query.ExecuteReader()) { while (reader.Read()) { AtualizarModel.Dia = reader.GetInt16(reader.GetOrdinal("atuDiaSema")); AtualizarModel.Hora = Convert.ToInt16(reader.GetString(reader.GetOrdinal("atuHoraMin")).Split(':')[0]); AtualizarModel.Minuto = Convert.ToInt16(reader.GetString(reader.GetOrdinal("atuHoraMin")).Split(':')[1]); AtualizarModel.UltimaData = reader.GetDateTime(reader.GetOrdinal("atuDatAtua")); AtualizarModel.Versao = reader.GetInt32(reader.GetOrdinal("versao")); AtualizarModel.DataAtual = reader.GetDateTime(reader.GetOrdinal("dataAtual")); } } context.Close(); return true; } catch (Exception e) { log.Error(e.Message); return false; } })); }
/// <summary> /// Atualiza data da atualização no banco de dados com a data atual /// </summary> private async Task <bool> AtualizarBanco(PostoContext context) { return(await Task.Run(() => { try { TelaPrincipal.AbaAtualizacao.LabelContent = "Atualizando versão do banco de dados..."; context.Query("UPDATE atualiz SET atuDatAtua = '" + DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "'").ExecuteNonQuery(); return true; } catch (Exception e) { log.Error(e.Message); TelaPrincipal.AbaAtualizacao.LabelContent = "Problemas ao atualizar versão."; return false; } })); }
public void CarregaIndicadores() { try { var context = new PostoContext(Configuracao); var query = context.Query("SELECT * FROM " + TabAtualizacao + " WHERE " + ColAtuCodigo + " = 1 LIMIT 1"); using (var reader = query.ExecuteReader()) { while (reader.Read()) { EmManutencao = (reader.GetString(reader.GetOrdinal(ColManutencao)) == "S") ? true : false; FimManutencao = (reader.GetString(reader.GetOrdinal(ColFimManutencao)) == "S") ? true : false; AtualizouBanco = (reader.GetString(reader.GetOrdinal(ColAtualizaDB)) == "S") ? true : false; AtualizouExe = (reader.GetString(reader.GetOrdinal(ColAtualizaExe)) == "S") ? true : false; } } context.Close(); } catch (Exception e) { log.Error(e.Message); } }
/// <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; })); }