Source: controllers/getNodesNiche.js

/**
* Este verbo 
*
* @module controllers/getNodesNiche
* @requires debug
* @requires pg-promise
* @requires config
* @requires module:controllers/verb_utils
* @requires module:controllers/sql/queryProvider
*/
var debug = require('debug')('verbs:getNodesNiche')
var pgp = require('pg-promise')()

var config = require('../config')
var verb_utils = require('./verb_utils')
var queries = require('./sql/queryProvider')

var pool= pgp(config.db)
var N = verb_utils.N 


/**
 * Servidor Niche: getNodesNiche
 *
 * @function
 * @param {express.Request} req - Express request object
 * @param {express.Response} res - Express response object 
 * @param {function} next - Express next middleware function
 */
function getNodesNiche(req, res, next) {
  debug('getNodesNiche')

  var sfilters    = verb_utils.getParam(req, 's_tfilters')
  // debug(sfilters)
  var tfilters    = verb_utils.getParam(req, 't_tfilters')
  // debug(tfilters)
  var min_occ     = verb_utils.getParam(req, 'min_occ', 0)
  var res_celda = verb_utils.getParam(req, 'res_celda', 'cells_16km')

  var alpha       = 0.01
  // var N           = 14707
  var min_ep      = 0.0
  var max_edges   = 1000

  var hasBiosSource    = verb_utils.getParam(req, 'hasbiosource')
  var hasRasterSource    = verb_utils.getParam(req, 'hasrastersource')
  var hasBiosTarget    = verb_utils.getParam(req, 'hasbiotarget')
  var hasRasterTarget    = verb_utils.getParam(req, 'hasrastertarget')

  // debug(hasBiosSource)
  // debug(hasRasterSource)
  // debug(hasBiosTarget)
  // debug(hasRasterTarget)
 
  // debug("validaciones")
  // debug(hasBiosSource === true)
  // debug(hasBiosTarget === true)
  // debug(hasRasterSource === true)
  // debug(hasRasterTarget === true)

  if ( hasBiosSource === true && hasBiosTarget === true && 
       hasRasterSource === true && hasRasterTarget === true ) {
    debug('hasBiosSource - hasBiosTarget - hasRasterSource - hasRasterTarget')
    var whereVarSource = verb_utils.processBioFilters(sfilters)
    var whereVarSourceRaster = verb_utils.processRasterFilters(sfilters)

    var whereVarTarget = verb_utils.processBioFilters(tfilters)
    var whereVarTargetRaster = verb_utils.processRasterFilters(tfilters)

    pool.any(queries.getNodesNiche.getNodesNicheBioRaster_BioRaster, {
      N: N,
      alpha: alpha,
      min_occ: min_occ,
      where_config_source: whereVarSource,
      where_config_source_raster: whereVarSourceRaster,
      where_config_target: whereVarTarget,
      where_config_target_raster: whereVarTargetRaster,
      res_celda: res_celda
    })
      .then(function (data) {
        res.json({'data': data})
      })
      .catch(function (error) {
        debug(error)
        next(error)
      })
  } else if ( hasBiosSource === true && hasRasterSource === true && 
              hasBiosTarget === true ) {
    debug('T')
    var whereVarSource = verb_utils.processBioFilters(sfilters)
    var whereVarSourceRaster = verb_utils.processRasterFilters(sfilters)

    var whereVarTarget = verb_utils.processBioFilters(tfilters)
    // var whereVarTargetRaster = verb_utils.processRasterFilters(tfilters)

    pool.any(queries.getNodesNiche.getNodesNicheBioRaster_Bio, {
      N: N,
      alpha: alpha,
      min_occ: min_occ,
      where_config_source: whereVarSource,
      where_config_source_raster: whereVarSourceRaster,
      where_config_target: whereVarTarget,
      res_celda: res_celda
      // where_config_target_raster: whereVarTargetRaster
    })
      .then(function (data) {
        res.json({'data': data})
      })
      .catch(function (error) {
        debug(error)
        next(error)
      })
  } else if ( hasBiosSource === true && hasRasterSource === true && 
              hasRasterTarget === true ) {
    debug('T')
    var whereVarSource = verb_utils.processBioFilters(sfilters)
    var whereVarSourceRaster = verb_utils.processRasterFilters(sfilters)

    // var whereVarTarget = verb_utils.processBioFilters(tfilters)
    var whereVarTargetRaster = verb_utils.processRasterFilters(tfilters)

    pool.any(queries.getNodesNiche.getNodesNicheBioRaster_Raster, {
      N: N,
      alpha: alpha,
      min_occ: min_occ,
      where_config_source: whereVarSource,
      where_config_source_raster: whereVarSourceRaster,
      // where_config_target: whereVarTarget,
      where_config_target_raster: whereVarTargetRaster,
      res_celda: res_celda
    })
      .then(function (data) {
        res.json({'data': data})
      })
      .catch(function (error) {
        debug(error)
        next(error)
      })
  } else if ( hasBiosSource === true && hasBiosTarget === true && 
              hasRasterTarget === true ) {
    debug('T')
    var whereVarSource = verb_utils.processBioFilters(sfilters)
    // var whereVarSourceRaster = verb_utils.processRasterFilters(sfilters)

    var whereVarTarget = verb_utils.processBioFilters(tfilters)
    var whereVarTargetRaster = verb_utils.processRasterFilters(tfilters)

    pool.any(queries.getNodesNiche.getNodesNicheBio_BioRaster, {
      N: N,
      alpha: alpha,
      min_occ: min_occ,
      where_config_source: whereVarSource,
          // where_config_source_raster: whereVarSourceRaster,
      where_config_target: whereVarTarget,
      where_config_target_raster: whereVarTargetRaster,
      res_celda: res_celda
    })
      .then(function (data) {
        res.json({'data': data})
      })
      .catch(function (error) {
        debug(error)
        next(error)
      })
  } else if ( hasRasterSource === true && hasBiosTarget === true && 
              hasRasterTarget === true ) {
    debug('T')
    // var whereVarSource = verb_utils.processBioFilters(sfilters)
    var whereVarSourceRaster = verb_utils.processRasterFilters(sfilters)

    var whereVarTarget = verb_utils.processBioFilters(tfilters)
    var whereVarTargetRaster = verb_utils.processRasterFilters(tfilters)

    pool.any(queries.getNodesNiche.getNodesNicheRaster_BioRaster, {
      N: N,
      alpha: alpha,
      min_occ: min_occ,
      // where_config_source: whereVarSource,
      where_config_source_raster: whereVarSourceRaster,
      where_config_target: whereVarTarget,
      where_config_target_raster: whereVarTargetRaster,
      res_celda: res_celda
    })
      .then(function (data) {
        res.json({'data': data})
      })
      .catch(function (error) {
        debug(error)
        next(error)
      })
  } else if ( hasBiosSource === true && hasBiosTarget === true ) {
    debug('hasBiosSource - hasBiosTarget')
    var whereVarSource = verb_utils.processBioFilters(sfilters)
    // var whereVarSourceRaster = verb_utils.processRasterFilters(sfilters)

    var whereVarTarget = verb_utils.processBioFilters(tfilters)
    // var whereVarTargetRaster = verb_utils.processRasterFilters(tfilters)

    // debug(whereVarSource)
    // debug(whereVarTarget)

    pool.any(queries.getNodesNiche.getNodesNicheBio_Bio, {
      N: N,
      alpha: alpha,
      min_occ: min_occ,
      where_config_source: whereVarSource,
      // where_config_source_raster: whereVarSourceRaster,
      where_config_target: whereVarTarget,
      res_celda: res_celda
      // where_config_target_raster: whereVarTargetRaster
    })
      .then(function (data) {
        res.json({'data': data})
      })
      .catch(function (error) {
        debug(error)
        next(error)
      })
  } else if ( hasBiosSource === true && hasRasterTarget === true ) {
    debug('T')
    var whereVarSource = verb_utils.processBioFilters(sfilters)
    // var whereVarSourceRaster = verb_utils.processRasterFilters(sfilters)
    // var whereVarTarget = verb_utils.processBioFilters(tfilters)
    var whereVarTargetRaster = verb_utils.processRasterFilters(tfilters)

    pool.any(queries.getNodesNiche.getNodesNicheBio_Raster, {
      N: N,
      alpha: alpha,
      min_occ: min_occ,
      where_config_source: whereVarSource,
      // where_config_source_raster: whereVarSourceRaster,
      // where_config_target: whereVarTarget,
      where_config_target_raster: whereVarTargetRaster,
      res_celda: res_celda
    })
      .then(function (data) {
        res.json({'data': data})
      })
      .catch(function (error) {
        debug(error)
        next(error)
      })
  } else if ( hasRasterSource === true && hasBiosTarget === true ) {
    debug('T')
    // var whereVarSource = verb_utils.processBioFilters(sfilters)
    var whereVarSourceRaster = verb_utils.processRasterFilters(sfilters)

    var whereVarTarget = verb_utils.processBioFilters(tfilters)
    // var whereVarTargetRaster = verb_utils.processRasterFilters(tfilters)

    pool.any(queries.getNodesNiche.getNodesNicheRaster_Bio, {
      N: N,
      alpha: alpha,
      min_occ: min_occ,
      // where_config_source: whereVarSource,
      where_config_source_raster: whereVarSourceRaster,
      where_config_target: whereVarTarget,
      res_celda: res_celda
      // where_config_target_raster: whereVarTargetRaster
    })
      .then(function (data) {
        res.json({'data': data})
      })
      .catch(function (error) {
        debug(error)
        next(error)
      })
  } else if ( hasRasterSource === true && hasRasterTarget === true ) {
    debug('T')
    // var whereVarSource = verb_utils.processBioFilters(sfilters)
    var whereVarSourceRaster = verb_utils.processRasterFilters(sfilters)

    // var whereVarTarget = verb_utils.processBioFilters(tfilters)
    var whereVarTargetRaster = verb_utils.processRasterFilters(tfilters)

    // debug(whereVarSourceRaster)
    // debug(whereVarTargetRaster)

    pool.any(queries.getNodesNiche.getNodesNicheRaster_Raster, {
      N: N,
      alpha: alpha,
      min_occ: min_occ,
      // where_config_source: whereVarSource,
      where_config_source_raster: whereVarSourceRaster,
      // where_config_target: whereVarTarget,
      where_config_target_raster: whereVarTargetRaster,
      res_celda: res_celda
    })
      .then(function (data) {
        // debug(data)
        res.json({'data': data})
      })
      .catch(function (error) {
        debug(error)
        next(error)
      })
  } else {
    next()
  }
}


/**
 * Esta variable es un arreglo donde se define el flujo que debe de tomar una
 * petición al verbo getNodesNiche. Actualmente solo consta de un elemento, 
 * getNodeNiche.
 *
 * @see controllers/getNodesNiche~GetNodeNiche
 */
exports.pipe = [getNodesNiche]