import { Entity } from './entity'; import { Dispositivo } from './dispositivo'; import { Empresa } from './empresa'; import { Roles } from './session/requester-usuario'; import { Pessoa } from './pessoa'; export class Operador extends Entity { nome; username; token: string; ativo: boolean; supervisor: boolean; roles: Roles; dispositivos: Array; image_url: string = ''; mobile_image_url: string = ''; pessoa: Pessoa; constructor(json?: any, generateId?: boolean) { super(json, generateId); json = json || {}; this.nome = json.nome; this.username = json.username; this.token = json.token; this.ativo = json.ativo; this.supervisor = json.supervisor; this.roles = json.roles; this.image_url = json.image_url || ''; this.pessoa = json.pessoa || {}; this.mobile_image_url = json.mobile_image_url || ''; this.dispositivos = json.dispositivos && new Array(...json.dispositivos) || []; } setAtivo(ativo: boolean): Operador { this.ativo = ativo; return this; } temAcesso(empresa: Empresa, modulo: string, permissao: string): boolean { return this.roles && this.roles[empresa._id] && (this.supervisor || (this.roles[empresa._id][modulo] || []).indexOf(permissao) !== -1); } toJson() { let operadorJson = Object.assign({}, this, super.toJson()); delete operadorJson.dispositivos; delete operadorJson.token; return operadorJson; } }