hcm-clocking-event-rule-nodejs
v0.32.0
Published
Uma biblioteca de utilitários implementação de regra no pontoX
Maintainers
Readme
hcm-clocking-event-rule-nodejs
Descrição
Uma biblioteca de utilitários para implementação de regras no Ponto X, desenvolvida em Node.js/TypeScript.
Principais artefatos
O projeto exporta diversas entidades e utilitários, incluindo:
- Contextos, contratos e colaboradores (
Context,Contract,EmploymentRelationship, etc) - Informações completas do dia como horários, escalas, feriados, etc (
Workshift,Holiday, etc) - Utilitários de data e objeto (
DateUtils,ObjectUtils) - Históricos e programações
- Situações, escalas, feriados, logs, etc.
Estrutura do Projeto
src/— Código-fonte principalsrc/data/— Entidades de domíniosrc/utils/— Utilitáriossrc/test/— Testes automatizados e builders
Documentação
As informações sobre as entidades e utilitários estão documentadas diretamente no código, a documentação em formato html será gerada automaticamente e disponibilizada no arquivo docs.zip após a execução do comando de build.
Após a instalação da biblioteca, você pode acessar a documentação descompactando o arquivo de documentação localizado em: /<lamda>/node_modules/hcm-clocking-event-rule-nodejs/docs.zip.
Instalação
Para instalar a biblioteca, execute o seguinte comando:
npm install hcm-clocking-event-rule-nodejsUso
Para utilizar a biblioteca, importe os módulos necessários no seu projeto Node.js/Javascript. Por exemplo:
Exemplo: Lamda em Node.js
const { Context } = require('hcm-clocking-event-rule-nodejs');
exports.handler = async (event) => {
return sendRes(200, event);
};
const sendRes = (status, event) => {
const { Context, TimeEvaluationRule } = require('hcm-clocking-event-rule-nodejs');
// Cria uma nova instância do contexto com o evento recebido
let context = new Context(event);
try{
// Executa a regra de apuração
const rule = new TimeEvaluationRule(context);
rule.execute();
} catch (error) {
context.logError(`Erro: ${error.message}, stack: ${error.stack}`);
}
// Obtém o resultado do corpo do contexto
const result = context.getBodyResult();
var response = {
statusCode: status,
headers: {
"Content-Type": "application/json"
},
body: result
};
}Exemplo: TimeEvaluationRule.js
const { DateUtils, DateIntervalUtils, DateInterval } = require('hcm-clocking-event-rule-nodejs');
class TimeEvaluationRule {
constructor(context) {
this.context = context;
}
execute() {
try{
//Iterar sobre os contratos do contexto e executar alguma lógica
this.context.contracts.forEach((contract) => {
//Iterar sobre as apurações do contrato do colaborador
contract.timeEvaluation.forEach((timeEvaluation) => {
try{
this.timeEvaluation(timeEvaluation, contract);
} catch (error) {
timeEvaluation.invalidate(`Erro: ${error.message}, stack: ${error.stack}`);
}
});
});
} catch (error) {
this.context.logError(`Erro: ${error.message}, stack: ${error.stack}`);
}
}
/**
* Método para processar as apurações.
* @param {TimeEvaluation} timeEvaluation - Apuração
* @param {Contract} contract - O contrato do colaborador
*/
timeEvaluation(timeEvaluation, contract){
// Implementar a lógica de customização....
}
}
