Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
const config = require('../../config/config');
const winstonLogger = require('../../config/logger');
const cloudant = require('../../helper/cloudant');
const moment = require('moment');
const dbInstallations = config.cloudant_dbname_installations;
const dbProperties = config.cloudant_dbname_properties;
const cron = require('node-schedule');
const EventEmitter = require('events').EventEmitter;
const eventEmitter = new EventEmitter();
let installationService = function() {};
module.exports = installationService;
installationService.getAllInstallationIds = async () => {
  let installationIds = [];
  return installationIds = await cloudant.readAllDocuments(dbInstallations)
    .then(installations => {
      for (let key in installations) {
        if (installations.hasOwnProperty(key)) {
          installationIds.push(installations[key]['_id']);
        }
      }
      return installationIds;
    });
};
// let idMail = await installationService.getInstallationMail('id_2n8kwfwF68');
installationService.getInstallationMail = async (id) => {
  return cloudant.readDocument(dbInstallations, id)
    .then(installation => {
      return installation.supportMail;
    });
};
installationService.getInstallationProperties = async () => {
  let installationIds = await installationService.getAllInstallationIds();
  let properties = [];
  let notifications = [];
  let dateNow = Date.now();
  const dateOneDay = 24 * 60 * 60 * 1000;
  for (var i = 0; i < installationIds.length; i++) {
    let selector = {
      "selector": {
        "$and": [{
            "propertyType": {
              "$eq": 7
            }
          },
          {
            "parentId": {
              "$regex": installationIds[i]
            }
          }
        ]
      }
    }
    await cloudant.findDocuments(dbProperties, selector)
      .then(item => {
        for (let key in item) {
          if (item.hasOwnProperty(key)) {
            properties.push(item[0]);
          }
        }
      });
  }
  properties.forEach(item => {
    if ((item.value > 0) && ((dateNow - item.value) > dateOneDay)) {
      let index = item._id.lastIndexOf("_");
      let result = item._id.substr(0, index);
      item["baseId"] = result;
      let email = installationService.getInstallationMail(item.baseId);
      item["supportMail"] = email;
      // installationService.getInstallationMail(item.baseId).then(installation => {
      //   item["supportMail"] = installation.supportMail;
      //   notifications.push(item);
      // });
      notifications.push(item);
    }
  });
  console.log('notifications', notifications);
  return notifications;
};
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers