-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsqlQuery.py
142 lines (122 loc) · 5.25 KB
/
sqlQuery.py
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
import sqlite3
import hashlib
import json
def get_db_connection():
conn = sqlite3.connect('database.db')
conn.row_factory = sqlite3.Row
return conn
def get_cars(sort):
match sort:
case "status":
order = "statusCarro"
case "price":
order = "valorDiaria"
case "year":
order = "ano DESC"
conn = get_db_connection()
carros = conn.execute(f'SELECT * FROM carros ORDER BY {order}').fetchall()
conn.close()
cars_list = []
for car in carros:
dono = car['idUsuario']
conn = get_db_connection()
user = conn.execute(f'SELECT nome FROM usuarios WHERE id = {dono}').fetchall()
conn.close()
cars_list.append({'id': car['id'], 'modelo': car['modelo'], 'marca': car['marca'], 'ano': car['ano'], 'obs': car['observation'], 'valor': car['valorDiaria'], 'status': car['statusCarro'], 'dono': car['idUsuario'], 'nomeDono': user[0]['nome'], 'img': car['imgCarro']})
return cars_list
def new_car(model, marca, ano, obs, valor, status, dono, img):
conn = get_db_connection()
cur = conn.cursor()
cur.execute(f"""INSERT INTO carros (modelo, marca, ano, observation, valorDiaria, statusCarro, idUsuario, imgCarro) VALUES
('{model}', '{marca}', {ano}, 'Placa: {obs}', {valor}.0, {status}, {dono}, '{img}')""")
conn.commit()
conn.close()
result = {'sucess': True, 'message': "Carro salvo"}
return result
def new_rent(idCarro, idUsuario, data, local, hora, status):
conn = get_db_connection()
cur = conn.cursor()
cur.execute(f"""INSERT INTO aluguel (idCarro, idUsuario, dataAluguel, localRetirada, hora, finalizado) VALUES
('{idCarro}', '{idUsuario}', '{data}', '{local}', '{hora}', '{status}');""")
cur.execute(f"UPDATE carros SET statusCarro = 2 WHERE id = {idCarro}")
idAluguel = cur.execute("SELECT LAST_INSERT_ID();").fetchall()
conn.commit()
conn.close()
conn = get_db_connection()
cur = conn.cursor()
get_historico = conn.execute(f'SELECT historico FROM usuarios WHERE id={idUsuario}').fetchall()
conn.close()
historico = json.loads(get_historico[0])
historico['rentIds'].append(idAluguel)
historico['rentCount'] = int(historico['rentCount'])+1
new_historico = {"rentCount": historico['rentCount'], "rentIds": historico['rentIds']}
conn = get_db_connection()
cur = conn.cursor()
cur.execute(f"UPDATE usuarios SET historico = '{new_historico}' WHERE id = {idUsuario}")
conn.commit()
conn.close()
result = {'sucess': True, 'message': "Aluguel realizado"}
return result
def load_historico(id):
conn = get_db_connection()
get_historico = conn.execute(f'SELECT historico FROM usuarios WHERE id={id}').fetchall()
conn.close()
historico = json.loads(get_historico[0]['historico'])
alugueis = []
for rent in historico['rentIds']:
conn = get_db_connection()
rents = conn.execute(f'SELECT * FROM aluguel WHERE id={rent}').fetchall()
conn.close()
conn = get_db_connection()
idCarro = rents[0]['id']
carro = conn.execute(f'SELECT modelo, marca FROM carros WHERE id={idCarro}').fetchall()
conn.close()
aluguel = {'modelo': carro[0]['modelo'], 'marca': carro[0]['marca'], 'data': rents[0]['dataAluguel'], 'hora': rents[0]['hora'], 'finalizado': rents[0]['Finalizado']}
alugueis.append(aluguel)
history = {'rentCount': historico['rentCount'], 'alugueis': alugueis}
return history
def deleteCar(id):
conn = get_db_connection()
cur = conn.cursor()
cur.execute(f"DELETE FROM carros WHERE id = {id}")
conn.commit()
conn.close()
result = {'sucess': True, 'message': 'Carro deletado'}
return result
def updateCar(id, obs, valor, statusCarro):
conn = get_db_connection()
cur = conn.cursor()
cur.execute(f"UPDATE carros SET observation='Placa: {obs}', valorDiaria={valor}, statusCarro={statusCarro} WHERE id = {id}")
conn.commit()
conn.close()
result = {'sucess': True, 'message': 'Carro atualizado'}
return result
def get_login():
conn = get_db_connection()
login = conn.execute('SELECT * FROM loggedin').fetchall()
conn.close()
return {'logged': login[0]['logged'], 'id': login[0]['id'], 'nome': login[0]['nome']}
def login(email, senha):
f_senha = hashlib.sha1(senha.encode('utf-8')).hexdigest()
conn = get_db_connection()
usuarios = conn.execute('SELECT * FROM usuarios').fetchall()
conn.close()
for user in usuarios:
if user['email'] == email:
if user['senha'] == f_senha:
conn = get_db_connection()
cur = conn.cursor()
cur.execute(f"UPDATE loggedin SET logged = 'True', id = {user['id']}, nome = '{user['nome']}'")
conn.commit()
conn.close()
return {"sucess": True, "message": "Login sucedido"}
else:
return {"sucess": False, "message": "Senha inválida"}
return {"sucess": False, "message": "Usuário não encontrado"}
def logout():
conn = get_db_connection()
cur = conn.cursor()
cur.execute(f"UPDATE loggedin SET logged = 'False', id = 0, nome = ''")
conn.commit()
conn.close()
return {"sucess": True, "message": "Logout sucedido"}