From 0cc2727826e2461c9a5c5921f93237c6fe16811f Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Thu, 6 Jan 2022 02:34:51 +0200 Subject: [PATCH] Create campaign for project --- server/router/campaigns/index.js | 13 +++- server/router/projects/index.js | 110 ++++++++++++++++++++++++++----- server/views/campaigns.pug | 12 +++- 3 files changed, 114 insertions(+), 21 deletions(-) diff --git a/server/router/campaigns/index.js b/server/router/campaigns/index.js index a488074..44fb515 100644 --- a/server/router/campaigns/index.js +++ b/server/router/campaigns/index.js @@ -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) }) }) diff --git a/server/router/projects/index.js b/server/router/projects/index.js index d9913d8..6a9148e 100644 --- a/server/router/projects/index.js +++ b/server/router/projects/index.js @@ -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) { diff --git a/server/views/campaigns.pug b/server/views/campaigns.pug index e00a68e..128b58c 100644 --- a/server/views/campaigns.pug +++ b/server/views/campaigns.pug @@ -3,4 +3,14 @@ extend templates/layout.pug block content .container .center - h1 Campaigns \ No newline at end of file + 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 \ No newline at end of file