Skip to content

Commit

Permalink
feat (destroy quest): feat detroy quest
Browse files Browse the repository at this point in the history
  • Loading branch information
HeitorMatt committed Sep 9, 2020
1 parent 4faf67b commit ff37fd0
Showing 1 changed file with 164 additions and 117 deletions.
281 changes: 164 additions & 117 deletions src/adonisjs/app/Controllers/Http/v1/QuestController.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,148 +6,195 @@

const Database = use('Database')

const Quest = use('App/Models/v1/Quest');
const User = use('App/Models/v1/User');
const Case = use('App/Models/v1/Case');
const Role = use('App/Models/v1/Role');
const Quest = use('App/Models/v1/Quest')
const User = use('App/Models/v1/User')
const Case = use('App/Models/v1/Case')
const Role = use('App/Models/v1/Role')
const Artifact = use('App/Models/v1/Artifact')

const uuidv4 = require('uuid/v4');
const uuidv4 = require('uuid/v4')

class QuestController {

async index({ response }) {
try{
let quests = await Quest.all()
return response.json(quests)
} catch(e){
return response.status(e.status).json({ message: e.message })
}
async index ({ response }) {
try {
const quests = await Quest.all()
return response.json(quests)
} catch (e) {
return response.status(e.status).json({ message: e.message })
}
}

async store ({ request, response, auth }) {
const trx = await Database.beginTransaction()
try {
const user = auth.user

const quest = new Quest()
quest.id = await uuidv4()

const q = request.all()
q.color = q.color ? q.color : '#505050'
q.artifact_id = q.artifact_id ? q.artifact_id : 'default-quest-image'
// if(q.color == null || q.color =='')
// q.color = '#505050'
// if(q.artifact_id == null || q.artifact_id =='')
// q.artifact_id = 'default-quest-image-00000-0000-00000'

quest.merge(q)

await quest.save(trx)
await user.quests().attach([quest.id], (row) => {
row.role = 0
}, trx)
trx.commit()

return response.json(quest)
} catch (e) {
trx.rollback()
console.log(e)

if (e.code === 'ER_DUP_ENTRY') {
return response.status(409).json({ code: e.code, message: e.sqlMessage })
}
return response.status(e.status).json({ message: e.message })
}
}
async update ({ params, request, response }) {

try {

const q = await Quest.find(params.id)

async store({ request, response, auth }) {
let trx = await Database.beginTransaction()
try{
let user = auth.user

let quest = new Quest()
quest.id = await uuidv4()

let q = request.all()
q.color = q.color ? q.color : '#505050'
q.artifact_id = q.artifact_id ? q.artifact_id : 'default-quest-image-00000-0000-00000'
// if(q.color == null || q.color =='')
// q.color = '#505050'
// if(q.artifact_id == null || q.artifact_id =='')
// q.artifact_id = 'default-quest-image-00000-0000-00000'

quest.merge(q)

await quest.save(trx)
await user.quests().attach([quest.id], (row) => {
row.role = 0
}, trx)
trx.commit()

return response.json(quest)
} catch(e){
trx.rollback()
console.log(e)
if (q != null) {
q.title = request.input('title')
q.color = request.input('color')

if (e.code === 'ER_DUP_ENTRY') {
return response.status(409).json({ code: e.code, message: e.sqlMessage })
}
return response.status(e.status).json({ message: e.message })
}
await q.save()
return response.json(q)
} else return response.status(500).json('quest not found, update failed')
} catch (e) {
console.log(e)
return response.status(500).json({ message: e })
}

async linkUser({ request, response }) {
try {
const {userId, questId, roleSlug} = request.post()
let user = await User.find(userId)
let quest = await Quest.find(questId)
let role = await Role.findBy('slug', roleSlug)

if (role == null)
return response.status(500).json('Invalid roleSlug')

if (await user.checkRole(role.slug)){
await user.quests().attach([quest.id], (row) => {
console.log('--------------------- await promisse OK')

if (role.slug == 'author'){
row.role = 1
}
if (role.slug == 'player'){
row.role = 2
}
console.log('--------------------- promisse EXECUTED')
})

console.log(3)
return response.json(role.slug + ' ' + user.username + ' was added to the quest '+ quest.title)
} else {
console.log(e)
return response.status(500).json('target user must have ' + role.slug + ' role')
}
} catch (e) {
console.log(e)
return response.status(500).json(e)
}
}

async destroy ({ params, response }) {
const trx = await Database.beginTransaction()
try {
const q = await Quest.findBy('id', params.id)

if (q != null) {
console.log('===== Deleting quest...')
console.log(q)
await q.users().detach()
await q.cases().detach()
let artifact = await Artifact.find(q.artifact_id)
await q.artifact().dissociate()
await artifact.delete(trx)
await q.delete(trx)

// await c.users().detach()
// await c.quests().detach()
// await c.artifacts().delete()
//
// await c.delete(trx)

trx.commit()
return response.json('Quest deletion successfull')
} else {
trx.rollback()
return response.status(500).json('quest not found')
}
} catch (e) {
trx.rollback()

console.log(e)
return response.status(500).json({ message: e })
}
}

async linkUser ({ request, response }) {
try {
const { userId, questId, roleSlug } = request.post()
const user = await User.find(userId)
const quest = await Quest.find(questId)
const role = await Role.findBy('slug', roleSlug)

if (role == null) { return response.status(500).json('Invalid roleSlug') }

if (await user.checkRole(role.slug)) {
await user.quests().attach([quest.id], (row) => {
console.log('--------------------- await promisse OK')

if (role.slug == 'author') {
row.role = 1
}
if (role.slug == 'player') {
row.role = 2
}
console.log('--------------------- promisse EXECUTED')
})

console.log(3)
return response.json(role.slug + ' ' + user.username + ' was added to the quest ' + quest.title)
} else {
console.log(e)
return response.status(500).json('target user must have ' + role.slug + ' role')
}
} catch (e) {
console.log(e)
return response.status(500).json(e)
}
}

async linkCase({ request, response }) {
try {
const {questId, caseId, orderPosition} = request.post()
async linkCase ({ request, response }) {
try {
const { questId, caseId, orderPosition } = request.post()

// let c = await Case.find(case_id)
let quest = await Quest.find(questId)
// let c = await Case.find(case_id)
const quest = await Quest.find(questId)

await quest.cases().attach(caseId, (row) => {
row.order_position = orderPosition
})
await quest.cases().attach(caseId, (row) => {
row.order_position = orderPosition
})

quest.cases = await quest.cases().fetch()
quest.cases = await quest.cases().fetch()

return response.json(quest)
} catch (e) {
console.log(e)
if (e.code === 'ER_DUP_ENTRY') {
return response.status(409).json({ message: e.message })
}
return response.json(quest)
} catch (e) {
console.log(e)
if (e.code === 'ER_DUP_ENTRY') {
return response.status(409).json({ message: e.message })
}

return response.status(500).json( e )
}
return response.status(500).json(e)
}
}

async listUsers ({ request, response }) {
try {
const questId = request.input('questId')

async listUsers({ request, response }) {
try{
let questId = request.input('questId')
const quest = await Quest.find(questId)

let quest = await Quest.find(questId)

return response.json(await quest.users().fetch())
} catch(e){
console.log(e)
return response.status(500).json(e)
}
return response.json(await quest.users().fetch())
} catch (e) {
console.log(e)
return response.status(500).json(e)
}
}

async listCases ({ request, response }) {
try {
const questId = request.input('questId')

async listCases({ request, response }) {
try{
let questId = request.input('questId')

let quest = await Quest.find(questId)
const quest = await Quest.find(questId)

return response.json(await quest.cases().fetch())
} catch(e){
console.log(e)
}
return response.json(await quest.cases().fetch())
} catch (e) {
console.log(e)
}

}
}

module.exports = QuestController

0 comments on commit ff37fd0

Please sign in to comment.