Dulce-Work-Schedule/2018.1-Dulce_Sector

View on GitHub
Server/_sector.js

Summary

Maintainability
A
2 hrs
Test Coverage
var Promise = require('bluebird');

module.exports = function(options){

  this.add('role:sector,cmd:create', async function create (msg,respond) {
    var sector = this.make('sectors')
    sector.name = msg.name
    sector.hospital_id = msg.hospital_id

    var result = {success:false};

    var sector_list$ = Promise.promisify(sector.list$, { context: sector });

    await sector_list$(
      {
        name: sector.name,
        hospital_id: sector.hospital_id
      })
      .then(await function(list_of_sectors){
        if (list_of_sectors.length != 0){
          result.duplicate_sector_error = 'Este setor já existe neste hospital'
          respond(null, result)
        }
      })
      .catch(function(err) {
        console.log('error')
        console.log(err)
      })

    sector.save$(function(err,sector){
      respond(null,sector)
    })
  })

  this.add('role:sector, cmd:list', function list(msg, respond){
    var sector = this.make('sectors');
    sector.list$({all$:true}, function(error,sector){
      respond(null,sector);
    });
  })

  this.add('role:sector, cmd:view', function list(msg, respond){
    result  = {};
    var sector = this.make('sectors');
    sector_id = msg.sector_id
    sector.load$({id:sector_id}, function(error,sector){
      if (sector  == null){
        result.sector_not_find_error = "Setor não encontrado"
        result.sucess = false
        respond(null,result);
      } else {
        respond(null,sector);
      }
    });
  })

  this.add('role:sector, cmd:listByHospital', function list(msg, respond){
    result  = {};
    var sector = this.make('sectors');
    hospital_id = msg.hospital_id
    sector.list$({hospital_id:hospital_id}, function(error,sector){
      if (sector.length == 0){
        result.hospital_not_find_error = "Hospital não possui nenhum setor cadastrado"
        result.sucess = false
        respond(null,result);
      } else {
        respond(null,sector);
      }
    });
  })

  this.add('role:sector, cmd:error', function error(msg, respond){
    respond(null, {success:false, message: 'acesso negado'});
  })

}