-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmiddlewares.js
133 lines (123 loc) · 6.31 KB
/
middlewares.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// const redis = require("redis");
// const port_redis = process.env.PORT || 6379;
// const redis_client = redis.createClient(port_redis);
const mongoose = require('mongoose')
const Battle = require('./models/Battle')
const Guild = require('./models/Guild')
module.exports = {
guildIdMDW: async function (req, res, next) {
let err = false
if (req.query.searchType === 'guild') {
try {
guilds = await Guild.find({"guildName": req.params.guildName.toUpperCase()})
req.guildID = guilds[0].guildID
// console.log(req.guildID)
} catch (er) {
// console.log('error', er)
err = true
}
} else if (req.query.searchType === 'alliance') {
req.allianceName = req.params.guildName
} else if (req.query.searchType === 'player') {
req.playerName = req.params.guildName
}
err ? res.send('Error') : next();
},
/* allianceMDW: function (req, res, next) {
console.log(req.params)
next();
},
playerMDW: function (req, res, next) {
console.log(req.params)
req.playerName = req.params.guildName
next();
}, */
battlesMDW: async function (req, res, next) {
req.query.minBattlePlayers = req.query.minBattlePlayers === undefined ? 0 : req.query.minBattlePlayers
// console.log('nbplayer', req.query.minBattlePlayers)
const offsetNumber = parseInt(req.params.offset) + 50
let query = {}
if (req.query.searchType === 'guild' && req.guildID) {
let guildTosearch = "battleData.guilds." + req.guildID
query[guildTosearch] = {$exists: true }
} else if (req.query.searchType === 'alliance') {
// console.log('alliance is', req.allianceName)
query = '{"$where": "function() { for (var field in this.battleData[0].alliances) { if (this.battleData[0].alliances[field].name == (\'' + req.allianceName + '\')) return true}return false}"}'
query = JSON.parse(query)
} else if (req.query.searchType === 'player') {
// console.log('player is', req.playerName)
query = '{"$where": "function() { for (var field in this.battleData[0].players) { if (this.battleData[0].players[field].name == (\'' + req.playerName + '\')) return true}return false}"}'
query = JSON.parse(query)
} // semaine milliseconde : < 604800000
query['battleTotalPlayers'] = { $gt: req.query.minBattlePlayers }
if (req.query.page === 'attendance') {
// query = '{"$where": "function() { if((new Date() - newDate(this.battleData[0].timeout)) < 604800000) { return true } return false }"}'
query['battleEndDate'] = { $gte: new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000) } // Less than one week
req.dataParse = await Battle.find(query).sort({battleID:-1})
} else {
req.dataParse = await Battle.find(query).sort({battleID:-1}).limit(offsetNumber)
}
// console.log('next', req.dataParse.length)
next()
},
// ADD MDW FOR GUILD PLAYER NUMBER
battlesAttendanceZergSize: function (req, res, next) {
if (req.dataParse) {
req.data = req.dataParse.filter( battle => {
const playerPerGuild = Object.values(battle.battleData[0].players).filter( player => player.guildId === req.guildID)
return playerPerGuild.length > req.query.minBattlePlayers
})
}
next();
},
battlesAttendanceZergPlayers: function (req, res, next) {
if (req.data) {
let players = {}
req.data.forEach( (battle, i) => {
const playerPerGuild = Object.values(battle.battleData[0].players).filter( player => player.guildId === req.guildID)
// req.data[i].guildPlayer = playerPerGuild.length
// console.log(req.data[i])
// console.log(playerPerGuild) //NEEDED WHEN WORKING
playerPerGuild.forEach( player => {
players[player.id] = {
name: player.name,
killFame : players[player.id] ? players[player.id].killFame + player.killFame : player.killFame,
kills : players[player.id] ? players[player.id].kills + player.kills : player.kills,
deaths : players[player.id] ? players[player.id].deaths + player.deaths : player.deaths,
assistance : players[player.id] ? players[player.id].assistance + player.assistance : player.assistance,
// deathFame : players[player.id] ? players[player.id].deathFame.push(player.deathFame) : player.deathFame,
itempower : players[player.id] ? player.itempower ? [...players[player.id].itempower, parseInt(player.itempower)] : players[player.id].itempower : player.itempower ? [parseInt(player.itempower)] : [],
weapon : players[player.id] ? player.weapon ? [...players[player.id].weapon, player.weapon] : players[player.id].weapon : player.weapon ? [player.weapon] : [],
attendance : players[player.id] ? players[player.id].attendance + 1 : 1,
}
})
})
console.log('attendance', req.params.guildName)
req.data = {battles : req.data, players : Object.values(players)}
}
next();
},
battlesOffsetMDW: function (req, res, next) {
if (req.dataParse) {
console.log('offset', parseInt(req.params.offset))
console.log('----')
if (!(req.dataParse.length < parseInt(req.params.offset))) {
req.data = req.dataParse.slice(req.params.offset, (parseInt(req.params.offset) + 50))
req.data.forEach( (battle, index) => {
req.data[index] = battle.battleData[0]
}
)
}
}
next();
},
killboardMDW: async function (req, res, next) {
console.log('killboard :', req.params.id)
await Battle.find({ battleID : req.params.id}).limit(1)
.then(killboard => {
// If battle is in DB
if (killboard.length) req.data = killboard[0].battleData[0]
next();
})
}
}