All files / common/models skill.js

18.18% Statements 8/44
0% Branches 0/14
14.29% Functions 1/7
21.05% Lines 8/38

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108    1x   1x 1x                                                                     1x                       1x                                             1x                           1x                   1x                
'use strict';
 
const logger = require('../../services/logger');
 
module.exports = function(Skill) {
  Skill.skillSuggestions = async language => {
    if (!language) throw new Error('Language is required!');
 
    try {
      const skillTranslations = await Skill.app.models.skillTranslations.find({
        include: 'skill',
        where: {LanguageId: language}
      });
 
      const skillTranslationsJSON = skillTranslations.map(tr => tr.toJSON());
 
      const validSuggestions = skillTranslationsJSON.reduce((validSkills, skillTranslation) => {
        const name = skillTranslation.Name;
        if (validSkills.includes(name)) return validSkills;
 
        const {skill} = skillTranslation;
        if (!skill) return validSkills;
 
        for (const tr of skillTranslationsJSON) {
          if (tr.skill && tr.Name === name) {
            validSkills = [...validSkills, name];
          }
        }
 
        return validSkills;
      }, []);
 
      return validSuggestions;
    } catch (e) {
      console.log(e);
      logger.error(`Error getting skill suggestions, ${e}`);
      throw e;
    }
  };
 
  Skill.remoteMethod('skillSuggestions', {
    http: {verb: 'get'},
    accepts: {
      arg: 'language',
      type: 'string'
    },
    returns: {
      arg: 'skills',
      type: 'array'
    }
  });
 
  Skill.getSkills = function(resourceId, cb) {
    if (!resourceId) throw new Error('Resource ID is required!');
 
    try {
      Skill.find(
        {
          include: 'skillTranslations',
          where: {
            ResourceId: resourceId
          }
        },
        function(err, result) {
          if (err) return cb(err);
          return cb(null, result);
        }
      );
    } catch (e) {
      console.log(e);
      logger.error(`Error getting skills, ${e}`);
      throw e;
    }
  };
 
  Skill.remoteMethod('getSkills', {
    http: {verb: 'get'},
    accepts: [
      {
        arg: 'resourceId',
        type: 'number'
      }
    ],
    returns: {
      arg: 'result',
      type: 'object'
    }
  });
 
  Skill.getAllSkills = async () => {
    try {
      return await Skill.find({include: 'skillTranslations'});
    } catch (e) {
      console.log(e);
      logger.error(`Error getting skills, ${e}`);
      throw e;
    }
  };
 
  Skill.remoteMethod('getAllSkills', {
    http: {verb: 'get'},
    returns: {
      arg: 'skills',
      type: 'array'
    }
  });
};