-
Notifications
You must be signed in to change notification settings - Fork 0
/
TelaPrincipal.cs
161 lines (152 loc) · 7.7 KB
/
TelaPrincipal.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
using System;
using System.Windows.Forms;
using System.Data.SQLite;
using System.IO;
namespace talentoso
{
public partial class TelaPrincipal : Form
{
public TelaPrincipal()
{
//Arquivos temporários
if (Directory.Exists("temp"))
{
Directory.Delete("temp", true);
Directory.CreateDirectory("temp");
}
else
{
Directory.CreateDirectory("temp");
}
//Nome do arquivo do backup do dia.
string autobackupArquivo = "Backup\\talentoso_" + DateTime.Now.ToString("dd-MM-yyyy") + ".db";
//Verifica se o banco de dados existe
if (File.Exists("talentoso.db") == true)
{
//Verificar se o backup do dia existe
if (File.Exists(autobackupArquivo))
{
//Apagar backups antigos. Serão armazenados somente arquivos para uma semana.
ApagaBackupAntigo();
}
//Caso o backup do dia não exista...
else
{
//Verificar se já foi feito algum backup na vida
if (Directory.Exists("Backup"))
{
//Se sim, o backup do dia não foi feito, e será feito neste momento.
File.Copy("talentoso.db", autobackupArquivo);
ApagaBackupAntigo();
}
//Se nunca nunca foi feito...
else
{
//...criar a pasta de backups e salvar o backup do dia.
Directory.CreateDirectory("Backup");
File.Copy("talentoso.db", autobackupArquivo);
}
}
//Caso o backup manual teha sido feito...
while (GetDifferenceDays() > 15)
{
MessageBox.Show("Para utilizar o programa, faça um backup agora!", "Alerta de backup", MessageBoxButtons.OK, MessageBoxIcon.Information);
SaveFileDialog dialogSalvarBackupObrigatorio = new SaveFileDialog();
dialogSalvarBackupObrigatorio.Title = "talentoso - Salvar cópia de segurança obrigatória...";
dialogSalvarBackupObrigatorio.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
dialogSalvarBackupObrigatorio.Filter = "Banco de dados do talentoso (*.db)|*.db";
//Nome do arquivo padrão: talentoso_dd-MM-yyyy.db
dialogSalvarBackupObrigatorio.FileName = "talentoso_" + DateTime.Now.ToString("dd-MM-yyyy") + ".db";
DialogResult resultado = dialogSalvarBackupObrigatorio.ShowDialog();
if (resultado == DialogResult.OK)
{
System.IO.File.Copy("talentoso.db", dialogSalvarBackupObrigatorio.FileName, true);
MessageBox.Show("Arquivo salvo com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
updataDate();
}
}
InitializeComponent();
}
else
{
//Criação de um banco de dados vazio.
MessageBox.Show("Banco de dados não encontrado!", "Erro fatal!", MessageBoxButtons.OK, MessageBoxIcon.Error);
using (SQLiteConnection cnn = new SQLiteConnection("data source=talentoso.db"))
{
cnn.Open();
using (SQLiteCommand cmd = new SQLiteCommand(cnn))
{
cmd.CommandText = "CREATE TABLE \"formulario\" (\"numero\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , \"nome\" TEXT NOT NULL, \"nascimento\" TEXT NOT NULL,\"matricula\" TEXT NOT NULL , \"email\" TEXT NOT NULL, \"telefone\" TEXT NOT NULL, \"classificacao\" TEXT NOT NULL,\"curso\" TEXT NOT NULL,\"semestre\" TEXT NOT NULL )";
cmd.ExecuteNonQuery();
cmd.CommandText = "CREATE TABLE \"talento_dicente\" (\"numero\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,\"classe\" TEXT NOT NULL, \"talento\" TEXT NOT NULL, \"experiencia\" TEXT NOT NULL, \"descricao\" TEXT NOT NULL, \"id_pessoa\" INTEGER NOT NULL)";
cmd.ExecuteNonQuery();
cmd.CommandText = "CREATE TABLE \"talento_docente\" (\"numero\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,\"atuacao\" TEXT NOT NULL,\"experiencia\" TEXT NOT NULL, \"descricao\" TEXT NOT NULL, \"id_pessoa\" INTEGER NOT NULL )";
cmd.ExecuteNonQuery();
cmd.CommandText = "CREATE TABLE \"backup\" (\"data\" TEXT NOT NULL )";
cmd.ExecuteNonQuery();
cmd.CommandText = "INSERT INTO \"backup\" VALUES (\"" + DateTime.Now.ToString("dd/MM/yyyy") + "\");";
cmd.ExecuteNonQuery();
}
cnn.Close();
}
MessageBox.Show("Um banco de dados vazio foi criado. Reinicie o programa.", "Banco de dados", MessageBoxButtons.OK, MessageBoxIcon.Information);
Environment.Exit(0);
}
}
private void novoToolStripMenuItem_Click(object sender, EventArgs e)
{
TelaCadastro cadastro = new TelaCadastro();
cadastro.ShowDialog();
}
private void consultaToolStripMenuItem_Click(object sender, EventArgs e)
{
TelaConsulta consulta = new TelaConsulta();
consulta.ShowDialog();
}
private void caçarToolStripMenuItem_Click(object sender, EventArgs e)
{
//Caça talentos: caçar.
}
public void ApagaBackupAntigo()
{
File.Delete("Backup\\talentoso_" + DateTime.Now.AddDays(-7).ToString("dd-MM-yyyy") + ".db");
File.Delete("Backup\\talentoso_" + DateTime.Now.AddDays(-8).ToString("dd-MM-yyyy") + ".db");
File.Delete("Backup\\talentoso_" + DateTime.Now.AddDays(-9).ToString("dd-MM-yyyy") + ".db");
}
//Coisa feia que deve estar escodida em uma método no fim do documento, mas nos trás a última data em que foi realizado no backup manual.
public double GetDifferenceDays()
{
double dias;
using (SQLiteConnection cnn = new SQLiteConnection("data source=talentoso.db "))
{
cnn.Open();
using (SQLiteCommand command = new SQLiteCommand("SELECT * FROM backup ", cnn))
{
using (SQLiteDataReader reader = command.ExecuteReader())
{
reader.Read();
string ultimadata = reader["data"].ToString();
TimeSpan direfencia = DateTime.Now - Convert.ToDateTime(ultimadata);
dias = direfencia.TotalDays;
}
}
cnn.Close();
}
return dias;
}
//Mais uma coisa feia: essa faz a atualização da data do backup manual.
public void updataDate()
{
using (SQLiteConnection cnn = new SQLiteConnection("data source = talentoso.db"))
{
cnn.Open();
using (SQLiteCommand command = new SQLiteCommand(cnn))
{
command.CommandText = " UPDATE backup SET data = '" + DateTime.Now.ToString("dd-MM-yyyy") + "' where rowid = 1";
command.ExecuteNonQuery();
}
cnn.Close();
}
}
}
}