class User { constructor(nome, email, nascimento, role, ativo = true) { this.nome = nome this.email = email this.nascimento = nascimento this.role = role || 'estudante' this.ativo = ativo this.cursosMatriculados = []; }
static criarPerfil (nome, email, nascimento, role = 'estudante', ativo = true) {
console.log(`O(a) estudante ${nome} foi cadastrado com sucesso!`)
return User.listaUsu.push({nome: nome, email: email, nascimento: nascimento, role: role, ativo: ativo});
}
apagarPerfil() {
return `O(a) estudante ${this.nome} teve seu perfil deletado pelo e-mail ${this.email}.`;
}
exibirInfos() {
return `${this.nome}, ${this.email}.`;
}
static exibirListaCursos () {
console.log(`Cursos disponíveis: ${User.listaCursos.join(', ')}.`);
}
matricularEmCurso(nomeCurso) {
if(!User.listaCursos.includes(nomeCurso)) {
console.log(`O curso ${nomeCurso} não existe em nossa plataforma. Temos tais cursos disponíveis: ${User.listaCursos.join(', ')}.`)
} else {
console.log(`O(a) estudante ${this.nome} foi matriculado no curso ${nomeCurso} com sucesso!`)
return this.cursosMatriculados.push(nomeCurso);
}
}
exibirCursosMatriculados() {
return this.cursosMatriculados.length === 0 ? `O(a) estudante ${this.nome} não está matriculado(a) em algum curso.` : `O(a) estudante ${this.nome} está matriculado(a) em: ${this.cursosMatriculados.join(', ')}.`;
}
}
User.listaCursos = []; User.listaUsu = [];
class Docente extends User { constructor(nome, email, nascimento, role = 'docente', ativo = true) { super(nome, email, nascimento, role, ativo) }
static criarPerfilDocente(nome, email, nascimento, role, ativo) {
console.log(`O(a) professor(a) ${nome} foi cadastrado com sucesso!`);
return Docente.listaProfs.push({nome: nome, email: email, nascimento:nascimento, role:role, ativo:ativo});
}
avaliarEstudante (nomeEstudante, estudanteAprovado) {
const findEstudante = User.listaUsu.find(estudante => estudante.nome === nomeEstudante);
if (findEstudante === undefined){
console.log('O(a) estudante não foi encontrado.')
} else if(estudanteAprovado === false) {
console.log(`O estudante ${findEstudante.nome} foi reprovado.`);
} else if (estudanteAprovado === true){
console.log(`O(a) estudante ${findEstudante.nome} foi aprovado.`);
}
}
}
Docente.listaProfs = [];
class Admin extends User { constructor(nome, email, nascimento, role = 'admin', ativo = true) { super(nome, email, nascimento, role, ativo) }
criarCurso(nomeCurso) {
User.listaCursos.push(nomeCurso);
return `O curso ${nomeCurso} foi criado com sucesso!`;
}
excluirCurso(nomeCurso) {
const index = User.listaCursos.indexOf(nomeCurso);
if(index !== -1) {
User.listaCursos.splice(index, 1);
return `O curso ${nomeCurso} foi removido com sucesso!`;
} else {
console.log('Nenhum curso com esse nome foi encontrado.');
}
}
desativarPerfil(nome) {
const findDocente = Docente.listaProfs.find(docente => docente.nome === nome);
const findUser = User.listaUsu.find(user => user.nome === nome);
if(findUser !== undefined) {
findUser.ativo = false;
return `Perfil do usuário ${nome} foi desativado com sucesso.`;
} else if (findDocente !== undefined){
findDocente.ativo = false;
return `Perfil do(a) docente ${nome} foi desativado com sucesso.`;
} else {
console.log('Usuário não encontrado.');
}
}
}
const admin01 = new Admin ('Lúcia', 'l@l.com', '2023-04-05'); console.log(admin01.criarCurso('NodeJS')); console.log(admin01.criarCurso('JavaScript')); console.log(admin01.criarCurso('Bootstrap')); console.log(admin01.excluirCurso('Bootstrap'));
const user01 = new User('Théo', 't@t.com', '2025-03-01'); console.log(user01.apagarPerfil()); console.log(user01.exibirInfos()); console.log(User.exibirListaCursos()); console.log(user01.matricularEmCurso('NodeJS')); console.log(user01.matricularEmCurso('JavaScript')); console.log(user01.exibirCursosMatriculados()); const user02 = new User('Tomas', 't0@t0.com', '2024-03-01'); console.log(User.criarPerfil('Tomas', 't0@t0.com', '2024-03-01'));
const docente01 = new Docente('Rodrigo', 'r@r.com', '2010-03-01'); console.log(Docente.criarPerfilDocente('Rodrigo', 'r@r.com', '2010-03-01')); console.log(docente01.avaliarEstudante('Tomas', false));
console.log(admin01.desativarPerfil('Tomas'));