const { Op } = require("sequelize"); const express = require('express'); const campaigns = require('../campaigns'); module.exports = function (options) { const db = options.db; var router = express.Router(); router.route('/') .get(function(request, response, next) { db.Entity.findAll({ where: { [Op.or]: [ { type: "individual" }, { type: "organization" } ] }, limit: 10 }).then(entities => { response.display("entities", { user: request.user, pageTitle: "Entities - Mantra", entities: entities }) }) }) router.route('/:name') .get(function(request, response, next) { db.Entity.findOne({ where: { name: request.params.name }, // TODO: add counts here... }).then(entity => { response.display("entity", { user: request.user, pageTitle: "Entity - Mantra", entity: entity }) }) }) router.route('/:name/artifacts') .get(function(request, response, next) { db.Artifact.findAll({ include: [ { association: db.Artifact.Owner, required: true, include: [ { association: db.Owner.OwnerEntities, required: true, include: [ { association: db.OwnerEntity.Entity, require: true, where: { name: request.params.name } } ] } ] } ] }).then(artifacts => { response.display("entity-artifacts", { user: request.user, pageTitle: `${request.params.name} artifacts - Mantra`, artifacts: artifacts, entityName: request.params.name }) }).catch(error => { next(error) }) }) router.route('/:name/projects') .get(function(request, response, next) { db.Project.findAll({ include: [ { association: db.Project.Owner, required: true, include: [ { association: db.Owner.OwnerEntities, required: true, include: [ { association: db.OwnerEntity.Entity, require: true, where: { name: request.params.name } } ] } ] } ] }).then(projects => { response.display("entity-projects", { user: request.user, pageTitle: `${request.params.name} projects - Mantra`, projects: projects, entityName: request.params.name }) }).catch(error => { next(error) }) }) router.route('/:name/pledges') .get(function(request, response, next) { db.Project.findAll({ include: [ { association: db.Project.Owner, required: true, include: [ { association: db.Owner.OwnerEntities, required: true, include: [ { association: db.OwnerEntity.Entity, require: true, where: { name: request.params.name } } ] } ] } ] }).then(pledges => { response.display("entity-pledges", { user: request.user, pageTitle: `${request.params.name} pledges - Mantra`, pledges: pledges, entityName: request.params.name }) }).catch(error => { next(error) }) }) router.route('/:name/campaigns') .get(function(request, response, next) { db.Campaign.findAll({ include: [ { association: db.Campaign.Owner, required: true, include: [ { association: db.Owner.OwnerEntities, required: true, include: [ { association: db.OwnerEntity.Entity, require: true, where: { name: request.params.name } } ] } ] } ] }).then(campaigns => { response.display("entity-campaigns", { user: request.user, pageTitle: `${request.params.name} campaigns - Mantra`, campaigns: campaigns, entityName: request.params.name }) }).catch(error => { next(error) }) }) router.route('/:name/translations') .get(function(request, response, next) { db.TranslationArtifactVersion.findAll({ include: [ { association: db.TranslationArtifactVersion.Owner, required: true, include: [ { association: db.Owner.OwnerEntities, required: true, include: [ { association: db.OwnerEntity.Entity, require: true, where: { name: request.params.name } } ] } ] }, { association: db.TranslationArtifactVersion.ArtifactVersion, required: true, include: [ { association: db.ArtifactVersion.Artifact, required: true } ] } ] }).then(translationArtifactVersions => { response.display("entity-translation-artifact-versions", { user: request.user, pageTitle: `${request.params.name} translations - Mantra`, translationArtifactVersions: translationArtifactVersions, entityName: request.params.name }) }).catch(error => { next(error) }) }) router.route('/:name/translation-campaigns') .get(function(request, response, next) { db.TranslationArtifactVersionCampaign.findAll({ include: [ { association: db.TranslationArtifactVersionCampaign.Owner, required: true, include: [ { association: db.Owner.OwnerEntities, required: true, include: [ { association: db.OwnerEntity.Entity, require: true, where: { name: request.params.name } } ] } ] }, ] }).then(translationArtifactVersionCampaigns => { response.display("entity-translation-artifact-version-campaigns", { user: request.user, pageTitle: `${request.params.name} translation campaigns - Mantra`, translationArtifactVersionCampaigns: translationArtifactVersionCampaigns, entityName: request.params.name }) }).catch(error => { next(error) }) }) router.route('/:name/translation-pledges') .get(function(request, response, next) { db.TranslationArtifactVersionPledge.findAll({ include: [ { association: db.TranslationArtifactVersionPledge.Owner, required: true, include: [ { association: db.Owner.OwnerEntities, required: true, include: [ { association: db.OwnerEntity.Entity, require: true, where: { name: request.params.name } } ] } ] }, ] }).then(translationArtifactVersionPledges => { response.display("entity-translation-artifact-version-pledges", { user: request.user, pageTitle: `${request.params.name} translation pledges - Mantra`, translationArtifactVersionPledges: translationArtifactVersionPledges, entityName: request.params.name }) }).catch(error => { next(error) }) }) // router.route('/create') // .post(function(request, response, next) { // console.log(request.body) // next() // }) return router; };