diff --git a/TDD/biblioteca_test b/TDD/biblioteca_test deleted file mode 100755 index 5fa6b4a1ff76cde638fcf9cacb11eedc32b9228b..0000000000000000000000000000000000000000 Binary files a/TDD/biblioteca_test and /dev/null differ diff --git a/biblioteca b/biblioteca deleted file mode 100755 index 3621ce5dc50facf4c977390de080e6a4186d24f8..0000000000000000000000000000000000000000 Binary files a/biblioteca and /dev/null differ diff --git a/sources/ControladorUsuarios.cpp b/sources/ControladorUsuarios.cpp index 44d95f19db611d2f81b3cabd372cc8fd42786b73..94f9be65583ef738f5c251ba1245c3450b067c86 100644 --- a/sources/ControladorUsuarios.cpp +++ b/sources/ControladorUsuarios.cpp @@ -29,11 +29,11 @@ void ControladorUsuarios::mostrarDetalhes() const { bool ControladorUsuarios::adicionarUsuario(string nome, string CPF, string endereco, string telefone, string email){ // Check if the user does not exist - auto it = find_if(this->usuarios.begin(), this->usuarios.end(), [CPF](Usuario& u) { + auto user_it = find_if(this->usuarios.begin(), this->usuarios.end(), [CPF](Usuario& u) { return u.getCPF() == CPF; - }); + }); - if (it != this->usuarios.end()){ + if (user_it != this->usuarios.end()){ cerr << "> Erro: Usuario com esse CPF já existe, ignorando inserção" << endl; return false; } @@ -48,19 +48,19 @@ bool ControladorUsuarios::adicionarUsuario(string nome, string CPF, string ender chrono::year_month_day ControladorUsuarios::registrarEmprestimo(string CPF, shared_ptr<DescricaoObra> descricao){ // Search for user - auto it = find_if(usuarios.begin(), usuarios.end(), [CPF](Usuario& u) { + auto user_it = find_if(usuarios.begin(), usuarios.end(), [CPF](Usuario& u) { return u.getCPF() == CPF; - }); + }); - if (it == usuarios.end()) { + if (user_it == usuarios.end()) { cerr << "> Erro: Usuario não encontrado" << endl; return chrono::year_month_day{chrono::year{0}, chrono::month{0}, chrono::day{0}}; } - chrono::year_month_day dataDevolucao = it->emprestar(descricao); - if (0 == int(dataDevolucao.year()) && 0 == unsigned(dataDevolucao.month()) && 0 == unsigned(dataDevolucao.day())) { - cerr << "> Erro: Falha ao realizar um emprestimo" << endl; - } + chrono::year_month_day dataDevolucao = user_it->emprestar(descricao); + //if (int(dataDevolucao.year()) == 0 && unsigned(dataDevolucao.month()) == 0 && unsigned(dataDevolucao.day()) == 0) { + // cerr << "> Erro: Falha ao realizar um emprestimo" << endl; + //} return dataDevolucao; } @@ -69,16 +69,16 @@ chrono::year_month_day ControladorUsuarios::registrarEmprestimo(string CPF, shar int ControladorUsuarios::retornarEmprestimo(string CPF, shared_ptr<DescricaoObra> descricao){ // Search for user - auto it = find_if(usuarios.begin(), usuarios.end(), [CPF](Usuario& u) { + auto user_it = find_if(usuarios.begin(), usuarios.end(), [CPF](Usuario& u) { return u.getCPF() == CPF; - }); + }); - if (it == usuarios.end()) { + if (user_it == usuarios.end()) { cerr << "> Erro: Usuario não encontrado" << endl; return -1; } - if (!it->devolver(descricao)){ + if (!user_it->devolver(descricao)){ cerr << "> Erro: Falha ao realizar a devolução" << endl; return -1; } @@ -90,30 +90,30 @@ int ControladorUsuarios::retornarEmprestimo(string CPF, shared_ptr<DescricaoObra int ControladorUsuarios::recuperarMultas(string CPF){ // Search for user - auto it = find_if(usuarios.begin(), usuarios.end(), [CPF](Usuario& u) { + auto user_it = find_if(usuarios.begin(), usuarios.end(), [CPF](Usuario& u) { return u.getCPF() == CPF; - }); + }); - if (it == usuarios.end()) { + if (user_it == usuarios.end()) { cerr << "> Erro: Usuario não encontrado" << endl; - return 0; + return -1; } - return it->getMulta(); + return user_it->getMulta(); } bool ControladorUsuarios::registrarMultaPaga(string CPF, int valor){ // Search for user - auto it = find_if(usuarios.begin(), usuarios.end(), [CPF](Usuario& u) { + auto user_it = find_if(usuarios.begin(), usuarios.end(), [CPF](Usuario& u) { return u.getCPF() == CPF; - }); + }); - if (it == usuarios.end()) { + if (user_it == usuarios.end()) { cerr << "> Erro: Usuario não encontrado" << endl; return false; } - return it->pagarMulta(valor); + return user_it->pagarMulta(valor); } diff --git a/sources/Usuario.cpp b/sources/Usuario.cpp index 13569d11638f3305916d716a4ef0fe93c4076c85..bedb1db400fc31cd5daa93c077dd93e5ccf7e457 100644 --- a/sources/Usuario.cpp +++ b/sources/Usuario.cpp @@ -30,7 +30,7 @@ chrono::year_month_day Usuario::emprestar(shared_ptr<DescricaoObra> descricao){ // Check number of Borrowed works if (this->emprestimos->size() >= 3) { - cerr << "> Erro: Usuario já possui três empresimos! Ignorando operação" << endl; + cerr << "> Erro: Usuario já possui três emprestimos! Ignorando operação" << endl; return chrono::year_month_day{chrono::year{0}, chrono::month{0}, chrono::day{0}}; } diff --git a/sources/main.cpp b/sources/main.cpp index 0b5ae75f0da0c49cf0d116197637a7949701a119..973e49d519ac14bb608a999af9ab092f8814e69b 100644 --- a/sources/main.cpp +++ b/sources/main.cpp @@ -2,6 +2,7 @@ #include <string> #include <limits> #include <memory> +#include <chrono> #include "Biblioteca.hpp" #include "Livro.hpp" @@ -76,7 +77,6 @@ int main(){ ControladorUsuarios contUsuarios = bib.getContUsuarios(); 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"); // Cria Obras ControladorObras contObras = bib.getContObras(); @@ -89,7 +89,7 @@ int main(){ cout << "> Criando Livros" << endl; contObras.adicionarObra(make_shared<Livro>("C++ Programming", 2022, "John Doe", "Tech Books")); - contObras.mostrarDetalhes(); + //contObras.mostrarDetalhes(); // Interation Loop int option = START; @@ -107,11 +107,12 @@ int main(){ switch (option) { case ADDUSER: - cout << "Entre com o nome: "; cin >> nome; - cout << "Entre com o CPF: "; cin >> userCPF; - cout << "Entre com o endereco: "; cin >> endereco; - cout << "Entre com o telefone: "; cin >> telefone; - cout << "Entre com o email: "; cin >> email; + cin.ignore(); + cout << "Entre com o nome: "; getline(cin, nome); + cout << "Entre com o CPF: "; cin >> userCPF; cin.ignore(); + cout << "Entre com o endereco: "; getline(cin, endereco); + cout << "Entre com o telefone: "; cin >> telefone; + cout << "Entre com o email: "; cin >> email; if (contUsuarios.adicionarUsuario(nome, userCPF, endereco, telefone, email)) cout << "> Usuario adicionado com sucesso!" << endl; break; @@ -125,7 +126,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; } + } else if (valor == 0) { cout << "> Aviso: Usuario não possui multas" << endl; } + else { cout << "> Erro: Usuario não encontrado" << endl; } break; case PAYFEES: @@ -137,18 +139,20 @@ int main(){ case ADDWORK: cout << "Entre com o tipo da obra (periodico|livro): "; cin >> tipoObra; cin.ignore(); if (tipoObra == "periodico") { - cout << "Entre com o titulo: "; getline(cin, titulo); - cout << "Entre com o ano: "; cin >> ano; - cout << "Entre com o volume: "; cin >> volume; - cout << "Entre com o mês: "; cin >> mes; + cout << "Entre com o titulo: "; getline(cin, titulo); + cout << "Entre com o ano: "; cin >> ano; + cout << "Entre com o volume: "; cin >> volume; + cout << "Entre com o mês: "; cin >> mes; contObras.adicionarObra(make_shared<Periodico>(titulo, ano, volume, mes)); + cout << "> Obra adicionada!" << endl; } else if (tipoObra == "livro") { - cout << "Entre com o titulo: "; getline(cin, titulo); - cout << "Entre com o ano: "; cin >> ano; cin.ignore(); - cout << "Entre com o autor: "; getline(cin, autor); - cout << "Entre com o editora: "; getline(cin, editora); + cout << "Entre com o titulo: "; getline(cin, titulo); + cout << "Entre com o ano: "; cin >> ano; cin.ignore(); + cout << "Entre com o autor: "; getline(cin, autor); + cout << "Entre com o editora: "; getline(cin, editora); contObras.adicionarObra(make_shared<Livro>(titulo, ano, autor, editora)); - } else { cout << "Erro: Tipo não recinhecido! Ignorando operação" << endl; } + cout << "> Obra adicionada!" << endl; + } else { cout << "Erro: Tipo não reconhecido! Ignorando operação" << endl; } break; case LISTWORKS: contObras.mostrarDetalhes(); @@ -167,36 +171,47 @@ int main(){ break; case BORROWWORK: + cout << "Entre com o CPF do usuário: "; cin >> userCPF; cout << "Entre com o tipo da obra (periodico|livro): "; cin >> tipoObra; cin.ignore(); if (tipoObra == "periodico") { - cout << "Entre com o titulo: "; getline(cin, titulo); - cout << "Entre com o ano: "; cin >> ano; - cout << "Entre com o volume: "; cin >> volume; - cout << "Entre com o mês: "; cin >> mes; - contObras.solicitarEmprestimo(make_shared<Periodico>(titulo, ano, volume, mes)); + cout << "Entre com o titulo: "; getline(cin, titulo); + cout << "Entre com o ano: "; cin >> ano; + cout << "Entre com o volume: "; cin >> volume; + cout << "Entre com o mês: "; cin >> mes; + chrono::year_month_day devolucao = contUsuarios.registrarEmprestimo(userCPF, make_shared<Periodico>(titulo, ano, volume, mes)); + if (int(devolucao.year()) == 0 && + unsigned(devolucao.month()) == 0 && + unsigned(devolucao.day()) == 0) { + cerr << "> Erro: Falha ao realizar um emprestimo" << endl; + } } else if (tipoObra == "livro") { - cout << "Entre com o titulo: "; getline(cin, titulo); - cout << "Entre com o ano: "; cin >> ano; cin.ignore(); - cout << "Entre com o autor: "; getline(cin, autor); - cout << "Entre com o editora: "; getline(cin, editora); - contObras.solicitarEmprestimo(make_shared<Livro>(titulo, ano, autor, editora)); + cout << "Entre com o titulo: "; getline(cin, titulo); + cout << "Entre com o ano: "; cin >> ano; cin.ignore(); + cout << "Entre com o autor: "; getline(cin, autor); + cout << "Entre com o editora: "; getline(cin, editora); + chrono::year_month_day devolucao = contUsuarios.registrarEmprestimo(userCPF, make_shared<Livro>(titulo, ano, autor, editora)); + if (int(devolucao.year()) == 0 && + unsigned(devolucao.month()) == 0 && + unsigned(devolucao.day()) == 0) { + cerr << "> Erro: Falha ao realizar um emprestimo" << endl; + } } else { cout << "Erro: Tipo não reconhecido! Ignorando operação" << endl; } break; case RETURNWORK: cout << "Entre com o tipo da obra (periodico|livro): "; cin >> tipoObra; cin.ignore(); if (tipoObra == "periodico") { - cout << "Entre com o titulo: "; getline(cin, titulo); - cout << "Entre com o ano: "; cin >> ano; - cout << "Entre com o volume: "; cin >> volume; - cout << "Entre com o mês: "; cin >> mes; - contObras.devolverEmprestimo(make_shared<Periodico>(titulo, ano, volume, mes)); + cout << "Entre com o titulo: "; getline(cin, titulo); + cout << "Entre com o ano: "; cin >> ano; + cout << "Entre com o volume: "; cin >> volume; + cout << "Entre com o mês: "; cin >> mes; + //contObras.devolverEmprestimo(make_shared<Periodico>(titulo, ano, volume, mes)); } else if (tipoObra == "livro") { - cout << "Entre com o titulo: "; getline(cin, titulo); - cout << "Entre com o ano: "; cin >> ano; cin.ignore(); - cout << "Entre com o autor: "; getline(cin, autor); - cout << "Entre com o editora: "; getline(cin, editora); - contObras.devolverEmprestimo(make_shared<Livro>(titulo, ano, autor, editora)); + cout << "Entre com o titulo: "; getline(cin, titulo); + cout << "Entre com o ano: "; cin >> ano; cin.ignore(); + cout << "Entre com o autor: "; getline(cin, autor); + cout << "Entre com o editora: "; getline(cin, editora); + //contObras.devolverEmprestimo(make_shared<Livro>(titulo, ano, autor, editora)); } else { cout << "Erro: Tipo não reconhecido! Ignorando operação" << endl; } break;