Skip to content

Commit

Permalink
Merge branch 'Senac-SOR-ADS:main' into Modulo-WEB
Browse files Browse the repository at this point in the history
  • Loading branch information
XlouPx authored Nov 28, 2024
2 parents ac93284 + ba49ae0 commit 3e0976d
Show file tree
Hide file tree
Showing 47 changed files with 2,122 additions and 1,307 deletions.
11 changes: 7 additions & 4 deletions App/controller/curso.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
from App.model.curso import Curso
from App.controller.utils import validarInputs

def cadastrarCurso(area, nome, oferta, periodo, carga, horas, alunos):
cursoModel = Curso(nome, oferta, periodo, carga, horas, alunos)
if cursoModel.cadastrar_curso(area):
return True
def cadastrarCurso(idArea, dados):
if validarInputs(dados) and idArea:
cursoModel = Curso(dados[1], dados[2], dados[3], dados[4], dados[5], dados[6])
if cursoModel.cadastrar_curso(idArea):
return True
print('Preencha todos os campos')
return False

def listarCursos():
Expand Down
8 changes: 7 additions & 1 deletion App/controller/logger.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
import logging
import os

class Log:

def __init__(self, name="basic") -> None:
self.logger = logging.getLogger(name)
self.logger.setLevel(logging.DEBUG)

caminho = 'env/log'
if (not os.path.exists(caminho)):
os.mkdir(caminho)

# HANDLER (ARQUIVO)
file_handler = logging.FileHandler(f"{name}.log", encoding="utf-8")
file_handler = logging.FileHandler(f"{caminho}/{name}.log", encoding="utf-8")
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter( logging.Formatter("%(asctime)s %(levelname)s %(message)s", datefmt="%d-%m-%Y %H:%M:%S"))
self.logger.addHandler(file_handler)
Expand Down
21 changes: 12 additions & 9 deletions App/controller/reserva.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

from datetime import datetime, timedelta
from App.model.reserva import Reserva
from App.controller.utils import modificarDataReserva
Expand All @@ -12,27 +13,30 @@ def fazendoReserva(idLogin, dados, diasValidos):
while diaAtual <= diaFim:
diaSemana = diaAtual.weekday()
if diasValidos[diaSemana]:
Reserva(idLogin, dados['idDocente'], dados['idCurso'], dados['idSala'], diaAtual, dados['inicioCurso'], dados['fimCurso'], dados['observações']).fazer_reserva()
Reserva(idLogin, dados['idDocente'], dados['idCurso'], dados['idSala'], diaAtual, dados['inicioCurso'], dados['fimCurso'], 0, dados['observações']).fazer_reserva()
diaAtual += timedelta(days=1)
print('Reserva feita com sucesso!')
return True

def validarCadastro(idLogin, dados, diasValidos):
def validarCadastro(dados, diasValidos):
diaInicio = modificarDataReserva(dados['diaInicio'])
diaInicio = datetime.strptime(diaInicio, "%d/%m/%Y")
diaFim = modificarDataReserva(dados['diaFim'])
diaFim = datetime.strptime(diaFim, "%d/%m/%Y")
diaAtual = diaInicio
listaDias = []

while diaAtual <= diaFim:
diaSemana = diaAtual.weekday()
validar = Reserva.validar_periodo(dados['idSala'], diaAtual, dados['inicioCurso'], dados['fimCurso'])
if diasValidos[diaSemana]:
if not Reserva(idLogin, dados['idDocente'], dados['idCurso'], dados['idSala'], diaAtual, dados['inicioCurso'], dados['fimCurso'], dados['observações']).validar_periodo():
print(f'Na seguinte data já existe uma reserva: {diaAtual}')
return False
if validar:
listaDias.append(validar[0])
diaAtual += timedelta(days=1)
print('Todos os dias estão livres')
return True

if listaDias != []:
return listaDias
return False

def trocar_reserva(dados1, dados2):
if Reserva.atualizar(dados1['idLogin'], dados1['idPessoa'], dados1['idcurso'], dados1['idSala'], dados1['dia'], dados1['inicioCurso'], dados1['fimCurso'], dados1['observações'], dados1['idReserva']):
Expand All @@ -48,5 +52,4 @@ def deletarReserva(idReserva):
def atualizarReserva(idLogin, idPessoa, idCurso, idSala, dia, hrInicio, hrFim, observacao, idReserva):
if Reserva.atualizar(idLogin, idPessoa, idCurso, idSala, dia, hrInicio, hrFim, observacao, idReserva):
return True
return False

return False
25 changes: 21 additions & 4 deletions App/model/conexao.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import os
import mysql.connector as connector
from dotenv import load_dotenv
from App.controller.logger import Log

def limparEnv():
try:
Expand All @@ -14,6 +15,8 @@ def limparEnv():
limparEnv()
load_dotenv()

log = Log('conexao')


class ConexaoBD:

Expand All @@ -37,35 +40,48 @@ def conectar(self) -> bool:

if not self.__conexao().is_connected():
raise Exception('Não foi conectado')


log.info("Conexão realizada com sucesso!")
return self.__conexao().is_connected()

except connector.Error as err:
self.__conn = connector.CMySQLConnection()
log.critical(f"Erro ao conectar | Erro: {err}")
return False

def desconectar(self) -> bool:
if self.__conexao().is_connected():
self.__conexao().close()
if self.__conn and self.__conn.is_connected():
self.__conn.close()
log.info("Conexão fechada.")

def buscar(self, query, param=None) -> list:
resultado = []
try:
cur = self.__conexao().cursor()
cur.execute(query, param)
resultado = cur.fetchone()
cur.close()

except Exception as e:
log.error(f"Erro de busca | Erro: {e}")
log.debug(resultado)
resultado = list()
finally:
return resultado


def buscarTodos(self, query, param=None) -> list:
try:
if not self.__conn or not self.__conn.is_connected():
self.conectar()
cur = self.__conexao().cursor()
cur.execute(query, param)
resultado = cur.fetchall()
cur.close()

except Exception as e:
log.error(f"Erro ao buscar todos os dados | Erro: {e}")
log.debug(resultado)
resultado = list()

finally:
Expand All @@ -79,7 +95,8 @@ def alterarDados(self, query, param=None):
return cur

except Exception as e:
print('erro: ', e)
log.error(f"Erro ao alterar dados | Erro: {e}")
log.debug(cur)
cur = None

def commit(self):
Expand Down
4 changes: 3 additions & 1 deletion App/model/curso.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,9 @@ def cadastrar_curso(self, id_area):
params = [id_area, self.__nome, self.__oferta, self.__periodo, self.__cargaHoraria, self.__horasDia, self.__qtdAlunos]
resultado = self.__banco.alterarDados(query, params)
self.__banco.desconectar()
return resultado
if resultado:
return True
return False

@classmethod
def retorna_todos_cursos(cls):
Expand Down
43 changes: 21 additions & 22 deletions App/model/reserva.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@

from App.model.conexao import ConexaoBD


class Reserva:
__banco = ConexaoBD()

def __init__(self, idLogin, idPessoa, idCurso, idSala, dia, horaInicio, horaFim, observacao = None):
def __init__(self, idLogin, idPessoa, idCurso, idSala, dia, horaInicio, horaFim, chaveDevolvida = 0, observacao = None):
self.__idLogin = idLogin
self.__idPessoa = idPessoa
self.__idCurso = idCurso
self.__idSala = idSala
self.__dia = dia
self.__horaInicio = horaInicio
self.__horaFim = horaFim
self.__chaveDevolvida = chaveDevolvida
self.__observacao = observacao

def get_idLogin(self):
Expand Down Expand Up @@ -58,27 +60,24 @@ def set_horaFim(self, horaFim):

def fazer_reserva(self):
"""Uma função para você tentar fazer uma reserva, caso já exista uma reserva no mesmo horário, dia e sala, ele alerta você. Caso contrário ele faz a reserva"""
if self.validar_periodo():
self.__banco.conectar()
query = "INSERT INTO reserva (idLogin, idPessoa, idCurso, idSala, dia, hrInicio, hrFim, observacao) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)"
parametros = (self.__idLogin, self.__idPessoa, self.__idCurso, self.__idSala, self.__dia, self.__horaInicio, self.__horaFim, self.__observacao)
self.__banco.alterarDados(query, parametros)
self.__banco.desconectar()
return True
else:
return False
self.__banco.conectar()
query = "INSERT INTO reserva (idLogin, idPessoa, idCurso, idSala, dia, hrInicio, hrFim, chaveDevolvida, observacao) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)"
parametros = (self.__idLogin, self.__idPessoa, self.__idCurso, self.__idSala, self.__dia, self.__horaInicio, self.__horaFim, self.__chaveDevolvida ,self.__observacao)
self.__banco.alterarDados(query, parametros)
self.__banco.desconectar()
return True


def validar_periodo(self):
@classmethod
def validar_periodo(cls, idSala, dia, horaInicio, horaFim):
"""Verifica se já existe uma reserva na data que foi requisitada"""
self.__banco.conectar()
cls.__banco.conectar()
query_verifica = "SELECT * FROM reserva WHERE idSala = %s AND dia = %s AND ((hrInicio < %s AND hrFim > %s) OR (hrInicio >= %s AND hrFim <= %s))"
parametros_verifica = (self.__idSala, self.__dia, self.__horaFim, self.__horaInicio, self.__horaInicio, self.__horaFim)
resultado = self.__banco.buscarTodos(query_verifica, parametros_verifica)
self.__banco.desconectar()
parametros_verifica = (idSala, dia, horaFim, horaInicio, horaInicio, horaFim)
resultado = cls.__banco.buscarTodos(query_verifica, parametros_verifica)
cls.__banco.desconectar()
if resultado:
return False
return True
return resultado
return False

@classmethod
def validar_troca(cls, idSala, dia, hrInicio, hrFim):
Expand Down Expand Up @@ -148,10 +147,10 @@ def deletar(cls, idReserva):


@classmethod
def atualizar(cls, idLogin, idPessoa, idCurso, idSala, dia, hrInicio, hrFim, observacao, idReserva):
def atualizar(cls, idLogin, idPessoa, idCurso, idSala, dia, hrInicio, hrFim, chaveDevolvida, observacao, idReserva):
cls.__banco.conectar()
query = "UPDATE reserva SET idLogin= %s, idPessoa= %s,idCurso= %s,idSala= %s,dia= %s,hrInicio= %s,hrFim= %s,observacao= %s WHERE idReserva = %s"
parametro = [idLogin, idPessoa, idCurso, idSala, dia, hrInicio, hrFim, observacao, idReserva]
query = "UPDATE reserva SET idLogin= %s, idPessoa= %s,idCurso= %s,idSala= %s,dia= %s,hrInicio= %s,hrFim= %s, chaveDevolvida= %s , observacao= %s WHERE idReserva = %s"
parametro = [idLogin, idPessoa, idCurso, idSala, dia, hrInicio, hrFim, chaveDevolvida, observacao, idReserva]
resultado = cls.__banco.alterarDados(query, parametro)
cls.__banco.desconectar()
if resultado.rowcount:
Expand All @@ -172,4 +171,4 @@ def trocar_sala(cls, idLogin, idSala, dia, hrInicio, hrFim):


if __name__ == "__main__":
pass
pass
3 changes: 1 addition & 2 deletions App/view/cadastrarCurso.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@ def popularJanela(self):
def on_btnCadastrarCurso_clicked(self):
info = self.getCadastroCurso()
idArea = self.dicionarioDeAreas[info[0]]
nome, oferta, periodo, carga, horas, alunos = info[1], info[2], info[3], info[4], info[5], info[6]
if cadastrarCurso(idArea, nome, oferta, periodo, carga, horas, alunos):
if cadastrarCurso(idArea, info):
validarAcao()


Expand Down
8 changes: 7 additions & 1 deletion App/view/cadastroPessoas.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from PyQt5.QtWidgets import QWidget, QLineEdit, QComboBox, QDateEdit
from PyQt5.uic import loadUi
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtCore import pyqtSlot, QDate
from App.controller.pessoa import cadastrarPessoa
from App.controller.utils import modificarData
from App.controller.utils import validarAcao
Expand All @@ -10,6 +10,12 @@ class cadastroPessoas(QWidget):
def __init__(self):
super().__init__()
loadUi('App/view/ui/cadastroPessoas.ui',self)

self.dataDeNascimento = self.findChild(QDateEdit, 'dataDeNascimento')

self.dataDeNascimento.setCalendarPopup(True)
self.dataDeNascimento.setDisplayFormat('dd/MM/yyyy')
self.dataDeNascimento.setDate(QDate.currentDate())

def getDadosCadastro(self):
nomePessoas = self.nomePessoas.text().strip()
Expand Down
Loading

0 comments on commit 3e0976d

Please sign in to comment.