-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathremove_book.cpp
More file actions
125 lines (114 loc) · 4.75 KB
/
Copy pathremove_book.cpp
File metadata and controls
125 lines (114 loc) · 4.75 KB
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
#include "remove_book.h"
#include "ui_remove_book.h"
remove_book::remove_book(int &id, QWidget *parent)
: QDialog(parent)
, ui(new Ui::remove_book), id_usuario(id)
{
ui->setupUi(this);
// prepara para verificar se o usuário já tem livros cadastrados
QSqlQuery query;
query.prepare("SELECT ID_LIVRO FROM banco_livros WHERE id_usuario = :id");
query.bindValue(":id", id_usuario);
if(query.exec())
{
if(!query.next())
{
ui->txt_aviso->setText("Opa! Você não tem livros cadastrados ainda!");
ui->insert_titulo->setVisible(false);
ui->insert_autor->setVisible(false);
ui->insert_formato->setVisible(false);
ui->txt_autor->setVisible(false);
ui->txt_formato->setVisible(false);
ui->txt_titulo->setVisible(false);
ui->btn_remover->setVisible(false);
}
}
else
qDebug() << "Falha ao atualizar livro.";
}
remove_book::~remove_book()
{
delete ui;
}
void remove_book::on_btn_remover_clicked()
{
// obtém as informações inseridas
QString titulo = ui->insert_titulo->text();
QString autor = ui->insert_autor->text();
QString formato = ui->insert_formato->currentText();
QSqlQuery query;
// testa se as informações não estão vazias
if(!titulo.isEmpty() && !autor.isEmpty())
{
// busca o livro a partir das informações inseridas
query.prepare("SELECT ID_LIVRO FROM banco_livros WHERE id_usuario = :id and TITULO = :titulo and AUTOR = :autor and FORMATO = :formato");
query.bindValue(":id", id_usuario);
query.bindValue(":titulo", titulo);
query.bindValue(":autor", autor);
query.bindValue(":formato", formato);
if(query.exec())
{
if(query.next())
{
// excluí o dado desejado a partir do id do usuário, título, autor e formato do livro
query.prepare("DELETE FROM banco_livros WHERE id_usuario = :id and TITULO = :titulo and AUTOR = :autor and FORMATO = :formato");
query.bindValue(":id", id_usuario);
query.bindValue(":titulo", titulo);
query.bindValue(":autor", autor);
query.bindValue(":formato", formato);
if(query.exec())
{
ui->txt_aviso->setText("Livro deletado com sucesso!.");
ui->insert_titulo->clear();
ui->insert_autor->clear();
// atualização dos IDs dos livros restantes, a partir de um loop, começando do menor ID até o maior (todos os IDs são atualizados
// começando pelo menor, que irá valer 1
query.prepare("SELECT ID_LIVRO FROM banco_livros WHERE id_usuario = :id ORDER BY ID_LIVRO");
query.bindValue(":id", id_usuario);
if (query.exec())
{
int novo_id = 1;
while (query.next())
{
int id_livro_atual = query.value(0).toInt();
QSqlQuery updateQuery;
updateQuery.prepare("UPDATE banco_livros SET ID_LIVRO = :novo_id WHERE ID_LIVRO = :id_livro_atual AND id_usuario = :id");
updateQuery.bindValue(":novo_id", novo_id);
updateQuery.bindValue(":id_livro_atual", id_livro_atual);
updateQuery.bindValue(":id", id_usuario);
novo_id++;
if (!updateQuery.exec())
qDebug() << "Erro ao atualizar ID_LIVRO.";
}
}
else
qDebug() << "Falha ao buscar ID dos livros.";
}
else
qDebug() << "Falha ao deletar livro.";
}
else
ui->txt_aviso->setText("Livro não encontrado.");
}
else
qDebug() << "Falha ao buscar livro.";
}
else
ui->txt_aviso->setText("Os campos não podem estar vazios!");
}
void remove_book::on_btn_voltar_clicked()
{
QSqlQuery query;
query.prepare("SELECT USERNAME FROM usuarios WHERE ID = :id");
query.bindValue(":id", id_usuario);
QString username;
if(query.exec())
if(query.next())
username = query.value(0).toString();
else
qDebug() << "Falha ao buscar username.";
this->close();
mainwindow *main_window = new mainwindow(username);
main_window->setModal(true);
main_window->exec();
}