Skip to content
Snippets Groups Projects
Commit c51d4882 authored by mgy20's avatar mgy20
Browse files

Alguns ajustes

parent c77d4626
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,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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment