Advertisement
Guest User

Untitled

a guest
Aug 1st, 2014
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env node
  2. var app = require('../../../app');
  3. var worker = require('../../../src/worker');
  4.  
  5. var name = 'Configuration/NotificationTemplate/Update';
  6. worker(name, function(payload, worker)
  7. {
  8.     if (!payload) {
  9.         worker.error();
  10.         return;
  11.     }
  12.  
  13.     payload = JSON.parse(payload.toString());
  14.  
  15.     var async = require('async');
  16.     var notify = require('../../../handlers/notify');
  17.     var redis = require('redis');
  18.     var storeModel = require('../../../models/stores');
  19.  
  20.     var cache = redis.createClient(app.worker.port, app.worker.host);
  21.     if (app.worker.database) cache.select(app.worker.database);
  22.  
  23.     var model = storeModel(payload.storeDatabase);
  24.     var sequelize = model.Sequelize;
  25.  
  26.     cache.hgetall(app.worker.namespace + payload.id, function(error, result)
  27.     {
  28.         var data = JSON.parse(result.payload);
  29.  
  30.         /**
  31.          * Parallels executions with one callback
  32.          */
  33.         async.parallel({
  34.             notificationTemplate: function(callback)
  35.             {
  36.                 model.notificacoes_templates.find({
  37.                     where: {
  38.                         id: data.id
  39.                     }
  40.                 })
  41.                 .complete(function(dbError, notificationTemplate)
  42.                 {
  43.                     if (dbError) {
  44.                         var error = {
  45.                             message: dbError.toString(),
  46.                             info: JSON.parse(JSON.stringify(dbError))
  47.                         };
  48.                         callback([error]);
  49.  
  50.                         return;
  51.                     }
  52.  
  53.                     if (!notificationTemplate) {
  54.                         callback(["The template has not been found"]);
  55.                         return;
  56.                     }
  57.  
  58.                     var updateAble = [
  59.                         'titulo',
  60.                         'texto'
  61.                     ];
  62.                    
  63.  
  64.                     for (var i in data) {
  65.                         if (!data.hasOwnProperty(i)) continue;
  66.  
  67.                         var underscored = sequelize.Utils._(i).underscored().toString();
  68.                         if (updateAble.indexOf(underscored) > -1) {
  69.                             notificationTemplate[underscored] = data[i];
  70.                         }
  71.                     }
  72.                     notificationTemplate.loja_id = payload.storeId;
  73.  
  74.                     notificationTemplate.save()
  75.                         .complete(function(dbError)
  76.                         {
  77.                             if (dbError) {
  78.                                 var error = {
  79.                                     message: dbError.toString(),
  80.                                     info: JSON.parse(JSON.stringify(dbError))
  81.                                 };
  82.                                 callback([error]);
  83.  
  84.                                 return;
  85.                             }
  86.  
  87.                             callback(null);
  88.                         });
  89.                 });
  90.             },
  91.             notificationStatus: function(callback)
  92.             {
  93.                 model.notificacoes_status.find({
  94.                     where: {
  95.                         notificacao_id: data.id
  96.                     }
  97.                 })
  98.                     .complete(function(dbError, notificationStatus){
  99.                         if (dbError) {
  100.                             var error = {
  101.                                 message: dbError.toString(),
  102.                                 info: JSON.parse(JSON.stringify(dbError))
  103.                             };
  104.                             callback([error]);
  105.  
  106.                             return;
  107.                         }
  108.  
  109.                         if (!notificationStatus) {
  110.                             notificationStatus = model.notificacoes_status.build({
  111.                 notificacao_id: data.id
  112.                             });
  113.                         }
  114.  
  115.                         var updateAble = [
  116.                             'status',
  117.                             'subject'
  118.                         ];
  119.  
  120.                         for (var i in data) {
  121.                             if (!data.hasOwnProperty(i)) continue;
  122.  
  123.                             var underscored = sequelize.Utils._(i).underscored().toString();
  124.                             if (updateAble.indexOf(underscored) > -1) {
  125.                                 notificationStatus[underscored] = data[i];
  126.                             }
  127.                         }
  128.                         notificationStatus.loja_id = payload.storeId;
  129.  
  130.                         notificationStatus.save()
  131.                             .complete(function(dbError)
  132.                             {
  133.                                 if (dbError) {
  134.                                     var error = {
  135.                                         message: dbError.toString(),
  136.                                         info: JSON.parse(JSON.stringify(dbError))
  137.                                     };
  138.                                     callback([error]);
  139.  
  140.                                     return;
  141.                                 }
  142.  
  143.                                 callback(null);
  144.                             });
  145.                     });
  146.             }
  147.         }, function(error)
  148.         {
  149.             if (!error) {
  150.                 notify.user(data._notifyUser, payload.storeId, {
  151.                     title: 'COMMON.SUCCESS.SUCCESS',
  152.                     body: 'EMAIL.SUCCESS.UPDATED_TEMPLATE',
  153.                     type: 'success'
  154.                 });
  155.  
  156.                 cache.del(app.worker.namespace + payload.id);
  157.             } else {
  158.                 notify.user(data._notifyUser, payload.storeId, {
  159.                     title: 'COMMON.ERROR.ERROR',
  160.                     body: 'EMAIL.ERROR.UPDATED_TEMPLATE',
  161.                     type: 'error'
  162.                 });
  163.  
  164.                 cache.hset(app.worker.namespace + payload.id, 'state', 'fail');
  165.                 cache.hset(app.worker.namespace + payload.id, 'errors', JSON.stringify(error));
  166.             }
  167.  
  168.             cache.end();
  169.             worker.end();
  170.         });
  171.     });
  172. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement