diff --git a/main.cpp b/main.cpp index 0eefe5f69ccc6aa9112bdd551acdef879cf1ae01..7d830a6e39c81d2d607fec198189036284e1fa39 100644 --- a/main.cpp +++ b/main.cpp @@ -1,8 +1,7 @@ +#include <cstdlib> #include <iostream> -#include "./sources/ControladorUsuarios.hpp" -#include "./sources/ControladorObras.hpp" -#include "./sources/DescricaoObra.hpp" +#include "./sources/Biblioteca.hpp" using namespace std; @@ -25,32 +24,23 @@ int show_options () { cout << "3 - Pagar Multa" << endl; cout << "4 - Finalizar" << endl; cout << "> "; - cin >> option; + return option; } int main(){ + system("clear"); + + // Cria Biblioteca + cout << "> Instanciando Biblioteca" << endl; + Biblioteca bib; + // Cria Usuarios - cout << "> Instanciando Controlador de Usuarios" << endl; - ControladorUsuarios contUsuarios; + ControladorUsuarios contUsuarios = bib.getContUsuarios(); cout << "> Criando Usuarios" << endl; - //string nome, CPF, endereco, telefone, email; - //for (int i=0; i<3 ;i++){ - // cout << "Entre com o nome: "; cin >> nome; - // cout << "Entre com o CPF: "; cin >> CPF; - // cout << "Entre com o endereco: "; cin >> endereco; - // cout << "Entre com o telefone: "; cin >> telefone; - // cout << "Entre com o email: "; cin >> email; - - // if (contUsuarios.adicionarUsuario(nome, CPF, endereco, telefone, email)) - // cout << "> Usuario " << nome << " adicionado com sucesso" << endl; - // else - // cout << "> Falha ao adicionar o usuario " << nome << endl; - //} - contUsuarios.adicionarUsuario("Muriki", "12345", "Casa", "9999", "murikigy@gmail.com"); contUsuarios.adicionarUsuario("Nico", "54321", "Apartamento", "8888", "nico@gmail.com"); contUsuarios.adicionarUsuario("Marcus", "12345", "Casa", "9988", "marcus@gmail.com"); @@ -72,6 +62,8 @@ int main(){ if (valor > 0) { cout << "\nUsuario: " << userCPF << endl; cout << "Valor a pagar: " << valor << endl; + } else { + cout << "Aviso: Usuario não possui multas" << endl; } break; @@ -84,6 +76,10 @@ int main(){ case FINISH: cout << "> Finalizando programa!" << endl; return 0; + + default: + cout << "Comando não reconhecido!" << endl; + break; } } diff --git a/sources/Biblioteca.cpp b/sources/Biblioteca.cpp index 2e5e0dcb893caaf69ba30ba7a5b3c83892213a47..6b6322728518f01ab5398129f7f3d76233925777 100644 --- a/sources/Biblioteca.cpp +++ b/sources/Biblioteca.cpp @@ -1 +1,14 @@ #include "./Biblioteca.hpp" + +// Constructor +Biblioteca::Biblioteca() {} + + +// Methods +ControladorObras Biblioteca::getContObras(){ + return this->contObras; +} + +ControladorUsuarios Biblioteca::getContUsuarios(){ + return this->contUsuarios; +} diff --git a/sources/Biblioteca.hpp b/sources/Biblioteca.hpp index 091ed8af5210a62eee5031961db7fa771107dcf6..ebe965f78cc6589535a71c4568f6bee6de4c97cd 100644 --- a/sources/Biblioteca.hpp +++ b/sources/Biblioteca.hpp @@ -1,12 +1,23 @@ #ifndef __BIBLIOTECA__ #define __BIBLIOTECA__ +#include "./ControladorUsuarios.hpp" +#include "./ControladorObras.hpp" + +using namespace std; + class Biblioteca { private: + ControladorUsuarios contUsuarios; + ControladorObras contObras; public: // Construtor + Biblioteca(); + // Methods + ControladorObras getContObras(); + ControladorUsuarios getContUsuarios(); }; diff --git a/sources/ControladorUsuarios.cpp b/sources/ControladorUsuarios.cpp index 36b48ecd867bc87366b0a9dbc7db0403cef39903..82da897d96aab7dcf2bea856ce63047c0e27c5a7 100644 --- a/sources/ControladorUsuarios.cpp +++ b/sources/ControladorUsuarios.cpp @@ -38,13 +38,45 @@ bool ControladorUsuarios::adicionarUsuario(string nome, string CPF, string ender } -void ControladorUsuarios::registrarEmprestimo(string CPF, DescricaoObra descricao){ +int ControladorUsuarios::registrarEmprestimo(string CPF, DescricaoObra descricao){ + // Search for user + auto it = find_if(usuarios.begin(), usuarios.end(), [CPF](Usuario& u) { + return u.getCPF() == CPF; + }); + + if (it == usuarios.end()) { + cout << "> Erro: Usuario não encontrado" << endl; + return -1; + } + + if (!it->emprestar(descricao)){ + cout << "> Erro: Falha ao realizar um emprestimo" << endl; + return -1; + } + + // Calcula data e retorna + return 0; } int ControladorUsuarios::retornarEmprestimo(string CPF, DescricaoObra descricao){ + // Search for user + auto it = find_if(usuarios.begin(), usuarios.end(), [CPF](Usuario& u) { + return u.getCPF() == CPF; + }); + + if (it == usuarios.end()) { + cout << "> Erro: Usuario não encontrado" << endl; + return -1; + } + + if (!it->devolver(descricao)){ + cout << "> Erro: Falha ao realizar a devolução" << endl; + return -1; + } + return 0; } diff --git a/sources/ControladorUsuarios.hpp b/sources/ControladorUsuarios.hpp index 9d7b728383b2731019b910be6bc344c3b4ec48a8..72f064ba34401ad8453307d87f04c958ee20801d 100644 --- a/sources/ControladorUsuarios.hpp +++ b/sources/ControladorUsuarios.hpp @@ -20,7 +20,7 @@ class ControladorUsuarios { // Methods bool adicionarUsuario(string nome, string CPF, string endereco, string telefone, string email); - void registrarEmprestimo(string CPF, DescricaoObra descricao); + int registrarEmprestimo(string CPF, DescricaoObra descricao); int retornarEmprestimo(string CPF, DescricaoObra descricao); int recuperarMultas(string CPF); bool registrarMultaPaga(string CPF, int valor); diff --git a/sources/Usuario.cpp b/sources/Usuario.cpp index 1b323714c6ca4d3304e167039e05a675eeba29fc..f53612757ceaac79b73c8bf06390a41410659aab 100644 --- a/sources/Usuario.cpp +++ b/sources/Usuario.cpp @@ -34,8 +34,8 @@ bool Usuario::devolver(DescricaoObra descricao){ // Increase fees int Usuario::atualizarMulta(int valor){ - - return 0; + this->multas += valor; + return this->multas; } string Usuario::getCPF(){ @@ -49,13 +49,13 @@ int Usuario::getMulta(){ bool Usuario::pagarMulta(int valor){ // Check if the user has fees if (this->multas <= 0) { - cout << "> Aviso: Usuario não possui multas!" << endl; + cout << "> Aviso: Usuario não possui multas! Ignorando operação" << endl; return false; } // Check if the value is suficient if (this->multas > valor) { - cout << "> Error: Valor insuficiente para pagar as multas!" << endl; + cout << "> Erro: Valor insuficiente para pagar as multas!" << endl; return false; }