terminal ocm hall of fame
This commit is contained in:
parent
2542b91dc1
commit
8d2d9e6c52
15
prisma/migrations/20220818033147_registerghost/migration.sql
Normal file
15
prisma/migrations/20220818033147_registerghost/migration.sql
Normal file
@ -0,0 +1,15 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "Car" ALTER COLUMN "stLoseBits" SET DEFAULT 0;
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "GhostRegisteredFromTerminal" (
|
||||
"dbId" SERIAL NOT NULL,
|
||||
"carId" INTEGER NOT NULL,
|
||||
"competitionId" INTEGER,
|
||||
"opponentCarId" INTEGER NOT NULL,
|
||||
|
||||
CONSTRAINT "GhostRegisteredFromTerminal_pkey" PRIMARY KEY ("dbId")
|
||||
);
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "GhostRegisteredFromTerminal" ADD CONSTRAINT "GhostRegisteredFromTerminal_carId_fkey" FOREIGN KEY ("carId") REFERENCES "Car"("carId") ON DELETE RESTRICT ON UPDATE CASCADE;
|
@ -137,11 +137,12 @@ model Car {
|
||||
GhostBattleRecord GhostBattleRecord[]
|
||||
CarPathandTuning CarPathandTuning[]
|
||||
|
||||
OCMGhostBattleRecord OCMGhostBattleRecord[]
|
||||
OCMTally OCMTally[]
|
||||
OCMTop1Ghost OCMTop1Ghost[]
|
||||
OCMGhostTrail OCMGhostTrail[]
|
||||
OCMPlayRecord OCMPlayRecord[]
|
||||
OCMGhostBattleRecord OCMGhostBattleRecord[]
|
||||
OCMTally OCMTally[]
|
||||
OCMTop1Ghost OCMTop1Ghost[]
|
||||
OCMGhostTrail OCMGhostTrail[]
|
||||
OCMPlayRecord OCMPlayRecord[]
|
||||
GhostRegisteredFromTerminal GhostRegisteredFromTerminal[]
|
||||
}
|
||||
|
||||
model CarGTWing {
|
||||
@ -385,4 +386,12 @@ model OCMPeriod {
|
||||
periodId Int
|
||||
startAt Int
|
||||
closeAt Int
|
||||
}
|
||||
|
||||
model GhostRegisteredFromTerminal {
|
||||
dbId Int @id @default(autoincrement())
|
||||
car Car @relation(fields: [carId], references: [carId])
|
||||
carId Int
|
||||
competitionId Int?
|
||||
opponentCarId Int
|
||||
}
|
@ -50,12 +50,31 @@ export default class CarModule extends Module {
|
||||
|
||||
// Get current / previous active OCM Event
|
||||
let ocmEventDate = await prisma.oCMEvent.findFirst({
|
||||
where:{
|
||||
competitionEndAt:
|
||||
{
|
||||
lte: date // competitionEndAt less than current date
|
||||
}
|
||||
},
|
||||
where: {
|
||||
OR: [
|
||||
{
|
||||
// qualifyingPeriodStartAt is less than current date
|
||||
qualifyingPeriodStartAt: { lte: date },
|
||||
|
||||
// qualifyingPeriodCloseAt is greater than current date
|
||||
qualifyingPeriodCloseAt: { gte: date },
|
||||
},
|
||||
{
|
||||
// competitionStartAt is less than current date
|
||||
competitionStartAt: { lte: date },
|
||||
|
||||
// competitionCloseAt is greater than current date
|
||||
competitionCloseAt: { gte: date },
|
||||
},
|
||||
{
|
||||
// competitionCloseAt is less than current date
|
||||
competitionCloseAt: { lte: date },
|
||||
|
||||
// competitionEndAt is greater than current date
|
||||
competitionEndAt: {gte: date },
|
||||
}
|
||||
],
|
||||
},
|
||||
orderBy: [
|
||||
{
|
||||
dbId: 'desc'
|
||||
@ -65,72 +84,99 @@ export default class CarModule extends Module {
|
||||
},
|
||||
],
|
||||
});
|
||||
// Declare GhostCompetitionSchedule
|
||||
|
||||
let pastEvent = 0;
|
||||
if(!(ocmEventDate))
|
||||
{
|
||||
ocmEventDate = await prisma.oCMEvent.findFirst({
|
||||
orderBy: [
|
||||
{
|
||||
dbId: 'desc'
|
||||
},
|
||||
{
|
||||
competitionEndAt: 'desc',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
pastEvent = 1;
|
||||
}
|
||||
|
||||
// Current / previous OCM Event is found
|
||||
let ghostCarsNo1;
|
||||
let trailIdNo1: number = 0;
|
||||
if(ocmEventDate)
|
||||
{
|
||||
let pastDay = date - ocmEventDate.competitionEndAt
|
||||
|
||||
if(pastDay < 604800)
|
||||
// Get Previous Top 1 OCM
|
||||
if(pastDay < 604800 && pastEvent === 1)
|
||||
{
|
||||
let getNo1OCM = await prisma.oCMTally.findFirst({
|
||||
let checkRegisteredGhost = await prisma.ghostRegisteredFromTerminal.findFirst({
|
||||
where:{
|
||||
competitionId: ocmEventDate.competitionId,
|
||||
periodId: 999999999
|
||||
},
|
||||
orderBy:{
|
||||
result: 'desc'
|
||||
carId: body.carId
|
||||
}
|
||||
});
|
||||
|
||||
if(getNo1OCM)
|
||||
if(checkRegisteredGhost)
|
||||
{
|
||||
let carId = getNo1OCM.carId
|
||||
|
||||
// Get Car Data
|
||||
let cars = await prisma.car.findFirst({
|
||||
let getNo1OCM = await prisma.oCMTally.findFirst({
|
||||
where:{
|
||||
carId: carId
|
||||
},
|
||||
include:{
|
||||
gtWing: true
|
||||
}
|
||||
});
|
||||
|
||||
// Get Place
|
||||
let playedPlace = wm.wm.protobuf.Place.create({
|
||||
placeId: 'JPN0123',
|
||||
shopName: Config.getConfig().shopName,
|
||||
regionId: 18,
|
||||
country: 'JPN'
|
||||
});
|
||||
|
||||
// Get Ghost Trail
|
||||
let ghostTrailNo1 = await prisma.oCMTop1GhostTrail.findFirst({
|
||||
where:{
|
||||
carId: carId,
|
||||
competitionId: ocmEventDate.competitionId,
|
||||
periodId: 999999999
|
||||
},
|
||||
orderBy:{
|
||||
competitionId: 'desc'
|
||||
}
|
||||
});
|
||||
|
||||
trailIdNo1 = ghostTrailNo1!.dbId;
|
||||
if(getNo1OCM)
|
||||
{
|
||||
let carId = getNo1OCM.carId
|
||||
|
||||
ghostCarsNo1 = wm.wm.protobuf.GhostCar.create({
|
||||
car: {
|
||||
...cars!,
|
||||
lastPlayedPlace: playedPlace
|
||||
},
|
||||
area: ghostTrailNo1!.area,
|
||||
ramp: ghostTrailNo1!.ramp,
|
||||
path: ghostTrailNo1!.path,
|
||||
nonhuman: false,
|
||||
type: wm.wm.protobuf.GhostType.GHOST_NORMAL,
|
||||
trailId: trailIdNo1
|
||||
});
|
||||
// Get Car Data
|
||||
let cars = await prisma.car.findFirst({
|
||||
where:{
|
||||
carId: carId
|
||||
},
|
||||
include:{
|
||||
gtWing: true
|
||||
}
|
||||
});
|
||||
|
||||
// Get Place
|
||||
let playedPlace = wm.wm.protobuf.Place.create({
|
||||
placeId: 'JPN0123',
|
||||
shopName: Config.getConfig().shopName,
|
||||
regionId: 18,
|
||||
country: 'JPN'
|
||||
});
|
||||
|
||||
// Get Ghost Trail
|
||||
let ghostTrailNo1 = await prisma.oCMTop1GhostTrail.findFirst({
|
||||
where:{
|
||||
carId: carId,
|
||||
competitionId: ocmEventDate.competitionId,
|
||||
periodId: 999999999
|
||||
}
|
||||
});
|
||||
|
||||
trailIdNo1 = ghostTrailNo1!.dbId;
|
||||
|
||||
ghostCarsNo1 = wm.wm.protobuf.GhostCar.create({
|
||||
car: {
|
||||
...cars!,
|
||||
lastPlayedPlace: playedPlace
|
||||
},
|
||||
area: ghostTrailNo1!.area,
|
||||
ramp: ghostTrailNo1!.ramp,
|
||||
path: ghostTrailNo1!.path,
|
||||
nonhuman: false,
|
||||
type: wm.wm.protobuf.GhostType.GHOST_NORMAL,
|
||||
trailId: trailIdNo1
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -356,6 +356,8 @@ export default class GhostModule extends Module {
|
||||
where: {
|
||||
OR: [
|
||||
{
|
||||
competitionId: competition_id,
|
||||
|
||||
// qualifyingPeriodStartAt is less than current date
|
||||
qualifyingPeriodStartAt: { lte: date },
|
||||
|
||||
@ -363,6 +365,8 @@ export default class GhostModule extends Module {
|
||||
qualifyingPeriodCloseAt: { gte: date },
|
||||
},
|
||||
{
|
||||
competitionId: competition_id,
|
||||
|
||||
// competitionStartAt is less than current date
|
||||
competitionStartAt: { lte: date },
|
||||
|
||||
@ -370,6 +374,8 @@ export default class GhostModule extends Module {
|
||||
competitionCloseAt: { gte: date },
|
||||
},
|
||||
{
|
||||
competitionId: competition_id,
|
||||
|
||||
// competitionCloseAt is less than current date
|
||||
competitionCloseAt: { lte: date },
|
||||
|
||||
|
@ -60,6 +60,7 @@ export default class StartupModule extends Module {
|
||||
],
|
||||
});
|
||||
|
||||
let pastEvent = 0;
|
||||
if(!(ocmEventDate))
|
||||
{
|
||||
ocmEventDate = await prisma.oCMEvent.findFirst({
|
||||
@ -72,10 +73,13 @@ export default class StartupModule extends Module {
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
pastEvent = 1;
|
||||
}
|
||||
|
||||
// Declare GhostCompetitionSchedule
|
||||
let compeSch;
|
||||
let competitionSchedule;
|
||||
let lastCompetitionId: number = 0;
|
||||
if(ocmEventDate)
|
||||
{
|
||||
let pastDay = date - ocmEventDate.competitionEndAt
|
||||
@ -83,7 +87,7 @@ export default class StartupModule extends Module {
|
||||
if(pastDay < 604800)
|
||||
{
|
||||
// Creating GhostCompetitionSchedule
|
||||
compeSch = wm.wm.protobuf.GhostCompetitionSchedule.create({
|
||||
competitionSchedule = wm.wm.protobuf.GhostCompetitionSchedule.create({
|
||||
|
||||
// OCM Competition ID (1 = C1 (Round 16), 4 = Nagoya (Round 19), 8 = Hiroshima (Round 21))
|
||||
competitionId: ocmEventDate.competitionId,
|
||||
@ -116,6 +120,11 @@ export default class StartupModule extends Module {
|
||||
minigamePatternId: ocmEventDate.minigamePatternId
|
||||
});
|
||||
}
|
||||
|
||||
if(pastEvent === 1 && pastDay < 604800)
|
||||
{
|
||||
lastCompetitionId = ocmEventDate.competitionId
|
||||
}
|
||||
}
|
||||
|
||||
// Response data
|
||||
@ -133,7 +142,8 @@ export default class StartupModule extends Module {
|
||||
pluses: 0,
|
||||
releaseAt: 0 // idk what this is
|
||||
},
|
||||
competitionSchedule: compeSch || null // OCM Event Available or not
|
||||
latestCompetitionId: lastCompetitionId || null,
|
||||
competitionSchedule: competitionSchedule || null // OCM Event Available or not
|
||||
}
|
||||
|
||||
// Encode the response
|
||||
|
@ -520,6 +520,7 @@ export default class TerminalModule extends Module {
|
||||
|
||||
// Terminal OCM Ranking
|
||||
app.post('/method/load_ghost_competition_ranking', async (req, res) => {
|
||||
|
||||
// Get the information from the request
|
||||
let body = wm.wm.protobuf.LoadGhostCompetitionRankingRequest.decode(req.body);
|
||||
|
||||
@ -876,6 +877,7 @@ export default class TerminalModule extends Module {
|
||||
}
|
||||
else
|
||||
{
|
||||
// Response data
|
||||
msg = {
|
||||
error: wm.wm.protobuf.ErrorCode.ERR_SUCCESS,
|
||||
numOfParticipants: 0,
|
||||
@ -888,5 +890,83 @@ export default class TerminalModule extends Module {
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
})
|
||||
}
|
||||
|
||||
// Recieve user items
|
||||
app.post('/method/register_opponent_ghost', async (req, res) => {
|
||||
|
||||
// Get the information from the request
|
||||
let body = wm.wm.protobuf.RegisterOpponentGhostRequest.decode(req.body);
|
||||
|
||||
let ocmEventDate = await prisma.oCMEvent.findFirst({
|
||||
orderBy: [
|
||||
{
|
||||
dbId: 'desc'
|
||||
},
|
||||
{
|
||||
competitionEndAt: 'desc',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
if(ocmEventDate)
|
||||
{
|
||||
let checkRegisteredGhost = await prisma.ghostRegisteredFromTerminal.findFirst({
|
||||
where:{
|
||||
carId: body.carId
|
||||
}
|
||||
});
|
||||
|
||||
let getNo1OCM = await prisma.oCMTally.findFirst({
|
||||
where:{
|
||||
competitionId: ocmEventDate.competitionId,
|
||||
periodId: 999999999
|
||||
},
|
||||
orderBy:{
|
||||
competitionId: 'desc'
|
||||
}
|
||||
});
|
||||
|
||||
if(!(checkRegisteredGhost))
|
||||
{
|
||||
await prisma.ghostRegisteredFromTerminal.create({
|
||||
data:{
|
||||
carId: body.carId,
|
||||
competitionId: ocmEventDate!.competitionId,
|
||||
opponentCarId: getNo1OCM!.carId
|
||||
}
|
||||
});
|
||||
|
||||
console.log('Creating new Register Ghost Opponent entry')
|
||||
}
|
||||
else
|
||||
{
|
||||
await prisma.ghostRegisteredFromTerminal.update({
|
||||
where:{
|
||||
dbId: checkRegisteredGhost.dbId
|
||||
},
|
||||
data:{
|
||||
carId: body.carId,
|
||||
competitionId: ocmEventDate!.competitionId,
|
||||
opponentCarId: getNo1OCM!.carId
|
||||
}
|
||||
});
|
||||
|
||||
console.log('Updating Register Ghost Opponent entry')
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Response data
|
||||
let msg = {
|
||||
error: wm.wm.protobuf.ErrorCode.ERR_SUCCESS,
|
||||
}
|
||||
|
||||
// Encode the response
|
||||
let message = wm.wm.protobuf.RegisterOpponentGhostResponse.encode(msg);
|
||||
|
||||
// Send the response to the client
|
||||
common.sendResponse(message, res);
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user