Skip to content
Snippets Groups Projects
Commit b16423d1 authored by Nico's avatar Nico
Browse files

Merge branch 'main' of gitlab.c3sl.ufpr.br:mgy20/Design-biblioteca

parents 1e488d88 c51d4882
No related branches found
No related tags found
No related merge requests found
File deleted
File deleted
......@@ -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);
}
......@@ -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}};
}
......
......@@ -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,9 +107,10 @@ 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;
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))
......@@ -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:
......@@ -142,13 +144,15 @@ int main(){
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);
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,19 +171,30 @@ 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));
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));
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;
......@@ -190,13 +205,13 @@ int main(){
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));
//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));
//contObras.devolverEmprestimo(make_shared<Livro>(titulo, ano, autor, editora));
} else { cout << "Erro: Tipo não reconhecido! Ignorando operação" << endl; }
break;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment