@speakr/speakr-module-services
Version:
SPEAKR Shared Service Module
109 lines (86 loc) • 2.84 kB
JavaScript
;
const db = require('../../db/');
module.exports = {
byIdHash,
mediaByIdHash,
autoCloseViaCronJob
};
function byIdHash(options) {
let platform = options.req.body.platform;
let status = options.req.body.status;
let where = { name: platform};
return db.platforms.findOne({ where })
.then(platforms => {
let where = { id_hash: options.req.params.id_hash };
return db.initiatives.findOne({ where })
.then(initiatives => {
if(initiatives.platform_id != platforms.id){
let update = { platform_id: platforms.id };
let where = { id: initiatives.id};
return db.initiatives.update(update, {where})
.then(initiatives => {
where = { id_hash: options.req.params.id_hash };
return db.initiatives.findOne({ where, include: [
db.platforms,
db.statuses
]})
.then(initiatives => {
options.initiatives = initiatives;
return Promise.resolve(options)
}).catch(err => Promise.reject(err));
}).catch(err => Promise.reject(err));
}
let where = {name: status};
return db.statuses.findOne({ where })
.then((statuses) => {
where = {name: platform};
return db.platforms.findOne({ where })
.then((platforms) => {
let update = options.req.body;
update.initiative_status_id = statuses.id;
where = { id_hash: options.req.params.id_hash };
return db.initiatives.update(update, {where})
.then(initiatives => {
where = { id_hash: options.req.params.id_hash };
return db.initiatives.findOne({ where, include: [
db.platforms,
db.statuses
]})
.then(initiatives => {
options.initiatives = initiatives;
return Promise.resolve(options)
}).catch(err => Promise.reject(err));
}).catch(err => Promise.reject(err));
});
});
})
})
}
function mediaByIdHash(options) {
let update = options.media.config;
let where = { id_hash: options.media.id_hash };
return db.initiatives.update(update, { where })
.then(initiatives => {
if(!!initiatives) {
return db.initiatives.findOne(where)
.then(initiatives => {
options.initiatives = initiatives;
return Promise.resolve(options);
});
}
return Promise.reject(options)
}).catch(err => {
return Promise.reject(err)
})
}
function autoCloseViaCronJob() {
let yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
yesterday.setHours(23);
yesterday.setMinutes(59);
yesterday.setSeconds(59);
yesterday.setMilliseconds(999);
const where = { end_date: { $lte: yesterday }, initiative_status_id: 2 };
const update = { initiative_status_id: 1 };
return db.initiatives.update(update, { where })
}