Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env node
- var app = require('../../../app');
- var worker = require('../../../src/worker');
- var name = 'Configuration/NotificationTemplate/Update';
- worker(name, function(payload, worker)
- {
- if (!payload) {
- worker.error();
- return;
- }
- payload = JSON.parse(payload.toString());
- var async = require('async');
- var notify = require('../../../handlers/notify');
- var redis = require('redis');
- var storeModel = require('../../../models/stores');
- var cache = redis.createClient(app.worker.port, app.worker.host);
- if (app.worker.database) cache.select(app.worker.database);
- var model = storeModel(payload.storeDatabase);
- var sequelize = model.Sequelize;
- cache.hgetall(app.worker.namespace + payload.id, function(error, result)
- {
- var data = JSON.parse(result.payload);
- /**
- * Parallels executions with one callback
- */
- async.parallel({
- notificationTemplate: function(callback)
- {
- model.notificacoes_templates.find({
- where: {
- id: data.id
- }
- })
- .complete(function(dbError, notificationTemplate)
- {
- if (dbError) {
- var error = {
- message: dbError.toString(),
- info: JSON.parse(JSON.stringify(dbError))
- };
- callback([error]);
- return;
- }
- if (!notificationTemplate) {
- callback(["The template has not been found"]);
- return;
- }
- var updateAble = [
- 'titulo',
- 'texto'
- ];
- for (var i in data) {
- if (!data.hasOwnProperty(i)) continue;
- var underscored = sequelize.Utils._(i).underscored().toString();
- if (updateAble.indexOf(underscored) > -1) {
- notificationTemplate[underscored] = data[i];
- }
- }
- notificationTemplate.loja_id = payload.storeId;
- notificationTemplate.save()
- .complete(function(dbError)
- {
- if (dbError) {
- var error = {
- message: dbError.toString(),
- info: JSON.parse(JSON.stringify(dbError))
- };
- callback([error]);
- return;
- }
- callback(null);
- });
- });
- },
- notificationStatus: function(callback)
- {
- model.notificacoes_status.find({
- where: {
- notificacao_id: data.id
- }
- })
- .complete(function(dbError, notificationStatus){
- if (dbError) {
- var error = {
- message: dbError.toString(),
- info: JSON.parse(JSON.stringify(dbError))
- };
- callback([error]);
- return;
- }
- if (!notificationStatus) {
- notificationStatus = model.notificacoes_status.build({
- notificacao_id: data.id
- });
- }
- var updateAble = [
- 'status',
- 'subject'
- ];
- for (var i in data) {
- if (!data.hasOwnProperty(i)) continue;
- var underscored = sequelize.Utils._(i).underscored().toString();
- if (updateAble.indexOf(underscored) > -1) {
- notificationStatus[underscored] = data[i];
- }
- }
- notificationStatus.loja_id = payload.storeId;
- notificationStatus.save()
- .complete(function(dbError)
- {
- if (dbError) {
- var error = {
- message: dbError.toString(),
- info: JSON.parse(JSON.stringify(dbError))
- };
- callback([error]);
- return;
- }
- callback(null);
- });
- });
- }
- }, function(error)
- {
- if (!error) {
- notify.user(data._notifyUser, payload.storeId, {
- title: 'COMMON.SUCCESS.SUCCESS',
- body: 'EMAIL.SUCCESS.UPDATED_TEMPLATE',
- type: 'success'
- });
- cache.del(app.worker.namespace + payload.id);
- } else {
- notify.user(data._notifyUser, payload.storeId, {
- title: 'COMMON.ERROR.ERROR',
- body: 'EMAIL.ERROR.UPDATED_TEMPLATE',
- type: 'error'
- });
- cache.hset(app.worker.namespace + payload.id, 'state', 'fail');
- cache.hset(app.worker.namespace + payload.id, 'errors', JSON.stringify(error));
- }
- cache.end();
- worker.end();
- });
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement