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)
|
||||
const modifier = await this.calculatePriorities(itemname, character)
|
||||
|
||||
const tx = await this.admin.knex.transaction()
|
||||
|
||||
if(streaks.length > 0){
|
||||
const myStreak = streaks.find(token => token.itemname === itemname)
|
||||
if(myStreak){
|
||||
@@ -148,6 +150,7 @@ implements FrontworkComponent<ItemManagerIfc, ItemManagerFeatureIfc>, TableDefin
|
||||
//getLogger('ItemManager').debug('update signupid and increment level')
|
||||
await this.admin
|
||||
.knex(item.tier+'tokens')
|
||||
.transacting(tx)
|
||||
.where({
|
||||
characterid: character.id,
|
||||
itemname: item.itemname
|
||||
@@ -162,6 +165,7 @@ implements FrontworkComponent<ItemManagerIfc, ItemManagerFeatureIfc>, TableDefin
|
||||
//getLogger('ItemManager').debug('delete streaks')
|
||||
await Promise.all(streaks.map(async s => await this.admin
|
||||
.knex(item.tier+'tokens')
|
||||
.transacting(tx)
|
||||
.where({
|
||||
itemname: s.itemname,
|
||||
characterid: character.id,
|
||||
@@ -170,15 +174,18 @@ implements FrontworkComponent<ItemManagerIfc, ItemManagerFeatureIfc>, TableDefin
|
||||
.del()
|
||||
))
|
||||
|
||||
if(myStreak)
|
||||
if(myStreak){
|
||||
await tx.commit()
|
||||
return await this.getToken(character, item)
|
||||
}
|
||||
}
|
||||
|
||||
const matchingReserve = activeTokens.find(token => token.itemname === itemname)
|
||||
if(matchingReserve){
|
||||
getLogger('ItemManager').debug('upgrade reserve')
|
||||
//getLogger('ItemManager').debug('upgrade reserve')
|
||||
await this.admin
|
||||
.knex(item.tier+'tokens')
|
||||
.transacting(tx)
|
||||
.increment('level')
|
||||
.where({
|
||||
signupid: signup.id,
|
||||
@@ -186,9 +193,10 @@ implements FrontworkComponent<ItemManagerIfc, ItemManagerFeatureIfc>, TableDefin
|
||||
itemname: item.itemname
|
||||
})
|
||||
}else{
|
||||
getLogger('ItemManager').debug('new reserve')
|
||||
//getLogger('ItemManager').debug('new reserve')
|
||||
await this.admin
|
||||
.knex(item.tier+'tokens')
|
||||
.transacting(tx)
|
||||
.insert({
|
||||
characterid: character.id,
|
||||
itemname: item.itemname,
|
||||
@@ -196,6 +204,7 @@ implements FrontworkComponent<ItemManagerIfc, ItemManagerFeatureIfc>, TableDefin
|
||||
signupid: signup.id
|
||||
})
|
||||
}
|
||||
await tx.commit()
|
||||
return await this.getToken(character, item)
|
||||
}
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@ import { Raid, Signup, Character, RaidData, User, Spec } from "../../Types/Types
|
||||
|
||||
export class IRaidManager{
|
||||
getRaids: () => Promise<Raid[]>
|
||||
createRaid: (raid:Raid) => Promise<any>
|
||||
addSignup: (signup: Signup) => Promise<any>
|
||||
createRaid: (raid:Raid) => Promise<Raid>
|
||||
addSignup: (signup: Signup) => Promise<Signup>
|
||||
removeSignup: (signup: Signup) => Promise<any>
|
||||
getSignups: (raid:Raid) => Promise<(Signup & Character & Spec & User)[]>
|
||||
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('title').notNullable()
|
||||
table.integer('size').defaultTo(40)
|
||||
table.enu('tier', _Tiers).defaultTo(null as any)
|
||||
table.string('tier').defaultTo('null')
|
||||
}
|
||||
},{
|
||||
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')
|
||||
.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')
|
||||
.insert(signup)
|
||||
return await this.admin.knex('signups').where({id: ids[0]}).first()
|
||||
|
||||
}
|
||||
|
||||
removeSignup = async (signup: Signup) => await this.admin
|
||||
.knex('signups')
|
||||
|
||||
@@ -25,7 +25,7 @@ status="control">
|
||||
<br/><br />
|
||||
<span *ngFor="let token of tokens">
|
||||
[ {{token.level}} ]
|
||||
<wowhead [item]="token"></wowhead><br />
|
||||
<wowhead [item]="token"></wowhead>
|
||||
</span>
|
||||
</nb-card-body>
|
||||
</nb-card>
|
||||
|
||||
@@ -33,6 +33,10 @@ export class FrontcraftCreateRaidsComponent implements OnInit {
|
||||
loadNext(cardData) {
|
||||
}
|
||||
|
||||
onTierSelect(){
|
||||
|
||||
}
|
||||
|
||||
onTemplateSelect(){
|
||||
const templateDate = new Date(this.template.start)
|
||||
this.title = this.template.title
|
||||
|
||||
+75
-1
@@ -9,6 +9,7 @@ import { SpecT } from "../src/backend/Types/PlayerSpecs";
|
||||
|
||||
type protoAccount<C extends Class = Class> = {
|
||||
name : string,
|
||||
pwHash?: string
|
||||
rank : Rank,
|
||||
race: Race,
|
||||
class: C,
|
||||
@@ -200,7 +201,8 @@ describe('Frontcraft', () => {
|
||||
adminClient.manageRaid.createRaid(insertRaid).then(() => {
|
||||
client.RaidManager.getRaids().then((r)=>{
|
||||
if(r[0].title === insertRaid.title
|
||||
&& r[0].description === insertRaid.description){
|
||||
&& r[0].description === insertRaid.description
|
||||
&& r[0].tier === "MC"){
|
||||
raids.push(r[0])
|
||||
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