LeagueStats/server-new/app/Controllers/Http/SummonersController.ts

82 lines
2.4 KiB
TypeScript
Raw Normal View History

2020-10-04 20:05:44 +00:00
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
2020-10-05 10:40:02 +00:00
import Summoner from 'App/Models/Summoner'
import MatchRepository from 'App/Repositories/MatchRepository'
2020-10-04 20:05:44 +00:00
import Jax from 'App/Services/Jax'
import MatchService from 'App/Services/MatchService'
2020-10-04 20:05:44 +00:00
import SummonerService from 'App/Services/SummonerService'
export default class SummonersController {
private async getSeasons (puuid: string) {
let seasons = await MatchRepository.seasons(puuid)
return seasons.length ? seasons.map(s => s._id) : [10]
}
2020-10-04 20:05:44 +00:00
/**
* POST: get basic summoner data
* @param ctx
2020-10-04 20:05:44 +00:00
*/
public async basic ({ request, response }: HttpContextContract) {
console.time('all')
const summoner = request.input('summoner')
const region = request.input('region')
console.log(summoner, region)
const regexSummonerName = new RegExp('^[0-9\\p{L} _\\.]+$', 'u')
if (!regexSummonerName.exec(summoner)) {
return response.json(null)
}
const finalJSON:any = {}
try {
const account = await SummonerService.getAccount(summoner, region)
// Check if the summoner is found
if (!account) {
return response.json(null)
}
account.region = region
finalJSON.account = account
// Summoner in DB
// const summonerDB = await Summoner.findOrCreate(
// { puuid: account.puuid },
// { puuid: account.puuid }
// )
2020-10-05 10:40:02 +00:00
let summonerDB = await Summoner.findOne({ puuid: account.puuid })
2020-10-04 20:05:44 +00:00
if(!summonerDB) {
2020-10-05 10:40:02 +00:00
summonerDB = await Summoner.create({ puuid: account.puuid })
2020-10-04 20:05:44 +00:00
}
// Summoner names
finalJSON.account.names = SummonerService.getAllSummonerNames(account, summonerDB)
// MATCH LIST
await MatchService.updateMatchList(account, summonerDB)
finalJSON.matchList = summonerDB.matchList
// All seasons the summoner has played
finalJSON.seasons = await this.getSeasons(account.puuid)
// CURRENT GAME
const currentGame = await Jax.Spectator.summonerID(account.id, region)
finalJSON.playing = !!currentGame
finalJSON.current = currentGame
// RANKED STATS
finalJSON.ranked = await SummonerService.getRanked(account, region)
// SAVE IN DB
// await summonerDB.save()
2020-10-05 10:40:02 +00:00
await summonerDB.save()
2020-10-04 20:05:44 +00:00
} catch (error) {
console.log('username not found')
console.log(error)
return response.json(null)
}
console.timeEnd('all')
return response.json(finalJSON)
}
}