Skip to content

Instantly share code, notes, and snippets.

@giovannamoeller
Created January 22, 2023 01:09
Show Gist options
  • Select an option

  • Save giovannamoeller/490ff0ad09fa21f50919ecff03d4b577 to your computer and use it in GitHub Desktop.

Select an option

Save giovannamoeller/490ff0ad09fa21f50919ecff03d4b577 to your computer and use it in GitHub Desktop.
projeto de implementação de sistemas
const axios = require('axios')
const apiKey = '4c9fecf589d34837a7e92b5fc42b6062'
const usuarios = []
const linhas = []
const todosOnibus = []
class Autenticacao {
constructor() {}
static login(email, senha) {
// checagem de credenciais
return new Pessoa()
}
}
class Convidado {
constructor() {}
consultarAtraso(linha) {
linha.consultaAtraso()
}
}
class Pessoa {
constructor(id, email, nome, senha, dataNascimento) {
this.id = id
this.email = email
this.nome = nome
this.senha = senha
this.dataNascimento = dataNascimento
}
}
class Usuario extends Pessoa {
constructor(id, email, nome, senha, dataNascimento) {
super(id, email, nome, senha, dataNascimento)
usuarios.push(this)
}
reportarAtraso(linha, posicaoUsuario, minutos) {
/* se usuário não ativar a localização e inserir o nome da rua em que se encontra
é necessário pegar calcular coordenadas dessa rua */
linha.requisicaoAtraso(posicaoUsuario, minutos)
}
consultarAtraso(linha) {
linha.consultaAtraso()
}
}
class Prefeitura extends Pessoa {
constructor(id, email, nome, senha, dataNascimento, idAdmin) {
super(id, email, nome, senha, dataNascimento)
this.idAdmin = idAdmin
}
atualizarLinha(linha) {
// alterar determinada linha de onibus
}
adicionarLinha(numero, nome, coordenadaPartida, coordenadaChegada) {
// adicionar determinada linha de onibus
const linha = new Linha(numero, nome, coordenadaPartida, coordenadaChegada)
linhas.push(linha)
return linha
}
removerLinha(linha) {
// remover determinada linha de onibus
}
atualizarOnibus(onibus) {
// alterar determinado onibus
}
adicionarOnibus(id, placa, horarioPartida, localPartida, linhaPertencente) {
// adicionar onibus
const onibus = new Onibus(id, placa, horarioPartida, localPartida, linhaPertencente)
todosOnibus.push(onibus)
return onibus
}
removerOnibus(onibus) {
// remover determinado onibus
}
}
class Linha {
constructor(numero, nome, coordenadaPartida, coordenadaChegada) {
this.numero = numero
this.nome = nome
this.coordenadaPartida = coordenadaPartida
this.coordenadaChegada = coordenadaChegada
this.atrasosReportados = []
}
consultaAtraso() {
console.log(this.atrasosReportados)
}
requisicaoAtraso(coordenada, minutos) {
// o usuário na coordenada tal reportou x minutos de atraso
// this.atrasosReportados.push()
}
}
class Onibus {
constructor(id, placa, horarioPartida, localPartida, linhaPertencente) {
this.id = id
this.placa = placa
this.horarioPartida = horarioPartida
this.localPartida = localPartida
this.linhaPertencente = linhaPertencente
}
}
class Coordenada {
constructor(latitude, longitude) {
this.latitude = latitude
this.longitude = longitude
}
async obterEndereco() {
const url = `https://api.geoapify.com/v1/geocode/reverse?lat=${this.latitude}&lon=${this.longitude}&format=json&apiKey=${apiKey}`
const response = await axios.get(url)
return await response.data.results[0].address_line1
}
}
const admin = new Prefeitura(1, 'giovanna@gmail.com', 'gigi', '123', '18/11/2000', 1)
const gaspariniCentro = admin.adicionarLinha(33, 'Gasparini - Centro', new Coordenada(-22.27406, -49.08255), new Coordenada(-22.32528, -49.07429))
admin.adicionarOnibus(01, 'FXE0202', '5:30', new Coordenada(-22.27406, -49.08255), gaspariniCentro)
admin.adicionarOnibus(02, 'XMD9402', '6:10', new Coordenada(-22.32528, -49.07429), gaspariniCentro)
const usuario = new Usuario(1, 'lucas@gmail.com', 'lucas', '1234', '11/02/2001')
const usuarioLogado = Autenticacao.login('lucas@gmail.com', '1234')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment