Improved team system
This commit is contained in:
@@ -4,6 +4,7 @@ export default defineEventHandler(async (event) => {
|
||||
const { teamId } = await readBody(event);
|
||||
|
||||
const user = await getAuth(event)
|
||||
const config = useRuntimeConfig()
|
||||
|
||||
const teamsColl = db.collection('teams')
|
||||
const usersColl = db.collection('users')
|
||||
@@ -12,6 +13,11 @@ export default defineEventHandler(async (event) => {
|
||||
|
||||
if (!team.value) return createError({ statusCode: 500, statusMessage: 'Team niet gevonden'})
|
||||
|
||||
await $fetch(config.discordHost + '/team/addteammember', {
|
||||
method: 'POST',
|
||||
body: { voiceChannelId: team.value.voiceChannelId, textChannelId: team.value.textChannelId, discordId: user.discord.id }
|
||||
})
|
||||
|
||||
await usersColl.updateOne({ _id: new ObjectId(user._id) }, { $set: { 'team.id': teamId, 'team.admin': false }})
|
||||
|
||||
return team
|
||||
|
@@ -6,6 +6,7 @@ export default defineEventHandler(async (event) => {
|
||||
if (!verifyUsername(teamName)) return createError({ statusCode: 400, statusMessage: 'Team naam moet alfanumeriek zijn en mag maximaal 20 tekens lang zijn' })
|
||||
|
||||
const user = await getAuth(event)
|
||||
const config = useRuntimeConfig()
|
||||
|
||||
if (user.team) return createError({ statusCode: 400, statusMessage: 'Gebruiker is al in een team' })
|
||||
|
||||
@@ -14,7 +15,12 @@ export default defineEventHandler(async (event) => {
|
||||
|
||||
if (await teamsColl.findOne({ name: { $regex: new RegExp(teamName, "i") } })) return createError({ statusCode: 400, statusMessage: 'Team naam bestaat al' })
|
||||
|
||||
const response = await teamsColl.insertOne({ name: teamName, color: teamColor, count: 1 })
|
||||
const discordResponse = await $fetch(config.discordHost + '/team/createchannels', {
|
||||
method: 'POST',
|
||||
body: { name: teamName, discordId: user.discord.id }
|
||||
})
|
||||
|
||||
const response = await teamsColl.insertOne({ name: teamName, color: teamColor, count: 1, textChannelId: discordResponse.textChannel.id, voiceChannelId: discordResponse.voiceChannel.id })
|
||||
|
||||
await usersColl.findOneAndUpdate({ 'discord.id': user.discord.id }, { $set: { 'team.id': response.insertedId.toString(), 'team.admin': true } })
|
||||
|
||||
|
@@ -8,6 +8,9 @@ export default defineEventHandler(async (event) => {
|
||||
if (!verifyUsername(name)) return createError({ statusCode: 400, statusMessage: 'Team naam moet alfanumeriek zijn en mag maximaal 20 tekens lang zijn' })
|
||||
|
||||
const user = await getAuth(event)
|
||||
const config = useRuntimeConfig()
|
||||
|
||||
if (!user.team.admin) return createError({ statusCode: 403, statusMessage: 'Admin team rol vereist' })
|
||||
|
||||
const teamsColl = db.collection('teams')
|
||||
|
||||
@@ -15,6 +18,11 @@ export default defineEventHandler(async (event) => {
|
||||
|
||||
if (team.name !== name && await teamsColl.findOne({ name: { $regex: new RegExp(name, "i") } })) return createError({ statusCode: 400, statusMessage: 'Team naam bestaat al' })
|
||||
|
||||
await $fetch(config.discordHost + '/team/edit', {
|
||||
method: 'POST',
|
||||
body: { voiceChannelId: team.voiceChannelId, textChannelId: team.textChannelId, name: name }
|
||||
})
|
||||
|
||||
await teamsColl.updateOne({ _id: new ObjectId(user.team.id) }, { $set: { name: name, color: color } })
|
||||
|
||||
return team
|
||||
|
@@ -3,14 +3,26 @@ import { ObjectId } from 'mongodb'
|
||||
export default defineEventHandler(async (event) => {
|
||||
const user = await getAuth(event)
|
||||
|
||||
const config = useRuntimeConfig()
|
||||
|
||||
const teamsColl = db.collection('teams')
|
||||
const team = await teamsColl.findOneAndUpdate({ _id: new ObjectId(user.team.id) }, { $inc: { count: -1 }})
|
||||
|
||||
const usersColl = db.collection('users')
|
||||
await usersColl.findOneAndUpdate({ _id: new ObjectId(user._id) }, { $unset: { team: "" } })
|
||||
|
||||
await $fetch(config.discordHost + '/team/removeteammember', {
|
||||
method: 'POST',
|
||||
body: { voiceChannelId: team.value.voiceChannelId, textChannelId: team.value.textChannelId, discordId: user.discord.id }
|
||||
})
|
||||
|
||||
if (team.value.count <= 1) {
|
||||
await teamsColl.deleteOne({ _id: new ObjectId(user.team.id )})
|
||||
|
||||
await $fetch(config.discordHost + '/team/deletechannels', {
|
||||
method: 'POST',
|
||||
body: { voiceChannelId: team.voiceChannelId, textChannelId: team.textChannelId }
|
||||
})
|
||||
}
|
||||
return team
|
||||
});
|
||||
|
Reference in New Issue
Block a user