Commit 36f53882 authored by Lucas Fernandes de Oliveira's avatar Lucas Fernandes de Oliveira

Merge branch 'issue/1' into 'develop'

Issue/1

See merge request !1
parents d863a731 6ea1fe52
This diff is collapsed.
......@@ -10,7 +10,7 @@
},
"repository": {
"type": "git",
"url": "git@gitlab.c3sl.ufpr.br:lfo14/treinamento-blendb.git"
"url": "git@gitlab.c3sl.ufpr.br:lfo14/treinamento-blendb3.git"
},
"keywords": [
"blendb"
......@@ -18,11 +18,15 @@
"author": "Lucas Fernandes de Oliveira",
"license": "ISC",
"dependencies": {
"@types/express": "^4.11.1",
"@types/pg": "^7.4.1",
"express": "^4.16.2",
"pg": "^7.4.1",
"ts-node": "^4.1.0",
"typescript": "^2.7.1"
"@types/express": "^4.17.1",
"@types/pg": "^7.11.2",
"body-parser": "^1.19.0",
"express": "^4.17.1",
"pg": "^7.12.1",
"ts-node": "^8.4.1",
"typescript": "^3.6.3"
},
"devDependencies": {
"tslint": "^5.20.0"
}
}
import { Compra } from "./compra";
import { Jogador } from "./jogador";
import { Jogo } from "./jogo";
export class DBHandler {
private jogadores: Jogador[];
private jogos: Jogo[];
private compras: Compra[];
constructor() {
this.jogadores = [];
this.jogos = [];
this.compras = [];
}
public createplayer(player: Jogador) {
return this.jogadores.push(player);
}
public creategame(game: Jogo) {
return this.jogos.push(game);
}
public createbuy(buy: Compra) {
return this.compras.push(buy);
}
public readplayer(ID: number): Jogador {
return this.jogadores[ID];
}
public readgame(ID: number): Jogo {
return this.jogos[ID];
}
public readbuy(ID: number): Compra {
return this.compras[ID];
}
public updateplayer(ID: number, newplayer: Jogador) {
return this.jogadores[ID] = newplayer;
}
public updategame(ID: number, newgame: Jogo) {
return this.jogos[ID] = newgame;
}
public updatebuy(ID: number, newbuy: Compra) {
return this.compras[ID] = newbuy;
}
public deleteplayer(ID: number) {
return this.jogadores.splice(ID, 1);
}
public deletegame(ID: number) {
return this.jogos.splice(ID, 1);
}
public deletebuy(ID: number) {
return this.compras.splice(ID, 1);
}
public list(argument: string) {
const nomes: string[] = [];
if (argument === "jogos" ) {
for (let i = 0; i < this.jogos.length; ++i) {
nomes.push(this.jogos[i].getname());
}
return nomes;
}
if (argument === "compras") {
for (let i = 0; i < this.compras.length; ++i) {
nomes.push(this.compras[i].writeinfo());
}
return nomes;
}
if (argument === "jogadores") {
for (let i = 0; i < this.jogadores.length; ++i) {
nomes.push(this.jogadores[i].getname());
}
return nomes;
}
return;
}
}
import { Jogador } from "./jogador";
import { Jogo } from "./jogo";
export class Compra {
private buyer: Jogador;
private game: Jogo;
private date: Date;
private owner: Jogador;
constructor(buyer, game, date, owner) {
this.buyer = buyer;
this.game = game;
this.date = date;
this.owner = owner;
}
public writeinfo(): string {
if (this.buyer === this.owner) {
return "O jogador " + this.buyer.getname() + " comprou o jogo " + this.game.getname() + " para ele mesmo." + " Preço: " + this.game.getprice() + "R$" + " Data: " + this.date + ".";
}
else {
return "O jogador " + this.buyer.getname() + " comprou o jogo " + this.game.getname() + " para o jogador " + this.owner.getname() + " Preço: " + this.game.getprice() + "R$" + " Data: " + this.date + ".";
}
}
}
import { Jogo } from "./jogo";
export class Jogador {
private name: string;
private jogos: string[];
private amigos: string[];
private carteira: number;
constructor(name, jogos : Jogo[], amigos : Jogador[], carteira) {
this.name = name;
this.jogos = [];
for (const jogo of jogos) {
this.jogos.push(jogo.getname());
}
this.amigos = [];
for (const amigo of amigos) {
this.amigos.push(amigo.getname());
}
this.carteira = carteira;
}
public writeinfo(): string {
return "nome: " + this.name + " carteira: " + this.carteira + "R$" + " jogos: " + this.jogos + " amigos: " + this.amigos + ".";
}
public getname(): string{
return this.name;
}
public getmoney(): number {
return this.carteira;
}
public buy(jogo: Jogo, jogador: Jogador): number {
if (this.carteira < jogo.getprice()) {
return 2;
}
if (this.name === jogador.getname()) {
if (this.jogos.some((value: string) => {
return value === jogo.getname();
})) {
return 4;
}
return 0;
} else {
if (jogador.library().some((value: string) => {
return value === jogo.getname();
})) {
return 3;
}
return 1;
}
}
public addfriend(jogador: Jogador) {
if (this.amigos.some((value1: string) => {
console.log(jogador.getname());
return value1 === jogador.getname();
})) {
return "Este jogador já foi adicionado.";
}
this.amigos.push(jogador.getname());
return "Jogador adicionado com sucesso.";
}
public library(): string[] {
return this.jogos;
}
public addcredit(amount: number): number {
return this.carteira = this.carteira + amount;
}
public newmoney(amout: number): number {
return this.carteira = this.carteira - amout;
}
public addgame(game: Jogo) {
return this.jogos.push(game.getname());
}
public balance(): string {
return "Balanço da carteira de " + this.name + ": " + this.carteira + "R$";
}
}
export class Jogo {
private name: string;
private developer: string;
private producer: string;
private release: Date;
private price: number;
constructor(name, developer, producer, release, price) {
this.name = name;
this.developer = developer;
this.producer = producer;
this.release = release;
this.price = price;
}
public writeinfo(): string {
return "nome: " + this.name + " preço: " + this.price + " desenvolvedora: " + this.developer + " produtora: " + this.producer + " lançamento: " + this.release+ ".";
}
public getname(): string {
return this.name;
}
public getprice(): number {
return this.price;
}
}
#!/usr/bin/env node
import * as express from "express";
import * as bodyParser from "body-parser";
import { Compra } from "./compra";
import { DBHandler } from "./DBHandler";
import { Jogador } from "./jogador";
import { Jogo } from "./jogo";
export interface Request extends express.Request {
db: DBHandler;
}
export type Middleware = (req: Request, res: express.Response, next: express.NextFunction) => void;
function dbhMW(): Middleware {
const dbH = new DBHandler();
return (req: Request, res: express.Response, next: express.NextFunction) => {
req.db = dbH;
next();
};
}
const app = express();
app.get("/", (req: express.Request, res: express.Response) => {
res.json({teste: "oi"});
app.use("/", bodyParser.json());
app.use("/", dbhMW());
app.post("/inicio", (req: Request, res: express.Response) => {
const jogador: Jogador = new Jogador(req.body.nome, [], [], 0);
req.db.createplayer(jogador);
console.log(jogador.writeinfo());
res.json(jogador.writeinfo());
});
app.get("/", (req: Request, res: express.Response) => {
const jogo1: Jogo = new Jogo("Portal 2", "Valve", "Valve", new Date("2012-01-01"), 25);
const jogo2: Jogo = new Jogo("The Witcher 3", "CD Projekt RED", "CD Projekt RED", new Date("2016-01-01"), 10);
req.db.creategame(jogo1);
req.db.creategame(jogo2);
const jogador1: Jogador = new Jogador("Batman", [], [], 110);
req.db.createplayer(jogador1);
const jogador2: Jogador = new Jogador("Robin", [jogo2], [jogador1], 0);
req.db.createplayer(jogador2);
req.db.readplayer(1).addcredit(100);
res.json({Acesse: "/adicionar-amigos ou /compra"});
});
app.get("/perfil/Robin", (req: Request, res: express.Response) => {
res.json(req.db.readplayer(1).writeinfo());
});
app.get("/perfil/:nome", (req: Request, res: express.Response) => {
const ID: number = req.db.list("jogadores").indexOf(req.params.nome);
console.log(ID);
res.json(req.db.readplayer(ID).writeinfo());
});
app.get("/catalogo", (req: Request, res: express.Response) => {
res.json(req.db.list("jogos"));
});
app.get("/jogadores", (req: Request, res: express.Response) => {
res.json(req.db.list("jogadores"));
});
app.get("/compras", (req: Request, res: express.Response) => {
res.json(req.db.list("compras"));
});
app.get("/comprar", (req: Request, res: express.Response) => {
if (req.db.readplayer(0).buy(req.db.readgame(0), req.db.readplayer(0)) === 0){
const compra = new Compra(req.db.readplayer(0), req.db.readgame(0), new Date("2019-01-01"), req.db.readplayer(0));
req.db.readplayer(0).newmoney(req.db.readgame(0).getprice());
req.db.readplayer(0).addgame(req.db.readgame(0));
req.db.createbuy(compra);
res.json(req.db.readbuy(0).writeinfo() + req.db.readplayer(0).balance());
} else if (req.db.readplayer(0).buy(req.db.readgame(0), req.db.readplayer(0)) === 2) {
res.json("Saldo insuficiente. Adicione mais dinheiro a sua conta.");
} else if (req.db.readplayer(0).buy(req.db.readgame(0), req.db.readplayer(0)) === 4) {
res.json("Você já possui este jogo.");
}
});
app.get("/comprar/amigo", (req: Request, res: express.Response) => {
if (req.db.readplayer(0).buy(req.db.readgame(0), req.db.readplayer(1)) === 2) {
res.json("Saldo insuficiente. Adicione mais dinheiro a sua conta.");
}
if (req.db.readplayer(0).buy(req.db.readgame(0), req.db.readplayer(1)) === 1) {
const compra = new Compra(req.db.readplayer(0), req.db.readgame(0), new Date("2019-01-01"), req.db.readplayer(1));
req.db.readplayer(0).newmoney(req.db.readgame(0).getprice());
req.db.readplayer(1).addgame(req.db.readgame(0));
req.db.createbuy(compra);
res.json(req.db.readbuy(0).writeinfo() + req.db.readplayer(0).balance());
} else if (req.db.readplayer(0).buy(req.db.readgame(0), req.db.readplayer(1)) === 3) {
res.json("O jogador " + req.db.readplayer(1).getname() + " já possui este jogo.");
}
});
app.get("/jogos-em-comum", (req: Request, res: express.Response) => {
res.json(req.db.readplayer(0).library().filter((value: string) => {
return req.db.readplayer(1).library().some((value1: string) => {
return value1 === value;
});
}));
});
app.get("/adicionar/amigo", (req: Request, res: express.Response) => {
res.json(req.db.readplayer(0).addfriend(req.db.readplayer(1)));
});
app.get("/adicionar/saldo", (req: Request, res: express.Response) => {
const saldo = 200;
req.db.readplayer(0).addcredit(saldo);
console.log(req.db.readplayer(0).getmoney());
res.json("O jogador " + req.db.readplayer(0).getname() + " adicionou " + saldo + "R$");
});
app.post("/adicionar-jogos", (req: Request, res: express.Response) => {
const game: Jogo = new Jogo(req.body.nome, req.body.dev, req.body.producer, new Date(req.body.release), req.body.price);
req.db.creategame(game);
console.log(req.db.readgame(0).writeinfo());
res.json(game.writeinfo());
});
app.listen(3000);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment