Create campaign for project

This commit is contained in:
2022-01-06 02:34:51 +02:00
parent 5ad05668ed
commit 0cc2727826
3 changed files with 114 additions and 21 deletions

View File

@@ -6,9 +6,16 @@ module.exports = function (options) {
router.route('/')
.get(function(request, response, next) {
response.display("campaigns", {
user: request.user,
pageTitle: "Campaign - Mantra"
db.Campaign.findAll({
}).then(campaigns => {
response.display("campaigns", {
user: request.user,
pageTitle: "Campaign - Mantra",
campaigns: campaigns
})
}).catch(error => {
next(error)
})
})

View File

@@ -284,6 +284,23 @@ module.exports = function (options) {
{
association: db.Project.Campaign,
required: true
}
]
}).then(project => {
if (project) {
response.redirect(`/campaigns/${project.campaign.id}`)
} else {
response.redirect(`/projects/${request.params.id}/campaign/create`)
}
})
})
router.route('/:id/campaign/create')
.get(function(request, response, next) {
db.Project.findByPk(request.params.id, {
include: [
{
association: db.Project.Campaign,
},
{
association: db.Project.ProjectArtifactVersions,
@@ -317,23 +334,6 @@ module.exports = function (options) {
]
}
]
}).then(project => {
if (project) {
response.redirect(`/campaigns/${project.campaign.id}`)
} else {
response.redirect(`/projects/${request.params.id}/campaign/create`)
}
})
})
router.route('/:id/campaign/create')
.get(function(request, response, next) {
db.Project.findByPk(request.params.id, {
include: [
{
association: db.Project.Campaign,
}
]
}).then(project => {
if (project) {
if (project.campaign) {
@@ -356,6 +356,82 @@ module.exports = function (options) {
next(error)
})
})
.post(function(request, response, next) {
db.Project.findByPk(request.params.id, {
include: [
{
association: db.Project.Campaign,
},
{
association: db.Project.ProjectArtifactVersions,
include: [
{
association: db.ProjectArtifactVersion.ArtifactVersion,
include: [
{
association: db.ArtifactVersion.Artifact
}
]
}
]
},
{
association: db.Project.ProjectTranslationArtifactVersions,
include: [
{
association: db.ProjectTranslationArtifactVersion.TranslationArtifactVersion,
include: [
{
association: db.TranslationArtifactVersion.ArtifactVersion,
include: [
{
association: db.ArtifactVersion.Artifact
}
]
}
]
}
]
}
]
}).then(async (project) => {
if (project) {
if (project.campaign) {
response.redirect(`/campaigns/${project.campaign.id}`)
} else {
const translationArtifactVersionCampaigns = project.projectTranslationArtifactVersions.map(projectTranslationArtifactVersion => {
return {
translationArtifactVersionId: projectTranslationArtifactVersion.translationArtifactVersionId,
entityId: request.user.individualEntityUser.entityUser.entityId,
satoshis: request.body.satoshis
}
})
const campaign = await db.Campaign.create({
name: request.body.name,
description: request.body.description,
// defaultSatoshis: [request.body.satoshis].flat()[0],
defaultSatoshis: request.body.satoshis,
entityId: request.user.individualEntityUser.entityUser.entityId,
translationArtifactVersionCampaigns: translationArtifactVersionCampaigns
}, {
include: [
{
association: db.Campaign.TranslationArtifactVersionCampaigns
}
]
})
response.redirect(`/campaigns/${campaign.id}`)
}
} else {
next()
}
}).catch(error => {
next(error)
})
})
router.route('/:id/spreadsheet')
.post(function(request, response, next) {

View File

@@ -3,4 +3,14 @@ extend templates/layout.pug
block content
.container
.center
h1 Campaigns
h1 Campaigns
if campaigns.length == 0
p.flow-text No campaigns found
else
.row
each campaign in campaigns
.col.s12
a(href=`/campaigns/${campaign.id}`)
.card-panel
p.flow-text= campaign.name