working buytoken (untested)
This commit is contained in:
@@ -141,6 +141,8 @@ implements FrontworkComponent<ItemManagerIfc, ItemManagerFeatureIfc>, TableDefin
|
|||||||
await this.userManager.decrementCurrency(record.user, item.tier, 1)
|
await this.userManager.decrementCurrency(record.user, item.tier, 1)
|
||||||
const modifier = await this.calculatePriorities(itemname, character)
|
const modifier = await this.calculatePriorities(itemname, character)
|
||||||
|
|
||||||
|
const tx = await this.admin.knex.transaction()
|
||||||
|
|
||||||
if(streaks.length > 0){
|
if(streaks.length > 0){
|
||||||
const myStreak = streaks.find(token => token.itemname === itemname)
|
const myStreak = streaks.find(token => token.itemname === itemname)
|
||||||
if(myStreak){
|
if(myStreak){
|
||||||
@@ -148,6 +150,7 @@ implements FrontworkComponent<ItemManagerIfc, ItemManagerFeatureIfc>, TableDefin
|
|||||||
//getLogger('ItemManager').debug('update signupid and increment level')
|
//getLogger('ItemManager').debug('update signupid and increment level')
|
||||||
await this.admin
|
await this.admin
|
||||||
.knex(item.tier+'tokens')
|
.knex(item.tier+'tokens')
|
||||||
|
.transacting(tx)
|
||||||
.where({
|
.where({
|
||||||
characterid: character.id,
|
characterid: character.id,
|
||||||
itemname: item.itemname
|
itemname: item.itemname
|
||||||
@@ -162,6 +165,7 @@ implements FrontworkComponent<ItemManagerIfc, ItemManagerFeatureIfc>, TableDefin
|
|||||||
//getLogger('ItemManager').debug('delete streaks')
|
//getLogger('ItemManager').debug('delete streaks')
|
||||||
await Promise.all(streaks.map(async s => await this.admin
|
await Promise.all(streaks.map(async s => await this.admin
|
||||||
.knex(item.tier+'tokens')
|
.knex(item.tier+'tokens')
|
||||||
|
.transacting(tx)
|
||||||
.where({
|
.where({
|
||||||
itemname: s.itemname,
|
itemname: s.itemname,
|
||||||
characterid: character.id,
|
characterid: character.id,
|
||||||
@@ -170,15 +174,18 @@ implements FrontworkComponent<ItemManagerIfc, ItemManagerFeatureIfc>, TableDefin
|
|||||||
.del()
|
.del()
|
||||||
))
|
))
|
||||||
|
|
||||||
if(myStreak)
|
if(myStreak){
|
||||||
|
await tx.commit()
|
||||||
return await this.getToken(character, item)
|
return await this.getToken(character, item)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const matchingReserve = activeTokens.find(token => token.itemname === itemname)
|
const matchingReserve = activeTokens.find(token => token.itemname === itemname)
|
||||||
if(matchingReserve){
|
if(matchingReserve){
|
||||||
getLogger('ItemManager').debug('upgrade reserve')
|
//getLogger('ItemManager').debug('upgrade reserve')
|
||||||
await this.admin
|
await this.admin
|
||||||
.knex(item.tier+'tokens')
|
.knex(item.tier+'tokens')
|
||||||
|
.transacting(tx)
|
||||||
.increment('level')
|
.increment('level')
|
||||||
.where({
|
.where({
|
||||||
signupid: signup.id,
|
signupid: signup.id,
|
||||||
@@ -186,9 +193,10 @@ implements FrontworkComponent<ItemManagerIfc, ItemManagerFeatureIfc>, TableDefin
|
|||||||
itemname: item.itemname
|
itemname: item.itemname
|
||||||
})
|
})
|
||||||
}else{
|
}else{
|
||||||
getLogger('ItemManager').debug('new reserve')
|
//getLogger('ItemManager').debug('new reserve')
|
||||||
await this.admin
|
await this.admin
|
||||||
.knex(item.tier+'tokens')
|
.knex(item.tier+'tokens')
|
||||||
|
.transacting(tx)
|
||||||
.insert({
|
.insert({
|
||||||
characterid: character.id,
|
characterid: character.id,
|
||||||
itemname: item.itemname,
|
itemname: item.itemname,
|
||||||
@@ -196,6 +204,7 @@ implements FrontworkComponent<ItemManagerIfc, ItemManagerFeatureIfc>, TableDefin
|
|||||||
signupid: signup.id
|
signupid: signup.id
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
await tx.commit()
|
||||||
return await this.getToken(character, item)
|
return await this.getToken(character, item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { Raid, Signup, Character, RaidData, User, Spec } from "../../Types/Types
|
|||||||
|
|
||||||
export class IRaidManager{
|
export class IRaidManager{
|
||||||
getRaids: () => Promise<Raid[]>
|
getRaids: () => Promise<Raid[]>
|
||||||
createRaid: (raid:Raid) => Promise<any>
|
createRaid: (raid:Raid) => Promise<Raid>
|
||||||
addSignup: (signup: Signup) => Promise<any>
|
addSignup: (signup: Signup) => Promise<Signup>
|
||||||
removeSignup: (signup: Signup) => Promise<any>
|
removeSignup: (signup: Signup) => Promise<any>
|
||||||
getSignups: (raid:Raid) => Promise<(Signup & Character & Spec & User)[]>
|
getSignups: (raid:Raid) => Promise<(Signup & Character & Spec & User)[]>
|
||||||
sign: (userToken: string, character:Character, raid:Raid, late:boolean) => Promise<any>
|
sign: (userToken: string, character:Character, raid:Raid, late:boolean) => Promise<any>
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ implements FrontworkComponent<RaidManagerIfc, RaidManagerFeatureIfc>, IRaidManag
|
|||||||
table.string('description').notNullable()
|
table.string('description').notNullable()
|
||||||
table.string('title').notNullable()
|
table.string('title').notNullable()
|
||||||
table.integer('size').defaultTo(40)
|
table.integer('size').defaultTo(40)
|
||||||
table.enu('tier', _Tiers).defaultTo(null as any)
|
table.string('tier').defaultTo('null')
|
||||||
}
|
}
|
||||||
},{
|
},{
|
||||||
name: 'archive',
|
name: 'archive',
|
||||||
@@ -90,13 +90,22 @@ implements FrontworkComponent<RaidManagerIfc, RaidManagerFeatureIfc>, IRaidManag
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
createRaid = async (raid:Raid) => await this.admin
|
createRaid = async (raid:Raid) : Promise<Raid>=> {
|
||||||
|
const ids:number[] = await this.admin
|
||||||
.knex('raids')
|
.knex('raids')
|
||||||
.insert(raid)
|
.insert(raid)
|
||||||
|
|
||||||
addSignup = async (signup: Signup) => await this.admin
|
return await this.admin.knex('raids').where({id: ids[0]}).first()
|
||||||
|
}
|
||||||
|
|
||||||
|
addSignup = async (signup: Signup) => {
|
||||||
|
|
||||||
|
const ids:number[] = await this.admin
|
||||||
.knex('signups')
|
.knex('signups')
|
||||||
.insert(signup)
|
.insert(signup)
|
||||||
|
return await this.admin.knex('signups').where({id: ids[0]}).first()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
removeSignup = async (signup: Signup) => await this.admin
|
removeSignup = async (signup: Signup) => await this.admin
|
||||||
.knex('signups')
|
.knex('signups')
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ status="control">
|
|||||||
<br/><br />
|
<br/><br />
|
||||||
<span *ngFor="let token of tokens">
|
<span *ngFor="let token of tokens">
|
||||||
[ {{token.level}} ]
|
[ {{token.level}} ]
|
||||||
<wowhead [item]="token"></wowhead><br />
|
<wowhead [item]="token"></wowhead>
|
||||||
</span>
|
</span>
|
||||||
</nb-card-body>
|
</nb-card-body>
|
||||||
</nb-card>
|
</nb-card>
|
||||||
|
|||||||
@@ -33,6 +33,10 @@ export class FrontcraftCreateRaidsComponent implements OnInit {
|
|||||||
loadNext(cardData) {
|
loadNext(cardData) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onTierSelect(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
onTemplateSelect(){
|
onTemplateSelect(){
|
||||||
const templateDate = new Date(this.template.start)
|
const templateDate = new Date(this.template.start)
|
||||||
this.title = this.template.title
|
this.title = this.template.title
|
||||||
|
|||||||
+75
-1
@@ -9,6 +9,7 @@ import { SpecT } from "../src/backend/Types/PlayerSpecs";
|
|||||||
|
|
||||||
type protoAccount<C extends Class = Class> = {
|
type protoAccount<C extends Class = Class> = {
|
||||||
name : string,
|
name : string,
|
||||||
|
pwHash?: string
|
||||||
rank : Rank,
|
rank : Rank,
|
||||||
race: Race,
|
race: Race,
|
||||||
class: C,
|
class: C,
|
||||||
@@ -200,7 +201,8 @@ describe('Frontcraft', () => {
|
|||||||
adminClient.manageRaid.createRaid(insertRaid).then(() => {
|
adminClient.manageRaid.createRaid(insertRaid).then(() => {
|
||||||
client.RaidManager.getRaids().then((r)=>{
|
client.RaidManager.getRaids().then((r)=>{
|
||||||
if(r[0].title === insertRaid.title
|
if(r[0].title === insertRaid.title
|
||||||
&& r[0].description === insertRaid.description){
|
&& r[0].description === insertRaid.description
|
||||||
|
&& r[0].tier === "MC"){
|
||||||
raids.push(r[0])
|
raids.push(r[0])
|
||||||
done()
|
done()
|
||||||
}
|
}
|
||||||
@@ -612,4 +614,76 @@ describe('Frontcraft', () => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('implements loot system correctly', (done)=>{
|
||||||
|
const ONE_WEEK = 4800000000
|
||||||
|
|
||||||
|
const Raid = (week:number, tier:string) => {
|
||||||
|
return <Raid>{
|
||||||
|
description: tier+" Test raid 1",
|
||||||
|
title: tier,
|
||||||
|
start: (week*ONE_WEEK + Date.now()).toString(),
|
||||||
|
tier: tier
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const user = Object.values(users)[0]
|
||||||
|
const createRaid = adminClient.manageRaid.createRaid
|
||||||
|
const sign = async (raid:Raid, late = false) => await adminClient.signup.sign(user.auth.token.value, user.character, raid, late)
|
||||||
|
const buyToken = async (signup: Signup, itemname: string) => await client.ItemManager.buyToken(user.auth.token.value, user.character.charactername, itemname, signup)
|
||||||
|
|
||||||
|
createRaid(Raid(0, 'MC')).then(async (MC0:Raid) => {
|
||||||
|
const T1_0 = await client.ItemManager.getItem(T1[0])
|
||||||
|
//const BWL0 = await createRaid(Raid(0, 'BWL'))
|
||||||
|
const signupMC0 = await sign(MC0)
|
||||||
|
let token = await buyToken(signupMC0, T1[0])
|
||||||
|
if(!token){
|
||||||
|
console.log(MC0, signupMC0)
|
||||||
|
done("No token created")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let reserves = await client.ItemManager.getTokens(user.character, [MC0.tier], true)
|
||||||
|
let streaks = await client.ItemManager.getTokens(user.character, [MC0.tier], false)
|
||||||
|
if(reserves!.length != 1
|
||||||
|
|| streaks!.length != 0
|
||||||
|
|| reserves![0].itemname !== T1_0.itemname
|
||||||
|
|| reserves![0].level !== 7){
|
||||||
|
console.log(reserves, streaks);
|
||||||
|
done("Bad token status")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
await adminClient.manageRaid.startRaid(MC0)
|
||||||
|
reserves = await client.ItemManager.getTokens(user.character, [MC0.tier], true)
|
||||||
|
streaks = await client.ItemManager.getTokens(user.character, [MC0.tier], false)
|
||||||
|
if(reserves!.length != 0
|
||||||
|
|| streaks!.length != 1
|
||||||
|
|| streaks![0].itemname !== T1[0]
|
||||||
|
|| streaks![0].level !== 7){
|
||||||
|
console.log(reserves, streaks);
|
||||||
|
done("Bad token status")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const MC1 = await createRaid(Raid(1, 'MC'))
|
||||||
|
const signupMC1 = await sign(MC1)
|
||||||
|
token = await buyToken(signupMC1, T1[1])
|
||||||
|
reserves = await client.ItemManager.getTokens(user.character, [MC1.tier], true)
|
||||||
|
streaks = await client.ItemManager.getTokens(user.character, [MC1.tier], false)
|
||||||
|
if(reserves!.length != 1
|
||||||
|
|| streaks!.length != 0
|
||||||
|
|| reserves![0].itemname !== T1[1]
|
||||||
|
|| reserves![0].level !== 1){
|
||||||
|
console.log(reserves, streaks);
|
||||||
|
done("Bad token status")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
done()
|
||||||
|
|
||||||
|
}).catch(e => {
|
||||||
|
console.log(e);
|
||||||
|
|
||||||
|
done(e)
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
Reference in New Issue
Block a user