{"version":3,"file":"client-services.mjs","sources":["../../../projects/client-services/src/lib/classes/dictionary.ts","../../../projects/client-services/src/lib/classes/error.ts","../../../projects/client-services/src/lib/classes/extendend-http-client.ts","../../../projects/client-services/src/lib/classes/here-maps.ts","../../../projects/client-services/src/lib/enums/action.ts","../../../projects/client-services/src/lib/enums/find-method.ts","../../../projects/client-services/src/lib/types/geometry.type.ts","../../../projects/client-services/src/lib/classes/model-list.ts","../../../projects/client-services/src/lib/functions/util.ts","../../../projects/client-services/src/lib/classes/model.ts","../../../projects/client-services/src/lib/enums/exception-type.ts","../../../projects/client-services/src/lib/enums/action-shared-service.ts","../../../projects/client-services/src/lib/classes/page-form.ts","../../../projects/client-services/src/lib/classes/param.ts","../../../projects/client-services/src/lib/classes/trigger.ts","../../../projects/client-services/src/lib/controller-service/controller.service.ts","../../../projects/client-services/src/lib/enums/trigger-type.ts","../../../projects/client-services/src/lib/functions/json-convert.ts","../../../projects/client-services/src/lib/services/configuration.service.ts","../../../projects/client-services/src/lib/services/email.service.ts","../../../projects/client-services/src/lib/services/geometry.service.ts","../../../projects/client-services/src/lib/services/general.service.ts","../../../projects/client-services/src/lib/services/here-map.service.ts","../../../projects/client-services/src/lib/services/model.service.ts","../../../projects/client-services/src/lib/services/sessions.service.ts","../../../projects/client-services/src/lib/services/about.service.ts","../../../projects/client-services/src/lib/services/shared.service.ts","../../../projects/client-services/src/lib/validators/custom-validators.ts","../../../projects/client-services/src/lib/validators/is-object-validator.ts","../../../projects/client-services/src/lib/validators/validators.module.ts","../../../projects/client-services/src/lib/client-services.module.ts","../../../projects/client-services/src/public-api.ts","../../../projects/client-services/src/client-services.ts"],"sourcesContent":["interface IDictionary<T> {\r\n    add(key: string, value: T): void;\r\n    remove(key: string): void;\r\n    contains(key: string): boolean;\r\n    get(key: string): T;\r\n  }\r\n\r\nexport class Dictionary<T> implements IDictionary<T> {\r\n\r\n  constructor(init?: { key: string; value: T; }[]) {\r\n    if (init) {\r\n      for (var i in init) {\r\n        this[init[i].key] = init[i].value;\r\n      }\r\n    }\r\n  }\r\n\r\n  initRelations(childs: string[]) {\r\n    for(var i in childs) {\r\n       this[childs[i]] = [];\r\n    }\r\n  }\r\n\r\n  add(key: string, value: T) {\r\n    if(this[key] != undefined) {\r\n      throw `¡El identificador '${key}' ya existe en el diccionario!`\r\n    }\r\n    this[key] = value;\r\n  }\r\n\r\n  remove(key: string): void {\r\n    delete this[key];\r\n  }\r\n\r\n  contains(key: string): boolean {\r\n\r\n    if (this[key] == undefined) {\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  get(key: string): T {\r\n    return this[key];\r\n  }\r\n\r\n  set(key: string, value: T) {\r\n    this[key] = value\r\n  }\r\n}","import { ExceptionType } from '../enums/exception-type';\r\n\r\nexport class Error {\r\n    exceptionType: ExceptionType\r\n    globalErrorCode?: number\r\n    errorCode?: number\r\n    message: string\r\n    trace: string[]\r\n}","import { HttpClient } from '@angular/common/http'\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class ExtendedHttpClient extends HttpClient {\r\n}","export class RoutingParameters {\r\n\r\n  routingMode: string\r\n\r\n  mode: string\r\n  representation: string\r\n  routeattributes: string\r\n  maneuverattributes: string\r\n  avoidareas: string\r\n\r\n  private _waypoints: number\r\n\r\n  constructor() {\r\n    this._waypoints = 0\r\n    this.representation = 'display'\r\n    this.routeattributes = 'waypoints,summary,shape,legs'\r\n    this.maneuverattributes = 'direction,action';\r\n  }\r\n\r\n  addWayPoint(lat: number, lon: number) {\r\n    this[\"waypoint\" + this._waypoints] = `geo!${lat},${lon}`\r\n    this._waypoints++\r\n  }\r\n\r\n  addAvoidArea(posX1: number, posY1: number, posX2: number, posY2: number) {\r\n    if (this.avoidareas == undefined) {\r\n      this.avoidareas = `${posX1},${posY1};${posX2},${posY2}`\r\n      //objRestriccion.posx1 + ',' + objRestriccion.posy1 + ';' + objRestriccion.posx2 + ',' + objRestriccion.posy2\r\n    } else {\r\n      this.avoidareas += `!${posX1},${posY1};${posX2},${posY2}`\r\n    }\r\n  }\r\n\r\n}\r\n\r\n","export enum Action {\r\n    Insert,\r\n    Update,\r\n    Delete,\r\n    Splice\r\n}","export enum FindMethod {\r\n    PrimaryKey,\r\n    Indentity\r\n} ","import { GeometryService } from '../services/geometry.service'\r\n\r\nexport class Geometry {\r\n  private value: string\r\n  srid: number\r\n  isValid: boolean\r\n  private valid: Geometry\r\n\r\n  private geoObject: any\r\n  private geoType: string\r\n  \r\n  constructor() {\r\n  }\r\n\r\n  geometryAsText(){\r\n    return this.value\r\n  }\r\n  \r\n  makeValid(): Geometry {\r\n    if(!this.isValid) {\r\n        return this.valid\r\n    }\r\n    return this\r\n  }\r\n\r\n  getHereMapGeo(H: any): any {\r\n\r\n    if(this.geoType != undefined) {\r\n        return this.geoObject\r\n    }\r\n\r\n    let type = this.value.substring(0, this.value.indexOf(\"(\")).trim()\r\n    let content = this.value.substring(this.value.indexOf(\"(\"))\r\n\r\n    content = content.replace(/\\(/g , '\\[')\r\n    content = content.replace(/\\)/g , '\\]')\r\n    content = content.replace(/ /g, '$')  \r\n    \r\n    while(content.indexOf('],$') != -1) {\r\n        content = content.replace(/\\],\\$/g, '],')\r\n    }\r\n\r\n    while(content.indexOf(',$') != -1) {\r\n        content = content.replace(/,\\$/g, ',')\r\n    }\r\n    \r\n    content = content.replace(/\\$/g, ' ')\r\n    content = content.replace(/\\],\\[/g, ']$[')\r\n    content = content.replace(/\\[-/g, '[{\"lon\":-')\r\n    content = content.replace(/\\[-/g, '[{\"lon\":-')\r\n    content = content.replace(/,/g, '},{\"lon\":')\r\n    content = content.replace(/ /g, ',\"lat\":')\r\n    content = content.replace(/\\[[0-9]/g, '[{\"lon\":!$&')\r\n    content = content.replace(/[0-9]\\]/g, '$&!}]')\r\n    content = content.replace(/!\\[/g, '')\r\n    content = content.replace(/\\]!/g, '')\r\n    content = content.replace(/\\$/g, ',')\r\n\r\n    let objNiveles = JSON.parse(content)\r\n\r\n    switch(type) {\r\n      case 'POINT':\r\n\r\n        this.geoObject = this.getGeoPoint(H, objNiveles)\r\n        this.geoType = type\r\n\r\n        return this.geoObject\r\n      case 'MULTIPOINT':\r\n        let geoPoints = []\r\n\r\n        for(var i in objNiveles) {\r\n          geoPoints.push(this.getGeoPoint(H, objNiveles[i]))\r\n        }\r\n\r\n        this.geoObject = new H.geo.MultiPoint(geoPoints)\r\n        this.geoType = type\r\n\r\n        return this.geoObject\r\n      case 'LINESTRING':\r\n\r\n        this.geoObject = this.getGeoLineString(H, objNiveles)\r\n        this.geoType = type\r\n\r\n        return this.geoObject\r\n      case 'MULTILINESTRING':\r\n\r\n        let geoLinesString = []\r\n\r\n        for(var i in objNiveles) {\r\n          geoLinesString.push(this.getGeoLineString(H, objNiveles[i]))\r\n        }\r\n\r\n        this.geoObject = new H.geo.MultiLineString (geoLinesString)\r\n        this.geoType = type\r\n\r\n        return this.geoObject\r\n      case 'POLYGON':\r\n\r\n        this.geoObject = this.getGeoPolygon(H, objNiveles)\r\n        this.geoType = type\r\n\r\n        return this.geoObject\r\n      case 'MULTIPOLYGON':\r\n\r\n        let geoPolygons = []\r\n\r\n        for(var i in objNiveles) {\r\n          geoPolygons.push(this.getGeoPolygon(H, objNiveles[i]))\r\n        }\r\n\r\n        this.geoObject = new H.geo.MultiPolygon(geoPolygons)\r\n        this.geoType = type\r\n\r\n        return this.geoObject\r\n      default:\r\n        throw `La geometria '${type}' no esta definida`\r\n    }\r\n  }\r\n\r\n  async intersects(geometries: Geometry[], _geometryServ: GeometryService) {\r\n    return <boolean[]> (await _geometryServ.intersects([this], geometries))[0]\r\n  }\r\n\r\n  private getGeoPoint(H: any, arr: any[]) {\r\n    return new H.geo.Point(arr[0].lat, arr[0].lon);\r\n  }\r\n  \r\n  private getGeoLineString(H: any, arr: any[]) {\r\n\r\n    let geoLineString = new H.geo.LineString()\r\n\r\n    for(var i in arr) {\r\n      geoLineString.pushLatLngAlt (arr[i].lat, arr[i].lon)\r\n    }\r\n\r\n    return geoLineString\r\n  }\r\n\r\n  private getGeoPolygon(H: any, arr: any[]) {\r\n    let exterior = this.getGeoLineString(H, arr[0])\r\n    let interiors = []\r\n\r\n    arr.splice(0, 1)\r\n    for(var i in arr){\r\n      interiors.push(this.getGeoLineString(H, arr[i]))\r\n    }\r\n    \r\n    return new H.geo.Polygon (exterior, interiors)\r\n  }\r\n\r\n  static geomFromText(value: string, srid: number): Geometry {\r\n      let geom = new Geometry()\r\n      geom.value = value\r\n      geom.isValid = true\r\n      geom.srid = srid\r\n\r\n      return geom \r\n  }\r\n\r\n  static geomFromObject(value: { value: string, isValid: boolean, validValue: string, srid: number }): Geometry {\r\n      let geom = new Geometry()\r\n      geom.value = value.value\r\n      geom.isValid = value.isValid\r\n      geom.srid = value.srid\r\n\r\n      if(!geom.isValid) {\r\n          geom.valid = this.geomFromText(value.validValue, geom.srid)\r\n      }\r\n      \r\n      return geom \r\n  }\r\n\r\n  static pointFromCoords(coord: { lat: number, lon: number }, srid: number): Geometry {\r\n    const result = this.geomFromText(`POINT (${coord.lon} ${coord.lat})`, srid) \r\n    return result\r\n  }\r\n\r\n  static multiPointFromCoords(coords: { lat: number, lon: number }[], srid: number): Geometry {\r\n    \r\n    const result =  this.geomFromText(`MULTIPOINT ((${coords.map(point => `${point.lon} ${point.lat}`).join(\"), (\")}))`, srid) \r\n    return result\r\n  }\r\n\r\n  static lineStringFromCoords(coords: { lat: number, lon: number }[], srid: number): Geometry {\r\n    \r\n    const result =  this.geomFromText(`LINESTRING (${coords.map(point => `${point.lon} ${point.lat}`).join(\", \")})`, srid) \r\n    return result\r\n  }\r\n\r\n  static multiLineStringFromCoords(coords: { lat: number, lon: number }[][], srid: number): Geometry {\r\n    \r\n    const result =  this.geomFromText(`MULTILINESTRING (${coords.map(line => line.map(point => `${point.lon} ${point.lat}`).join(\", \")).join(\"), (\")})`, srid) \r\n    return result\r\n  }\r\n\r\n  static polygonFromCoords(coords: { lat: number, lon: number }[][], srid: number): Geometry {\r\n    \r\n    const result =  this.geomFromText(`POLYGON ((${coords.map(part => part.map(point => `${point.lon} ${point.lat}`).join(\", \")).join(\"), (\")}))`, srid) \r\n    return result\r\n  }\r\n\r\n  static multiPolygonFromCoords(coords: { lat: number, lon: number }[][][], srid: number): Geometry {\r\n\r\n    const result =  this.geomFromText(`MULTIPOLYGON (((${coords.map(polygon => polygon.map(part => part.map(point => `${point.lon} ${point.lat}`).join(\", \")).join(\"), (\")).join(\")), ((\")})))`, srid) \r\n    return result\r\n  }\r\n\r\n  static regularPolygonFromSpecs(centerLat: number, centerLon: number, radius: number, sides: number, srid: number): Geometry {\r\n    \r\n    let isFirst: boolean = true\r\n    let polygon: string = \"\"\r\n\r\n    for(var i = 0; i <= sides; i++) {\r\n\r\n      let lat = centerLat + radius * Math.cos(2 * Math.PI * i / sides)\r\n      let lon = centerLon + radius * Math.sin(2 * Math.PI * i / sides)\r\n    \r\n      if (isFirst) {\r\n        isFirst = false\r\n      } else {\r\n        polygon = polygon + \", \"\r\n        isFirst = false\r\n      }\r\n\r\n      polygon = polygon + lon + ' ' + lat\r\n    }\r\n\r\n    return this.geomFromText(`POLYGON ((${polygon}))`, srid) \r\n  }\r\n\r\n  static rectFromSpecs(posX1: number, posY1: number, posX2: number, posY2: number, srid: number): Geometry {\r\n    return Geometry.polygonFromCoords([[{ lat: posX1, lon: posY1}, { lat: posX2, lon: posY1 }, { lat: posX2, lon: posY2 }, { lat: posX1, lon: posY2 }, { lat: posX1, lon: posY1 }]], srid)\r\n  }\r\n}\r\n","import { Model } from './model'\r\nimport { ModelService } from '../services/model.service'\r\n\r\nexport class ModelList<T extends Model> extends Array<T> {\r\n\r\n    constructor() {\r\n        super(0)\r\n    }\r\n\r\n    getArray<T extends Model>() : T[] {\r\n        return <T[]> <any> this\r\n    }\r\n\r\n    async save(_modelServ: ModelService) {\r\n        await _modelServ.saveList(this)\r\n    }\r\n\r\n    static empty<T extends Model>() : ModelList<T> {\r\n        return new ModelList<T>();\r\n    }\r\n\r\n    static fromArray<T extends Model>(items: T[]) : ModelList<T> {\r\n\r\n        let ml = new ModelList<T>()\r\n        ml.push(...items)\r\n        return ml;\r\n    }\r\n\r\n    map(f: any): any {\r\n\r\n        let n: Model[];\r\n        \r\n        n = [];\r\n\r\n        for(let model of this) {\r\n            n.push(model);\r\n        }\r\n\r\n        return n.map(f);\r\n    }\r\n}","import { Model } from '../classes/model'\r\nimport { Action } from '../enums/action'\r\nimport { Dictionary } from '../classes/dictionary'\r\nimport { Geometry } from '../types/geometry.type'\r\nimport { ModelList } from '../classes/model-list'\r\n\r\ndeclare var H: any\r\n\r\nexport class Util {\r\n\r\n    static tablenameToCsPropertyName(tableName: string) {\r\n        var propertyName = \"\";\r\n        var capitalizar = true;\r\n        var isFirst = true;\r\n\r\n        for (let i = 0; i < tableName.length; i++) {\r\n            let c = tableName.charAt(i);\r\n\r\n            if (c != '_') {\r\n                if (capitalizar) {\r\n                    propertyName += c.toUpperCase();\r\n                    capitalizar = false;\r\n                }\r\n                else {\r\n                    propertyName += c.toLowerCase();\r\n                }\r\n            }\r\n            else {\r\n                if (isFirst) {\r\n                    propertyName += c;\r\n                }\r\n                else {\r\n                    capitalizar = true;\r\n                }\r\n            }\r\n\r\n            isFirst = false;\r\n        }\r\n\r\n\r\n        return propertyName;\r\n    }\r\n\r\n    static toTsPropertyName(propertyName: string) {\r\n\r\n        if (propertyName.substr(0, 1) == \"_\") {\r\n            return propertyName.substr(0, 2).toLowerCase() + propertyName.substr(2)\r\n        }\r\n        return propertyName.substr(0, 1).toLowerCase() + propertyName.substr(1)\r\n    }\r\n\r\n    static toCsPropertyName(propertyName: string) {\r\n        if (propertyName.substr(0, 1) == \"_\" || propertyName.substr(0, 1) == \"$\") {\r\n            return propertyName.substr(0, 2).toUpperCase() + propertyName.substr(2)\r\n        }\r\n        return propertyName.substr(0, 1).toUpperCase() + propertyName.substr(1)\r\n    }\r\n\r\n    static fromTsPropertyName(propertyName: string) {\r\n\r\n        if (propertyName.substr(0, 1) == \"$\") {\r\n            return propertyName.substr(1)\r\n        }\r\n        return propertyName\r\n    }\r\n\r\n    static arrayToModelArray<T extends Model>(T: { new(): T }, data: any) {\r\n        let modelArray: T[] = []\r\n\r\n        for (var i in data) {\r\n\r\n            let record = data[i]\r\n            let model = new T()\r\n\r\n            for (var j in record) {\r\n                if (j.substr(0, 1) != \"_\") {\r\n                    model[j] = record[j]\r\n\r\n                    model._previousModel[j] = model[j]\r\n\r\n                } else {\r\n                    model._dataAdd[j.substr(1)] = record[j]\r\n                }\r\n            }\r\n\r\n            model._action = Action.Update\r\n            model._readedFromDatabase = true\r\n\r\n            modelArray.push(model)\r\n        }\r\n\r\n        return <T[]>modelArray\r\n    }\r\n\r\n    static arrayToModelList<T extends Model>(T: { new(): T }, data: any) {\r\n        let modelList: ModelList<T> = new ModelList();\r\n\r\n        for (var i in data) {\r\n\r\n            let record = data[i]\r\n            let model = new T()\r\n\r\n            for (var j in record) {\r\n                if (j.substr(0, 1) != \"_\") {\r\n                    model[j] = record[j]\r\n\r\n                    model._previousModel[j] = model[j]\r\n\r\n                } else {\r\n                    model._dataAdd[j.substr(1)] = record[j]\r\n                }\r\n            }\r\n\r\n            model._action = Action.Update\r\n            model._readedFromDatabase = true\r\n\r\n            modelList.push(model)\r\n        }\r\n\r\n        return modelList\r\n    }\r\n\r\n    static arrayPropertiesToModelList<T extends Model>(T: { new(): T }, data: any[], properties: any) {\r\n        let modelList: ModelList<T> = new ModelList();\r\n\r\n        for (var i in data) {\r\n\r\n            let record = data[i]\r\n            let model = new T()\r\n\r\n            for (var property in record) {\r\n\r\n                if (properties[property]) {\r\n                    model[property] = record[property];\r\n\r\n                    model._previousModel[property] = model[property]\r\n                } else {\r\n                    model._dataAdd[property] = record[property];\r\n                }\r\n            }\r\n\r\n            model._action = Action.Update\r\n            model._readedFromDatabase = true\r\n\r\n            modelList.push(model)\r\n        }\r\n\r\n        return modelList\r\n    }\r\n\r\n    static modelToDictionary(key: string, data: Model[]) {\r\n\r\n        let dictionary = new Dictionary<Model>()\r\n\r\n        for (var i in data) {\r\n\r\n            let prop = data[i][key]\r\n\r\n            if (prop != undefined && prop != null) {\r\n                dictionary.add(data[i][key], data[i])\r\n            }\r\n        }\r\n\r\n        return dictionary\r\n    }\r\n\r\n    static copyProperties(source: any, dest: Model) {\r\n\r\n        dest._previousModel = {}\r\n\r\n        for (var i in source) {\r\n            dest[i] = source[i]\r\n            dest._previousModel[i] = dest[i]\r\n        }\r\n    }\r\n\r\n    static serialize(data: any) {\r\n\r\n        let stringValue = JSON.stringify(data, (key, value) => {\r\n\r\n            if (value instanceof Model) {\r\n                return Model.getModelLite(value)\r\n            } else if (value instanceof ModelList) {\r\n\r\n                let modelList = [];\r\n\r\n                for (let model of value) {\r\n                    let modelLite = Model.getModelLite(model);\r\n\r\n                    modelList.push(modelLite);\r\n                }\r\n\r\n                return modelList;\r\n            } else if (value instanceof Geometry) {\r\n                return { value: value.geometryAsText(), srid: value.srid }\r\n            }\r\n            return value\r\n        })\r\n\r\n        return stringValue\r\n    }\r\n}\r\n\r\n","import { Action } from '../enums/action'\r\nimport { ModelService } from '../services/model.service'\r\nimport { FindMethod } from '../enums/find-method'\r\nimport { Dictionary } from './dictionary'\r\nimport { ModelList } from './model-list'\r\nimport { Util } from '../functions/util'\r\nimport { Trigger } from './trigger'\r\n\r\nexport class Model {\r\n    _tableName: string\r\n  _primaryKey: string[]\r\n  _identity: string[]\r\n  _action: Action\r\n  _selectColumsId: number\r\n  _readedFromDatabase: boolean\r\n  _previousModel: any\r\n  _detail: Dictionary<ModelList<Model>>\r\n  _dataAdd: any\r\n  _deleteTrigger: any\r\n  _freeModel: Model\r\n  _triggers: Trigger[]\r\n  _options: {\r\n    copyDataAdd: boolean\r\n  }\r\n\r\n  constructor(){\r\n      this._action = Action.Insert\r\n      this._selectColumsId = 0\r\n      this._readedFromDatabase = false\r\n      this._previousModel = {}\r\n      this._detail = new Dictionary<ModelList<Model>>()\r\n      this._dataAdd = {}\r\n      this._freeModel = null;\r\n      this._triggers = [];\r\n      this._options = {\r\n        copyDataAdd: false\r\n      };\r\n  }\r\n\r\n  protected static efindByPrimaryKey<T extends Model>(t: { new(): T }, _modelServ: ModelService, selectColumnsId: number, ...params: any) {\r\n    return _modelServ.find(t, FindMethod.PrimaryKey, selectColumnsId, params)       \r\n  }\r\n  \r\n  protected static efindByIdentity<T extends Model>(t: { new(): T }, _modelServ: ModelService, selectColumnsId: number, ...params: any) {\r\n    return _modelServ.find(t, FindMethod.Indentity, selectColumnsId, params)       \r\n  }\r\n\r\n  async save(_modelServ: ModelService) {\r\n      await _modelServ.save(this)\r\n  } \r\n\r\n  delete() {\r\n      switch(this._action) {\r\n          case Action.Insert:\r\n              if(this._deleteTrigger) {\r\n                this._deleteTrigger(this)\r\n              }\r\n      \r\n              this._action = Action.Splice\r\n              break\r\n          case Action.Update:\r\n              if(this._deleteTrigger) {\r\n                this._deleteTrigger(this)\r\n              }\r\n              \r\n              for(let detailKey in this._detail) {\r\n                let detail = this._detail.get(detailKey)\r\n\r\n                for(let model of detail) {\r\n                  model.delete()\r\n                }\r\n\r\n              }\r\n\r\n              this._action = Action.Delete\r\n\r\n              break\r\n          default:\r\n              throw \"¡El objeto no se puede eliminar!\"\r\n      }\r\n  }\r\n\r\n  hasChanges() {\r\n\r\n      if (this._action == Action.Insert || this._action == Action.Delete) {\r\n          return true\r\n      }\r\n\r\n      for (var i in this) {\r\n        if (i.substring(0, 1) != \"_\") {\r\n\r\n          let new_i: string = i\r\n\r\n          if(new_i.substring(0, 1) == \"$\") {\r\n              new_i = new_i.substr(1)\r\n          }\r\n          \r\n          if (this[new_i] != this._previousModel[new_i]) {\r\n              return true\r\n          }\r\n        }\r\n      }\r\n\r\n      // FREE MODEL\r\n      if(this._freeModel) {\r\n        let hasChanges = this._freeModel.hasChanges();\r\n\r\n        if(hasChanges) {\r\n          return true;\r\n        }\r\n      }\r\n\r\n      for (var detailKey in this._detail) {\r\n          for (var m in this._detail[detailKey]) {\r\n\r\n              let hasChanges = this._detail.get(detailKey)[m].hasChanges()\r\n\r\n              if (hasChanges) {\r\n                  return true\r\n              }\r\n\r\n          }\r\n      }\r\n      \r\n      return false\r\n  }\r\n\r\n  addTrigger(trigger: Trigger) {\r\n    this._triggers.push(trigger);\r\n  }\r\n\r\n  public static spliceUnused(model: Model) {\r\n\r\n    if(model == null) {\r\n      return;\r\n    }\r\n\r\n    for (var detailKey in model._detail) {\r\n    \r\n      let modelList = <Model[]> model._detail[detailKey]\r\n      \r\n      for (var i = modelList.length - 1; i >= 0; i--) {\r\n\r\n        this.spliceUnused(modelList[i])\r\n\r\n        if(modelList[i]._action == Action.Splice) {\r\n          modelList.splice(i, 1)\r\n        }\r\n      }\r\n    }\r\n\r\n    this.spliceUnused(model._freeModel);\r\n  }\r\n\r\n  public static spliceUnusedList(modelList: ModelList<Model>) {\r\n\r\n    for (var i = modelList.length - 1; i >= 0; i--) {\r\n\r\n      this.spliceUnused(modelList[i])\r\n\r\n      if(modelList[i]._action == Action.Splice) {\r\n        modelList.splice(i, 1)\r\n      }\r\n    }\r\n  }\r\n\r\n\r\n  public static getModelLite(model: Model) {\r\n\r\n    if(model == null) {\r\n      return null;\r\n    }\r\n\r\n    Model.spliceUnused(model)\r\n\r\n    let modelLite: any = {}\r\n\r\n    modelLite._action = model._action\r\n    modelLite._tableName = model._tableName\r\n    modelLite._freeModel = this.getModelLite(model._freeModel);\r\n    modelLite._triggers = model._triggers;\r\n\r\n    if(model._options.copyDataAdd) {\r\n      modelLite._dataAdd = model._dataAdd;\r\n    }\r\n\r\n    switch(model._action) {\r\n      case Action.Insert:\r\n\r\n        // Copiamos solo las propiedades no heredadas\r\n        for(var i in model) {\r\n          if(i.substring(0, 1) != \"_\") {\r\n\r\n            let new_i = i\r\n\r\n            if(new_i.substring(0, 1) == \"$\") {\r\n              new_i = new_i.substr(1)\r\n            }\r\n\r\n            modelLite[new_i] = model[i]\r\n          }\r\n        }\r\n\r\n        break\r\n      case Action.Update:\r\n\r\n        modelLite._selectedProperties = []\r\n        modelLite._modifiedProperties = []\r\n\r\n        // Recorremos las propiedades no heredadas y si son diferentes las asignamos\r\n        for(var i in model) {\r\n          if(i.substring(0, 1) != \"_\") {\r\n\r\n            let new_i = i\r\n\r\n            if(new_i.substring(0, 1) == \"$\") {\r\n              new_i = new_i.substr(1)\r\n            }\r\n\r\n            if (Util.serialize(model[new_i]) != Util.serialize(model._previousModel[new_i])) {\r\n\r\n              modelLite[new_i] = model[new_i]\r\n\r\n              // Si hay cambios agragamos a las propiedades seleccionadas y a las modificadas para una mejor visualizacion\r\n              \r\n              modelLite._selectedProperties.push(Util.toCsPropertyName(new_i))\r\n              modelLite._modifiedProperties.push(Util.toCsPropertyName(new_i))\r\n            }\r\n          }\r\n        }\r\n\r\n        for (var i in model._primaryKey) {\r\n          modelLite[model._primaryKey[i]] = model[model._primaryKey[i]]\r\n          modelLite._selectedProperties.push(Util.toCsPropertyName(model._primaryKey[i]))\r\n        }\r\n\r\n        for (var i in model._identity) {\r\n          modelLite[model._identity[i]] = model[model._identity[i]]\r\n          modelLite._selectedProperties.push(Util.toCsPropertyName(model._identity[i]))\r\n        }\r\n        \r\n        break\r\n      case Action.Delete:\r\n        modelLite._selectedProperties = []\r\n        \r\n        // Recorremos las propiedades que forman parte de la llave primaria y se asignan a las propiedades seleccionadas\r\n        \r\n        for (var i in model._primaryKey) {\r\n          modelLite[model._primaryKey[i]] = model[model._primaryKey[i]]\r\n          modelLite._selectedProperties.push(Util.toCsPropertyName(model._primaryKey[i]))\r\n        }\r\n\r\n        for (var i in model._identity) {\r\n          modelLite[model._identity[i]] = model[model._identity[i]]\r\n          modelLite._selectedProperties.push(Util.toCsPropertyName(model._identity[i]))\r\n        }\r\n        break\r\n    }\r\n\r\n    modelLite._detail = {}\r\n\r\n    for (var i in model._detail) {\r\n      let detail = model._detail[i]\r\n      modelLite._detail[i] = []\r\n      for (var m in detail) {\r\n        modelLite._detail[i].push(this.getModelLite(model._detail[i][m]))\r\n      }\r\n    }\r\n\r\n    return modelLite\r\n  }\r\n\r\n}\r\n","export enum ExceptionType {\r\n    Error,\r\n    Warning,\r\n    Info,\r\n    Success\r\n}","export enum ActionSharedService {\r\n    Relogin\r\n}","import { HttpErrorResponse } from '@angular/common/http'\r\nimport { ExceptionType } from '../enums/exception-type'\r\nimport { Error as PageError } from './error'\r\nimport { ActivatedRoute } from '@angular/router'\r\nimport { SharedService } from '../services/shared.service'\r\nimport { ActionSharedService } from '../enums/action-shared-service'\r\n\r\n\r\ndeclare var toastr: any\r\n\r\nexport class PageForm {\r\n\r\n  states: any\r\n\r\n  protected constructor(\r\n    public _sharedService: SharedService\r\n  ) {\r\n    this.states = {}\r\n\r\n    this.states.loading = true;\r\n\r\n    if (toastr != undefined) {\r\n      toastr.options = {\r\n        \"closeButton\": false,\r\n        \"debug\": false,\r\n        \"newestOnTop\": false,\r\n        \"progressBar\": false,\r\n        \"positionClass\": \"toast-top-right\",\r\n        \"preventDuplicates\": false,\r\n        \"onclick\": null,\r\n        \"showDuration\": \"300\",\r\n        \"hideDuration\": \"1000\",\r\n        \"timeOut\": \"5000\",\r\n        \"extendedTimeOut\": \"1000\",\r\n        \"showEasing\": \"swing\",\r\n        \"hideEasing\": \"linear\",\r\n        \"showMethod\": \"fadeIn\",\r\n        \"hideMethod\": \"fadeOut\"\r\n      }\r\n    }\r\n  }\r\n\r\n  private showToastr(message: String, exceptionType: ExceptionType) {\r\n\r\n    let toastrType: string\r\n\r\n    switch (exceptionType) {\r\n      case ExceptionType.Error:\r\n        toastrType = \"error\"\r\n        console.error(message)\r\n        break\r\n      case ExceptionType.Warning:\r\n        toastrType = \"warning\"\r\n        console.warn(message)\r\n        break\r\n      case ExceptionType.Info:\r\n        toastrType = \"info\"\r\n        console.info(message)\r\n        break\r\n      case ExceptionType.Success:\r\n        toastrType = \"success\"\r\n        console.log(message)\r\n        break\r\n    }\r\n\r\n    toastr[toastrType](message)\r\n  }\r\n\r\n  saveConnectionParams(route: ActivatedRoute) {\r\n\r\n    let user = route.snapshot.queryParams[\"user\"];\r\n    let password = route.snapshot.queryParams[\"password\"];\r\n    let strConn = route.snapshot.queryParams[\"strConn\"];\r\n\r\n    if (user == undefined) {\r\n      throw new Error(\"¡No se ha definido el usuario en los parametros url!\");\r\n    }\r\n\r\n    if (password == undefined) {\r\n      throw new Error(\"¡No se ha definido la contraseña en los parametros url!\");\r\n    }\r\n\r\n\r\n    if (strConn == undefined) {\r\n      throw new Error(\"¡No se ha definido la conexión en los parametros url!\");\r\n    }\r\n\r\n    sessionStorage.setItem(\"type\", \"2\");\r\n    sessionStorage.setItem(\"user\", user);\r\n    sessionStorage.setItem(\"password\", password);\r\n    sessionStorage.setItem(\"strConn\", strConn);\r\n\r\n  }\r\n\r\n  showErrorToastr(error: any): PageError | null {\r\n\r\n    if (toastr == undefined) {\r\n      console.error(\"¡No se ha declarado correctamente la libreria que contiene ToastrJS!\")\r\n      return null\r\n    }\r\n\r\n    let errorLite = PageForm.getError(error)\r\n\r\n    if (errorLite.globalErrorCode == 1) {\r\n      this._sharedService.emitChange(ActionSharedService.Relogin);\r\n    }\r\n\r\n    this.showToastr(errorLite.message, errorLite.exceptionType)\r\n\r\n    return errorLite\r\n  }\r\n\r\n  showInfoToastr(info: any) {\r\n    this.showToastr(info, ExceptionType.Info);\r\n  }\r\n\r\n  showWarningToastr(warning: any) {\r\n    this.showToastr(warning, ExceptionType.Warning);\r\n  }\r\n\r\n  showSuccessToaster(message: string) {\r\n\r\n    return this.showToastr(message, ExceptionType.Success)\r\n  }\r\n\r\n  async globalExportExcel(Excel: any, saveAs: any, sheetName: string, data: any[], columns: Column[], options?: ExportOptions) {\r\n\r\n    const wb = new Excel.Workbook();\r\n    const ws = wb.addWorksheet(sheetName);\r\n\r\n    ws.columns = columns;\r\n\r\n    // AGREGAMOS FORMATO DE MONEDA A COLUMNAS\r\n    if (options?.currencyColumnsKeys) {\r\n      for (let currencyColumnKey of options.currencyColumnsKeys) {\r\n\r\n        let currencyCol = ws.getColumn(currencyColumnKey);\r\n\r\n        const numFmtStr = '_(\"$\"* #,##0.00_);_(\"$\"* (#,##0.00);_(\"$\"* \"-\"??_);_(@_)' //'$#,##0.00;[Red]-$#,##0.00';\r\n\r\n        currencyCol.numFmt = numFmtStr;\r\n\r\n      }\r\n    }\r\n\r\n    // AGREGAMOS FORMATO DE FECHA A FILAS\r\n    for (let row of data) {\r\n\r\n      if (options?.dateColumnsKeys) {\r\n        let dateColumnsKeys = options.dateColumnsKeys\r\n\r\n        for (let dateColumnKey of dateColumnsKeys) {\r\n\r\n          let newValue: Date | null;\r\n\r\n          if (row[dateColumnKey] == null) {\r\n            newValue = null\r\n          } else if (typeof row[dateColumnKey] == \"string\") {\r\n            newValue = new Date(row[dateColumnKey])\r\n          } else if (row[dateColumnKey] instanceof Date) {\r\n            newValue = row[dateColumnKey]\r\n          } else {\r\n            throw \"¡No se puede convertir el valor a una fecha!\"\r\n          }\r\n\r\n          if (newValue != null) {\r\n            newValue = new Date(Date.UTC(newValue.getFullYear(), newValue.getMonth(), newValue.getDate(), newValue.getHours(), newValue.getMinutes(), newValue.getSeconds()))\r\n          }\r\n\r\n          row[dateColumnKey] = newValue\r\n        }\r\n      }\r\n      ws.addRow(row)\r\n    }\r\n    // Filters\r\n    \r\n    if(!options.hideFilters) {\r\n      ws.autoFilter = {\r\n        from: {\r\n          row: 1,\r\n          column: 1\r\n        },\r\n        to: {\r\n          row: 1,\r\n          column: columns.length\r\n        }\r\n      }\r\n    }\r\n\r\n    let primaryColor = window.getComputedStyle(document.documentElement).getPropertyValue('--softwelop-primary').trim();\r\n    primaryColor = \"FF\" + primaryColor.substr(1)\r\n\r\n    // Formato de encabezados\r\n    {\r\n      for (var i in columns) {\r\n\r\n        let c = parseInt(i) + 1\r\n\r\n        let cell = ws.getCell(1, c)\r\n\r\n        cell.fill = {\r\n          type: \"pattern\",\r\n          pattern: \"solid\",\r\n          fgColor: { argb: primaryColor }\r\n        };\r\n\r\n        cell.font = {\r\n          color: {\r\n            argb: \"FFFFFFFF\"\r\n          },\r\n          bold: true,\r\n        };\r\n\r\n        cell.alignment = {\r\n          vertical: 'middle',\r\n          horizontal: 'center'\r\n        }\r\n\r\n        cell.border = {\r\n          bottom: {\r\n            style: 'medium',\r\n            color: { argb: 'FF000000' }\r\n          }\r\n        }\r\n      }\r\n\r\n      let row = ws.getRow(1)\r\n\r\n      row.height = 19\r\n    }\r\n\r\n    // Filas intercaladas\r\n    {\r\n\r\n      for (let r = 2; r <= ws.rowCount; r++) {\r\n\r\n        let row = ws.getRow(r)\r\n\r\n        // Columnas coloreadas\r\n\r\n        if (options?.coloredColumns) {\r\n          let coloredColumns = options.coloredColumns\r\n\r\n          for (let coloredColumn of coloredColumns) {\r\n            let cell = row.getCell(coloredColumn.key)\r\n\r\n            cell.font = {\r\n              bold: coloredColumn.isBold,\r\n              color: {\r\n                argb: \"FF\" + data[r - 2][coloredColumn.colorColumnKey].substr(1)\r\n              }\r\n            }\r\n\r\n           \r\n          }\r\n        }\r\n\r\n        // Recorremos todas las columnas de la fila\r\n\r\n        for (let c = 1; c <= row.cellCount; c++) {\r\n\r\n          let cell = row.getCell(c)\r\n\r\n          cell.border = {\r\n            bottom: {\r\n              style: 'thin',\r\n              color: { argb: 'FF808080' }\r\n            },\r\n          }\r\n\r\n          if (r % 2 == 1) {\r\n            cell.fill = {\r\n              type: \"pattern\",\r\n              pattern: \"solid\",\r\n              fgColor: { argb: 'FFF2F2F2' }\r\n            };\r\n          }\r\n        }\r\n\r\n        if(options?.filledColumns){\r\n          let filledColumns = options.filledColumns\r\n          for (let fillColumn of filledColumns) {\r\n            let cell = row.getCell(fillColumn.key)\r\n\r\n            cell.fill = {\r\n              type: 'pattern', \r\n              pattern: 'solid', \r\n              fgColor: { \r\n                argb: \"FF\" + data[r - 2][fillColumn.colorColumnKey].substr(1)\r\n               }\r\n            }\r\n          }\r\n        }\r\n\r\n  \r\n        if(options?.borderColumns){\r\n          let borderColumns = options.borderColumns\r\n          for (let borderColumn of borderColumns ){           \r\n            if(borderColumn.allBorder){\r\n              for (let c = 1; c <= row.cellCount; c++) {\r\n                let cell = row.getCell(c)\r\n                cell.border = {\r\n                  top: { style: 'medium', color: { argb: 'FF000000' } },\r\n                  left: { style: 'medium', color: { argb: 'FF000000' } },\r\n                  bottom: { style: 'medium', color: { argb: 'FF000000' } },\r\n                  right: { style: 'medium', color: { argb: 'FF000000' } }\r\n                }\r\n              }           \r\n            }\r\n          }\r\n          \r\n        }\r\n\r\n      }\r\n    }\r\n\r\n    const buffer = await wb.xlsx.writeBuffer();\r\n    const fileType = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\r\n\r\n    const blob = new Blob([buffer], { type: fileType });\r\n\r\n    let d = new Date()\r\n    let dn = d.getFullYear() * 10000\r\n\r\n    dn += (d.getMonth() + 1) * 100\r\n    dn += d.getDate()\r\n\r\n    let ds = \"[\" + dn.toString() + \" \" + (d.getHours() * 100 + d.getMinutes()).toString() + \"]\"\r\n\r\n    saveAs(blob, sheetName + \" \" + ds + \".xlsx\");\r\n\r\n  }\r\n\r\n  async globalExportExcelRol(Excel: any, saveAs: any, sheetName: string, data: any[], columns: Column[], options?: ExportOptions, asistenciasDict?: any) {\r\n\r\n    const wb = new Excel.Workbook();\r\n    const ws = wb.addWorksheet(sheetName);\r\n\r\n    ws.columns = columns;\r\n\r\n // Combina las celdas de la columna 3 (C1, C2, C3)\r\n    const numberOfRows = data.length;\r\n    const mergeBlockSize = 3;\r\n    \r\n    function numberToLetter(num: number): string {\r\n      if (num < 0) {\r\n        throw new Error(\"El número no puede ser negativo\");\r\n      }\r\n    \r\n      let result = '';\r\n      while (num >= 0) {\r\n        const remainder = num % 26;\r\n        result = String.fromCharCode(65 + remainder) + result; \r\n        num = Math.floor(num / 26) - 1; \r\n        if (num < 0) break;\r\n      }\r\n    \r\n      return result;\r\n    }\r\n    \r\n    for (let i = 0; i < numberOfRows; i++) {\r\n    \r\n      const startRow = i * mergeBlockSize + 2;  \r\n      const endRow = startRow + mergeBlockSize - 1;  \r\n      \r\n      columns.forEach((column, index) => {\r\n\r\n        let columnSheet = numberToLetter(index)\r\n       \r\n        if (column.combine) {           \r\n          const startCell = `${columnSheet}${startRow}`;\r\n          let endCell = `${columnSheet}${endRow}`; \r\n          if(!data[i].noCombine){\r\n            ws.mergeCells(`${startCell}:${endCell}`);  \r\n          }     \r\n          \r\n          const cell = ws.getCell(startCell);\r\n\r\n          if(data[i].noCombine){\r\n            cell.fill = {\r\n              type: 'pattern', \r\n              pattern: 'solid', \r\n              fgColor: { \r\n                argb: \"FF\" + '#A9A9A9'.substr(1)\r\n                }\r\n            }\r\n          }\r\n          cell.value = data[i][column.key]; \r\n          cell.alignment = { vertical: 'middle', horizontal: 'center' };\r\n        } else{\r\n          for (let index = 0; index < mergeBlockSize; index++) {\r\n            const startCell = `${columnSheet}${startRow + index}`;\r\n            const endCell = `${columnSheet}${endRow}`;   \r\n            const cell = ws.getCell(startCell);        \r\n            if(index == 0){\r\n             \r\n              cell.value = asistenciasDict.dict[data[i][column.key][index + 1]]?.abreviacion; \r\n              if(!data[i].noCombine){\r\n                cell.fill = {\r\n                  type: 'pattern', \r\n                  pattern: 'solid', \r\n                  fgColor: { \r\n                    argb: \"FF\" + asistenciasDict.dict[data[i][column.key][index + 1]]?.color.substr(1)\r\n                    }\r\n                }\r\n              } else{\r\n                cell.fill = {\r\n                  type: 'pattern', \r\n                  pattern: 'solid', \r\n                  fgColor: { \r\n                    argb: \"FF\" + '#A9A9A9'.substr(1)\r\n                    }\r\n                }\r\n              }    \r\n            }if(index == 1){\r\n              cell.value = data[i][column.key][index + 1]\r\n              const numFmtStr = '_(\"$\"* #,##0.00_);_(\"$\"* (#,##0.00);_(\"$\"* \"-\"??_);_(@_)'\r\n              cell.numFmt = numFmtStr;\r\n            }\r\n            cell.alignment = { vertical: 'middle', horizontal: 'center' };\r\n          }\r\n         \r\n        } \r\n      });\r\n    }\r\n\r\n\r\n    // AGREGAMOS FORMATO DE MONEDA A COLUMNAS\r\n    if(options?.currencyColumnsKeys) {\r\n      for (let currencyColumnKey of options.currencyColumnsKeys) {\r\n\r\n        let currencyCol = ws.getColumn(currencyColumnKey);\r\n\r\n        const numFmtStr = '_(\"$\"* #,##0.00_);_(\"$\"* (#,##0.00);_(\"$\"* \"-\"??_);_(@_)' //'$#,##0.00;[Red]-$#,##0.00';\r\n\r\n        currencyCol.numFmt = numFmtStr;\r\n    \r\n      }\r\n    }\r\n\r\n    // AGREGAMOS FORMATO DE FECHA A FILAS\r\n    for (let row of data) {\r\n\r\n      if (options?.dateColumnsKeys) {\r\n        let dateColumnsKeys = options.dateColumnsKeys\r\n\r\n        for (let dateColumnKey of dateColumnsKeys) {\r\n\r\n          let newValue: Date | null;\r\n\r\n          if (row[dateColumnKey] == null) {\r\n            newValue = null\r\n          } else if (typeof row[dateColumnKey] == \"string\") {\r\n            newValue = new Date(row[dateColumnKey])\r\n          } else if (row[dateColumnKey] instanceof Date) {\r\n            newValue = row[dateColumnKey]\r\n          } else {\r\n            throw \"¡No se puede convertir el valor a una fecha!\"\r\n          }\r\n\r\n          row[dateColumnKey] = newValue\r\n\r\n        }\r\n      }\r\n      // ws.addRow(row)\r\n    }\r\n    // Filters\r\n    \r\n    if(!options.hideFilters) {\r\n      ws.autoFilter = {\r\n        from: {\r\n          row: 1,\r\n          column: 1\r\n        },\r\n        to: {\r\n          row: 1,\r\n          column: columns.length\r\n        }\r\n      }\r\n    }\r\n\r\n    let primaryColor = window.getComputedStyle(document.documentElement).getPropertyValue('--softwelop-primary').trim();\r\n    primaryColor = \"FF\" + primaryColor.substr(1)\r\n\r\n    // Formato de encabezados\r\n    {\r\n      for (var i in columns) {\r\n\r\n        let c = parseInt(i) + 1\r\n\r\n        let cell = ws.getCell(1, c)\r\n\r\n        cell.fill = {\r\n          type: \"pattern\",\r\n          pattern: \"solid\",\r\n          fgColor: { argb: primaryColor }\r\n        };\r\n\r\n        cell.font = {\r\n          color: {\r\n            argb: \"FFFFFFFF\"\r\n          },\r\n          bold: true,\r\n        };\r\n\r\n        cell.alignment = {\r\n          vertical: 'middle',\r\n          horizontal: 'center'\r\n        }\r\n\r\n        cell.border = {\r\n          bottom: {\r\n            style: 'medium',\r\n            color: { argb: 'FF000000' }\r\n          }\r\n        }\r\n      }\r\n\r\n      let row = ws.getRow(1)\r\n\r\n      row.height = 19\r\n    }\r\n\r\n    // Filas intercaladas\r\n    // {\r\n\r\n    //   for (let r = 2; r <= ws.rowCount; r++) {\r\n\r\n    //     let row = ws.getRow(r)\r\n\r\n    //     // Columnas coloreadas\r\n\r\n    //     if (options?.coloredColumns) {\r\n    //       let coloredColumns = options.coloredColumns\r\n\r\n    //       for (let coloredColumn of coloredColumns) {\r\n    //         let cell = row.getCell(coloredColumn.key)\r\n\r\n    //         cell.font = {\r\n    //           bold: coloredColumn.isBold,\r\n    //           color: {\r\n    //             argb: \"FF\" + data[r - 2][coloredColumn.colorColumnKey].substr(1)\r\n    //           }\r\n    //         }\r\n\r\n           \r\n    //       }\r\n    //     }\r\n\r\n    //     // Recorremos todas las columnas de la fila\r\n\r\n    //     for (let c = 1; c <= row.cellCount; c++) {\r\n\r\n    //       let cell = row.getCell(c)\r\n\r\n    //       cell.border = {\r\n    //         bottom: {\r\n    //           style: 'thin',\r\n    //           color: { argb: 'FF808080' }\r\n    //         },\r\n    //       }\r\n\r\n    //       if (r % 2 == 1) {\r\n    //         cell.fill = {\r\n    //           type: \"pattern\",\r\n    //           pattern: \"solid\",\r\n    //           fgColor: { argb: 'FFF2F2F2' }\r\n    //         };\r\n    //       }\r\n    //     }\r\n\r\n    //     if(options?.filledColumns){\r\n    //       let filledColumns = options.filledColumns\r\n    //       for (let fillColumn of filledColumns) {\r\n    //         let cell = row.getCell(fillColumn.key)\r\n\r\n    //         cell.fill = {\r\n    //           type: 'pattern', \r\n    //           pattern: 'solid', \r\n    //           fgColor: { \r\n    //             argb: \"FF\" + data[r - 2][fillColumn.colorColumnKey].substr(1)\r\n    //            }\r\n    //         }\r\n    //       }\r\n    //     }\r\n\r\n  \r\n    //   \r\n\r\n    //   }\r\n    // }\r\n\r\n    for (let r = 2; r <= ws.rowCount; r++) {\r\n      let row = ws.getRow(r)\r\n      if(options?.borderColumns){\r\n        let borderColumns = options.borderColumns\r\n        for (let borderColumn of borderColumns ){           \r\n          if(borderColumn.allBorder){\r\n            for (let c = 1; c <= row.cellCount; c++) {\r\n              let cell = row.getCell(c)\r\n              cell.border = {\r\n                top: { style: 'medium', color: { argb: 'FF000000' } },\r\n                left: { style: 'medium', color: { argb: 'FF000000' } },\r\n                bottom: { style: 'medium', color: { argb: 'FF000000' } },\r\n                right: { style: 'medium', color: { argb: 'FF000000' } }\r\n              }\r\n            }           \r\n          }\r\n        }\r\n              \r\n      }\r\n    }\r\n    \r\n\r\n    const buffer = await wb.xlsx.writeBuffer();\r\n    const fileType = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\r\n\r\n    const blob = new Blob([buffer], { type: fileType });\r\n\r\n    let d = new Date()\r\n    let dn = d.getFullYear() * 10000\r\n\r\n    dn += (d.getMonth() + 1) * 100\r\n    dn += d.getDate()\r\n\r\n    let ds = \"[\" + dn.toString() + \" \" + (d.getHours() * 100 + d.getMinutes()).toString() + \"]\"\r\n\r\n    saveAs(blob, sheetName + \" \" + ds + \".xlsx\");\r\n\r\n  }\r\n\r\n  static getError(error: any): PageError {\r\n    let errorLite = new PageError()\r\n\r\n    if (error instanceof HttpErrorResponse) {\r\n      if (error.error instanceof ProgressEvent) {\r\n        errorLite = { exceptionType: ExceptionType.Error, message: error.message, trace: [] }\r\n      } else {\r\n        errorLite = error.error\r\n      }\r\n    } else {\r\n      errorLite = { exceptionType: ExceptionType.Error, message: error, trace: [] }\r\n    }\r\n\r\n    return errorLite\r\n  }\r\n\r\n}\r\n\r\n\r\nexport interface Column {\r\n  header: string,\r\n  key: string,\r\n  width?: number,\r\n  combine?:boolean,\r\n  letter?:string,\r\n}\r\n\r\nexport interface ExportOptions {\r\n  coloredColumns?: {\r\n    key: string,\r\n    colorColumnKey: string,\r\n    isBold: boolean\r\n  }[],\r\n  filledColumns?: {\r\n    key: string,\r\n    colorColumnKey: string\r\n  }[],\r\n  dateColumnsKeys?: string[],\r\n  currencyColumnsKeys?: string[],\r\n  borderColumns?:{\r\n    allBorder: boolean\r\n  }[],\r\n  hideFilters?: boolean\r\n}\r\n","export class Param {\r\n    name: string\r\n    value: string\r\n}","import { Action } from '../enums/action'\r\nimport { TriggerType } from '../enums/trigger-type'\r\n\r\nexport class Trigger {\r\n  type: TriggerType\r\n  actions: Action[]\r\n  model: string\r\n  function: string\r\n\r\n  constructor(type: TriggerType, actions: Action[], model: string, fnction: string){\r\n    this.type = type\r\n    this.actions = actions;\r\n    this.model = model;\r\n    this.function = fnction;\r\n  }\r\n  \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ExtendedHttpClient } from '../classes/extendend-http-client';\r\nimport { HttpParams, HttpHeaders } from '@angular/common/http';\r\nimport { Param } from '../classes/param';\r\nimport { Model } from '../classes/model';\r\nimport { Geometry } from '../types/geometry.type';\r\nimport { Util } from '../functions/util';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ControllerService {\r\n\r\n  protected apiConfig: any\r\n  protected controller: string\r\n\r\n  constructor(protected http: ExtendedHttpClient) { \r\n  }\r\n\r\n  protected getConfig(){\r\n    return new Promise((resolve, reject) => {\r\n      if(this.apiConfig == undefined) {\r\n        this.http.get(\"config.json\").subscribe(result => {\r\n          this.apiConfig = result\r\n          resolve(this.apiConfig)\r\n        })\r\n      } else {\r\n        resolve(this.apiConfig)\r\n      }\r\n    })\r\n  }\r\n\r\n  private getHttpHeaders() : HttpHeaders {\r\n    let httpHeaders = new HttpHeaders();\r\n\r\n    let type = sessionStorage.getItem(\"type\");\r\n\r\n    if(type == null) {\r\n      type = \"1\";\r\n    }\r\n\r\n    httpHeaders = httpHeaders.append('Type', type)\r\n\r\n    switch(type) {\r\n      case \"1\":\r\n        {\r\n\r\n          let token = sessionStorage.getItem('token')\r\n\r\n          if(token != null){\r\n            httpHeaders = httpHeaders.append('Token', token)\r\n          }\r\n\r\n        }\r\n        break;\r\n      case \"2\":\r\n        {\r\n\r\n          let user = sessionStorage.getItem('user');\r\n          let password = sessionStorage.getItem('password');\r\n          let strConn = sessionStorage.getItem('strConn')\r\n\r\n          httpHeaders = httpHeaders.append('User', user)\r\n          httpHeaders = httpHeaders.append('Password', password)\r\n          httpHeaders = httpHeaders.append('StrConn', strConn)\r\n\r\n        }\r\n        break;\r\n    }\r\n\r\n    return httpHeaders;\r\n  }\r\n\r\n  protected async getController(fnction: string, params: Param[] = null){\r\n\r\n    let httpParams = new HttpParams()\r\n    let httpHeaders = this.getHttpHeaders();\r\n    \r\n    if(params){\r\n      for(var i in params){\r\n        httpParams = httpParams.append(params[i].name, params[i].value)\r\n      }\r\n    }\r\n\r\n    let apiRoute = (<any> await this.getConfig()).apiUrl\r\n\r\n    let resp = await this.http.get(`${apiRoute}${this.controller}/${fnction}`, { params: httpParams, headers: httpHeaders }).toPromise()\r\n\r\n    return this.toTsObject(resp)\r\n  }\r\n\r\n  protected async putController(fnction: string, params: Param[] = null){\r\n\r\n    let httpParams = new HttpParams()\r\n    let httpHeaders = this.getHttpHeaders();\r\n    \r\n    if(params){\r\n      for(var i in params){\r\n        httpParams = httpParams.append(params[i].name, params[i].value)\r\n      }\r\n    }\r\n\r\n    let apiRoute = (<any> await this.getConfig()).apiUrl\r\n\r\n    let resp = await this.http.put(`${apiRoute}${this.controller}/${fnction}`, null, { params: httpParams, headers: httpHeaders }).toPromise()\r\n    return this.toTsObject(resp)\r\n  }\r\n\r\n  protected async postController(fnction: string, body: any, params: Param[] = null){\r\n\r\n    let httpParams = new HttpParams()\r\n    let httpHeaders = this.getHttpHeaders();\r\n    \r\n    httpHeaders = httpHeaders.append(\"Content-Type\", \"application/json\")\r\n\r\n    if(params){\r\n      for(var i in params){\r\n        httpParams = httpParams.append(params[i].name, params[i].value)\r\n      }\r\n    }\r\n\r\n    let apiRoute = (<any> await this.getConfig()).apiUrl\r\n\r\n    let bodyS: string = this.serializeBody(body).toString()\r\n\r\n    let resp = await this.http.post(`${apiRoute}${this.controller}/${fnction}`, bodyS, { params: httpParams, headers: httpHeaders }).toPromise()\r\n    \r\n    return this.toTsObject(resp)\r\n  }\r\n  \r\n  private toTsObject(source) {\r\n\r\n    let clone\r\n\t  if (Object.prototype.toString.call(source) === '[object Array]') {\r\n\t\t  clone = [];\r\n\t\t  for (var i=0; i<source.length; i++) {\r\n\t\t\t  clone[i] = this.toTsObject(source[i]);\r\n\t\t  }\r\n\t\t  return clone;\r\n\t  } else if (typeof(source)==\"object\") {\r\n\r\n      if(source == null) {\r\n        return null\r\n      }\r\n\r\n\t\t  clone = {};\r\n\t\t  for (var prop in source) {\r\n\t\t\t  if (source.hasOwnProperty(prop)) {\r\n\t\t\t\t  clone[Util.toTsPropertyName(prop)] = this.toTsObject(source[prop]);\r\n\t\t\t  }\r\n\t\t  }\r\n\t\t  return clone;\r\n\t  } else {\r\n\t\t  return source;\r\n\t  }\r\n  }\r\n\r\n  private serializeBody(body: any) {\r\n    // If no body is present, no need to serialize it.\r\n    if (body === null) {\r\n        return null;\r\n    }\r\n    // Check whether the body is already in a serialized form. If so,\r\n    // it can just be returned directly.\r\n    if (this.isArrayBuffer(body) || this.isBlob(body) || this.isFormData(body) ||\r\n        typeof body === 'string') {\r\n        return body;\r\n    }\r\n    // Check whether the body is an instance of HttpUrlEncodedParams.\r\n    if (body instanceof HttpParams) {\r\n        return body.toString();\r\n    }\r\n    // Check whether the body is an object or array, and serialize with JSON if so.\r\n    if (typeof body === 'object' || typeof body === 'boolean' || Array.isArray(body)) {\r\n\r\n      return Util.serialize(body)\r\n\r\n    }\r\n    // Fall back on toString() for everything else.\r\n    return body.toString();\r\n  }\r\n\r\n  isArrayBuffer(value) {\r\n    return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\r\n  }\r\n\r\n  isBlob(value) {\r\n    return typeof Blob !== 'undefined' && value instanceof Blob;\r\n  }\r\n\r\n  isFormData(value) {\r\n    return typeof FormData !== 'undefined' && value instanceof FormData;\r\n  }\r\n\r\n  /*private fromTsObject(source) {\r\n\r\n    let clone\r\n\t  if (Object.prototype.toString.call(source) === '[object Array]') {\r\n\t\t  clone = [];\r\n\t\t  for (var i=0; i<source.length; i++) {\r\n\t\t\t  clone[i] = this.fromTsObject(source[i]);\r\n\t\t  }\r\n\t\t  return clone;\r\n\t  } else if (typeof(source)==\"object\") {\r\n\r\n      if(source == null) {\r\n        return null\r\n      }\r\n\r\n      if(source instanceof Date) {\r\n        return source\r\n      }\r\n\r\n\t\t  clone = {};\r\n\t\t  for (var prop in source) {\r\n\t\t\t  if (source.hasOwnProperty(prop)) {\r\n\t\t\t\tclone[Util.fromTsPropertyName(prop)] = this.fromTsObject(source[prop]);\r\n\t\t\t  }\r\n\t\t  }\r\n\t\t  return clone;\r\n\t  } else {\r\n\t\t  return source;\r\n\t  }\r\n  } */\r\n}\r\n","export enum TriggerType {\r\n    Before,\r\n    After\r\n}","export class JsonConvert {\r\n    static serialize(obj: any): string {\r\n      let cache = [];\r\n      let result = JSON.stringify(obj, (key, value): string =>  {\r\n          if (typeof value === 'object' && value !== null) {\r\n              if (cache.indexOf(value) !== -1) {\r\n                  // Duplicate reference found\r\n                  try {\r\n                      // If this value does not reference a parent it can be deduped\r\n                      return JSON.parse(JSON.stringify(value));\r\n                  } catch (error) {\r\n                      // discard key if value cannot be deduped\r\n                      return;\r\n                  }\r\n              }\r\n              // Store value in our collection\r\n              cache.push(value);\r\n          }\r\n          return value;\r\n      });\r\n      cache = null;\r\n      return result;\r\n    }\r\n  }\r\n  ","import { Injectable } from '@angular/core';\r\nimport { ExtendedHttpClient } from '../classes/extendend-http-client';\r\nimport { ControllerService } from '../controller-service/controller.service';\r\nimport { Param } from '../classes/param';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ConfigurationService extends ControllerService {\r\n\r\n  constructor(protected http: ExtendedHttpClient) {\r\n    //super(http)\r\n    super(http)\r\n    this.controller = \"api/configuration\"\r\n  }\r\n\r\n  async getConfiguration(nodo: string | string[]){\r\n\r\n    let fnction = ''\r\n    let value = ''\r\n\r\n    if(nodo == null) {\r\n      nodo = ''\r\n    } else if(nodo == undefined) {\r\n      nodo = ''\r\n    }\r\n\r\n    if (Object.prototype.toString.call(nodo) === '[object Array]') {\r\n      value = JSON.stringify(nodo)\r\n      fnction = 'get-configuration-node-list'\r\n    } else {\r\n      value = <string> nodo\r\n      fnction = 'get-configuration-node'\r\n    }\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n    cParms.push({ name: 'nodo', value: value })\r\n  \r\n    return await this.getController(fnction, cParms )\r\n  }\r\n\r\n  async getJsConfiguration(nodo: string){\r\n\r\n    let apiConfig = await this.getConfig()\r\n\r\n    return apiConfig[nodo]\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ControllerService } from '../controller-service/controller.service';\r\nimport { ExtendedHttpClient } from '../classes/extendend-http-client';\r\nimport { Param } from '../classes/param';\r\n\r\nexport class Mail {\r\n\r\n  to: string[]\r\n  subject: string\r\n  body: string\r\n  isBodyHtml: boolean\r\n\r\n  constructor(){\r\n    this.to = []\r\n    this.subject = \"\"\r\n    this.body = \"\"\r\n    this.isBodyHtml = false\r\n  }\r\n}\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class EmailService extends ControllerService {\r\n\r\n  constructor(protected http: ExtendedHttpClient) { \r\n    super(http)\r\n    this.controller = \"api/email\"\r\n  } \r\n\r\n  async sendEmail(email: Mail) {\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n    cParms.push({ name: 'email', value: JSON.stringify(email) })\r\n    \r\n    return await this.putController('send-email', cParms )\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ControllerService } from '../controller-service/controller.service';\r\nimport { ExtendedHttpClient } from '../classes/extendend-http-client';\r\nimport { Geometry } from '../types/geometry.type';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class GeometryService extends ControllerService {\r\n\r\n  constructor(protected http: ExtendedHttpClient) { \r\n    super(http)\r\n    this.controller = \"api/geometry\"\r\n  } \r\n\r\n  async intersects(geometries1: Geometry[], geometries2: Geometry[]) : Promise<boolean[][]> {\r\n\r\n    let geometries = [geometries1, geometries2]\r\n\r\n    return <boolean[][]> await this.postController('intersects', geometries)\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ControllerService } from '../controller-service/controller.service';\r\nimport { ExtendedHttpClient } from '../classes/extendend-http-client';\r\nimport { Param } from '../classes/param';\r\nimport { Model } from '../classes/model';\r\nimport { Action } from '../enums/action';\r\nimport { Util } from '../functions/util';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class GeneralService extends ControllerService {\r\n\r\n  constructor(protected http: ExtendedHttpClient) {\r\n    super(http)\r\n    this.controller = \"api/general\"\r\n  }\r\n\r\n  async readCommand(model: string, fnction: string, parms: any) {\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n    cParms.push({ name: 'model', value: model })\r\n    cParms.push({ name: 'fnction', value: fnction })\r\n\r\n    return await this.postController('read-command', parms, cParms)\r\n  }\r\n\r\n  async executeCommand(model: string, fnction: string, parms: any) {\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n    cParms.push({ name: 'model', value: model })\r\n    cParms.push({ name: 'fnction', value: fnction })\r\n\r\n    await this.postController('execute-command', parms, cParms)\r\n  }\r\n\r\n  async readFunction(model: string, fnction: string, parms: any) {\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n    cParms.push({ name: 'model', value: model })\r\n    cParms.push({ name: 'fnction', value: fnction })\r\n\r\n    return await this.postController('read-function', parms, cParms)\r\n  }\r\n\r\n  async executeFunction(model: string, fnction: string, parms: any): Promise<void> {\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n    cParms.push({ name: 'model', value: model })\r\n    cParms.push({ name: 'fnction', value: fnction })\r\n\r\n    await this.postController('execute-function', parms, cParms)\r\n  }\r\n\r\n  async readCommandDataSet(model: string, fnction: string, parms: any, names: string[] = null) {\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n    cParms.push({ name: 'model', value: model })\r\n    cParms.push({ name: 'fnction', value: fnction })\r\n    cParms.push({ name: 'names', value: JSON.stringify(names) })\r\n\r\n    return await this.postController('read-command-data-set', parms, cParms)\r\n  }\r\n\r\n  async readCommandModelArray<T extends Model>(t: { new(): T }, model: string, fnction: string, parms: any) {\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n    cParms.push({ name: 'model', value: model })\r\n    cParms.push({ name: 'fnction', value: fnction })\r\n\r\n    let response = await this.postController('read-command', parms, cParms)\r\n\r\n    return Util.arrayToModelArray(t, response);\r\n  }\r\n\r\n  async readCommandModelList<T extends Model>(t: { new(): T }, model: string, fnction: string, parms: any) {\r\n\r\n    let instanceModel = new t();\r\n\r\n    let modelName = Util.tablenameToCsPropertyName(instanceModel._tableName);\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n    cParms.push({ name: 'model', value: model })\r\n    cParms.push({ name: 'fnction', value: fnction })\r\n    cParms.push({ name: 'modelName', value: modelName })\r\n\r\n    let response = await this.postController('read-command-model-list', parms, cParms)\r\n\r\n    return Util.arrayPropertiesToModelList(t, response.lista, response.propiedades);\r\n  }\r\n\r\n  async wait(milliSeconds: number) {\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n    cParms.push({ name: 'milliSeconds', value: milliSeconds.toString() })\r\n\r\n    await this.getController('wait', cParms)\r\n  }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { RoutingParameters } from '../classes/here-maps';\r\n\r\ndeclare var H: any;\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class HereMapService {\r\n\r\n  constructor() {\r\n  }\r\n\r\n  geocode(platform: any, geocodingParams: any): Promise<any> {\r\n    return new Promise<any>((resolve, reject) => {\r\n\r\n      let onResult = function (result) {\r\n\r\n        if (result.type) {\r\n          reject(result.Details)\r\n        } else {\r\n          resolve(result)\r\n        }\r\n      };\r\n\r\n      let onError = function (error) {\r\n        reject(error)\r\n      }\r\n\r\n      // Get an instance of the geocoding service:\r\n      let geocoder = platform.getGeocodingService();\r\n\r\n      geocoder.geocode(geocodingParams, onResult, onError);\r\n\r\n    })\r\n  }\r\n\r\n  /*\r\n  reverseGeocode(platform: any, reverseGeocodingParams: any): Promise<any> {\r\n    return new Promise<any>((resolve, reject) => {\r\n\r\n      let onResult = function (result) {\r\n\r\n        if (result.type) {\r\n          reject(result.Details)\r\n        } else {\r\n          resolve(result)\r\n        }\r\n      };\r\n\r\n      let onError = function (error) {\r\n        reject(error)\r\n      }\r\n\r\n      let reverseGeocoder = platform.getGeocodingService();\r\n\r\n      reverseGeocoder.reverseGeocode(reverseGeocodingParams, onResult, onError);\r\n\r\n    })\r\n  }\r\n  */\r\n\r\n  reverseGeocode(platform: any, reverseGeocodingParams: any): Promise<any> {\r\n    return new Promise<any>((resolve, reject) => {\r\n\r\n      let onResult = function (result) {\r\n\r\n        let response = {\r\n          Response: {\r\n            View: [\r\n              {\r\n                Result: result.items.map(i => {\r\n                  return {\r\n                    Location: {\r\n                      Address: {\r\n                        Label: i.address.label\r\n                      },\r\n                      _Object: i\r\n                    }\r\n                  }\r\n                })\r\n              }\r\n            ]\r\n          }\r\n        };\r\n\r\n        resolve(response);\r\n      };\r\n\r\n      let onError = function (error) {\r\n        reject(error)\r\n      }\r\n\r\n      let service = platform.getSearchService();\r\n\r\n      service.reverseGeocode({ at: reverseGeocodingParams.prox.replace(\" \", \"\") }, onResult, onError);\r\n\r\n\r\n      /*\r\n      let reverseGeocoder = platform.getGeocodingService();\r\n\r\n      reverseGeocoder.reverseGeocode(reverseGeocodingParams, onResult, onError);\r\n      */\r\n\r\n    })\r\n  }\r\n\r\n\r\n  calculateRoute(platform: any, routingParameters_: RoutingParameters): Promise<any> {\r\n    return new Promise<any>((resolve, reject) => {\r\n\r\n      let wpOpriginParts = routingParameters_['waypoint0'].replace(\"geo!\", \"\").split(\",\");\r\n      let wpDestinationParts = routingParameters_['waypoint' + (routingParameters_['_waypoints'] - 1)].replace(\"geo!\", \"\").split(\",\");\r\n      let modeParts = routingParameters_.mode.split(\";\");\r\n\r\n      const origin = { lat: wpOpriginParts[0], lng: wpOpriginParts[1] };\r\n      const destination = { lat: wpDestinationParts[0], lng: wpDestinationParts[1] };\r\n\r\n      // Create the parameters for the routing request:\r\n      const routingParameters = {\r\n        'routingMode': 'fast',\r\n        'transportMode': modeParts[1],\r\n        // The start point of the route:\r\n        'origin': `${origin.lat},${origin.lng}`,\r\n        // The end point of the route:\r\n        'destination': `${destination.lat},${destination.lng}`,\r\n        // Include the route shape in the response\r\n        'return': ['polyline', 'summary', 'actions', 'instructions', 'travelSummary'],\r\n      };\r\n\r\n      if (routingParameters_['_waypoints'] > 2) {\r\n\r\n        let wayPoints = [];\r\n\r\n        for (let i = 1; i < routingParameters_['_waypoints'] - 1; i++) {\r\n\r\n          let wpParts = routingParameters_['waypoint' + i].replace(\"geo!\", \"\").split(\",\");\r\n\r\n          wayPoints.push({ lat: wpParts[0], lng: wpParts[1] });\r\n\r\n        }\r\n\r\n        routingParameters['via'] = new H.service.Url.MultiValueQueryParameter(\r\n          wayPoints.map(wp => `${wp.lat},${wp.lng}`)\r\n        )\r\n      }\r\n\r\n      // Define a callback function to process the routing response:\r\n      const onResult = function (result) {\r\n\r\n        let masterResponse: any = {};\r\n        masterResponse.response = {};\r\n\r\n        let response = masterResponse.response;\r\n        response.route = [];\r\n\r\n        for (let iRoute in result.routes) {\r\n          response.route[iRoute] = {};\r\n\r\n          let route = response.route[iRoute];\r\n\r\n          route.summary = {\r\n            distance: 0\r\n          };\r\n\r\n          route.waypoint = [];\r\n\r\n          let iWaypoint = 0;\r\n\r\n          for (let iSection in result.routes[iRoute].sections) {\r\n\r\n            let section = result.routes[iRoute].sections[iSection];\r\n\r\n            if (iSection == \"0\") {\r\n              route.waypoint[iWaypoint] = {\r\n                mappedPosition: {\r\n                  latitude: section.departure.place.location.lat,\r\n                  longitude: section.departure.place.location.lng\r\n                }\r\n              }\r\n\r\n              iWaypoint++;\r\n            }\r\n\r\n            route.waypoint[iWaypoint] = {\r\n              mappedPosition: {\r\n                latitude: section.arrival.place.location.lat,\r\n                longitude: section.arrival.place.location.lng\r\n              }\r\n            }\r\n\r\n            iWaypoint++;\r\n\r\n            // SUMMARY\r\n            {\r\n              route.summary.distance += section.summary.length;\r\n            }\r\n\r\n          };\r\n\r\n          // LINESTRING\r\n          {\r\n\r\n            let shape: string[] = [];\r\n\r\n            result.routes[0].sections.forEach((section) => {\r\n              // Create a linestring to use as a point source for the route line\r\n\r\n              let shapeSection = H.util.flexiblePolyline.decode(section.polyline).polyline.map(c => {\r\n                return c[0] + \",\" + c[1]\r\n              });\r\n\r\n              shape.push(...shapeSection);\r\n\r\n            });\r\n\r\n            route.shape = shape;\r\n          }\r\n\r\n          resolve(masterResponse);\r\n\r\n        };\r\n      }\r\n\r\n      let onError = function (error) {\r\n        reject(error)\r\n      };\r\n\r\n      // Get an instance of the routing service version 8:\r\n      const router = platform.getRoutingService(null, 8);\r\n\r\n      // Call the calculateRoute() method with the routing parameters,\r\n      // the callback, and an error callback function (called if a\r\n      // communication error occurs):\r\n      router.calculateRoute(routingParameters, onResult, onError);\r\n\r\n      /*\r\n      \r\n            //let router = platform.getRoutingService();\r\n            let router = platform.getRoutingService(null, 8);\r\n      \r\n            let onResult = function (result) {\r\n      \r\n              if (result.type) {\r\n                reject(result.details)\r\n              } else {\r\n                resolve(result)\r\n              }\r\n            };\r\n      \r\n            let onError = function (error) {\r\n              reject(error)\r\n            };\r\n      \r\n            router.calculateRoute(routingParameters, onResult, onError);\r\n            */\r\n\r\n    });\r\n  }\r\n\r\n  getRouteLine(geo: any, backgroundColor: string = 'rgba(38, 87, 186, 0.7)', arrowsColor: string = \"#ffffff\") {\r\n\r\n    let routeLineGroup = new H.map.Group();\r\n\r\n    const routeLine = new H.map.Polyline(geo, {\r\n      style: {\r\n        lineWidth: 8,\r\n        fillColor: 'white',\r\n        strokeColor: 'rgba(255, 255, 255, 1)',\r\n        lineDash: [0, 3],\r\n        lineTailCap: 'arrow-tail',\r\n        lineHeadCap: 'arrow-head'\r\n      }\r\n    });\r\n\r\n    const routeBackground = new H.map.Polyline(geo, {\r\n      style: {\r\n        lineWidth: 10,\r\n        strokeColor: backgroundColor,\r\n        lineTailCap: 'arrow-tail',\r\n        lineHeadCap: 'arrow-head'\r\n      }\r\n    });\r\n\r\n    routeLineGroup.addObjects([routeBackground, routeLine]);\r\n\r\n    return routeLineGroup;\r\n\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ControllerService } from '../controller-service/controller.service';\r\nimport { ExtendedHttpClient } from '../classes/extendend-http-client';\r\nimport { Param } from '../classes/param';\r\nimport { Model } from '../classes/model';\r\nimport { FindMethod } from '../enums/find-method';\r\nimport { Action } from '../enums/action';\r\nimport { Util } from '../functions/util';\r\nimport { PageForm } from '../classes/page-form';\r\nimport { ModelList } from '../classes/model-list';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class ModelService extends ControllerService {\r\n\r\n  constructor(protected http: ExtendedHttpClient) { \r\n    super(http)\r\n    this.controller = \"api/model\"\r\n  }\r\n\r\n  async find<T extends Model>(t: { new(): T }, findMethod: FindMethod, selectColumnsId: number, params: any){\r\n\r\n    \r\n    let model = new t()\r\n\r\n    model._selectColumsId = selectColumnsId\r\n \r\n    // Creamos instancia para modelo comprimido, y asignamos propiedades minimas\r\n\r\n    let modelLite: any = {}\r\n\r\n    modelLite._tableName = model._tableName\r\n    modelLite._action = model._action\r\n    modelLite._selectColumsId = model._selectColumsId\r\n    \r\n    // Guardamos en una variable las columnas por las que será cargado el modelo\r\n    let findKeys: string[]\r\n\r\n    switch(findMethod) {\r\n      case FindMethod.PrimaryKey:\r\n        findKeys = model._primaryKey\r\n        break\r\n      case FindMethod.Indentity:\r\n        findKeys = model._identity\r\n        break\r\n    }\r\n\r\n    for(var i in findKeys) {\r\n      model[findKeys[i]] = params[i]\r\n    }\r\n    \r\n    // Si no hay columnas significa que el modelo no soporta el metoddo de busqueda\r\n\r\n    if(findKeys == undefined || findKeys == null || findKeys.length == 0) {\r\n      throw \"¡No se puede buscar el modelo '\" + model.constructor.name + \"' por el metodo 'FindBy\" + FindMethod[findMethod] + \"'!\"\r\n    }\r\n\r\n    // Recorremos columnas, verificamos que tengan valor y agregamos columna con valor al modelo comprimido\r\n    for(var i in findKeys) {\r\n      let findKey = findKeys[i]\r\n      let findValue = model[findKey]\r\n\r\n      if(findValue == undefined || findValue == null) {\r\n        throw \"¡Asigne un valor a la propiedad '\" + findKey + \"' del modelo '\" + model.constructor.name + \"'!\"\r\n      }\r\n\r\n      modelLite[findKey] = findValue\r\n    }\r\n\r\n    let parms: Param[]\r\n\r\n    parms = []\r\n\r\n    parms.push({ name: 'findMethod', value: findMethod.toString() })\r\n\r\n    let modelFind = await this.postController(\"find\", modelLite , parms)\r\n\r\n    model._previousModel = {}\r\n\r\n    for(var i in modelFind) {\r\n      if(i.substr(0, 1) != \"_\") {\r\n        model[i] = modelFind[i]\r\n        model._previousModel[i] = model[i]\r\n      }\r\n    }\r\n\r\n    model._action = Action.Update\r\n    model._readedFromDatabase = true\r\n\r\n    return model\r\n  \r\n  }\r\n\r\n  async save(model: Model) {\r\n\r\n    try {\r\n      \r\n      if(model._action == Action.Splice) {\r\n        return\r\n      }\r\n\r\n      //let modelLite = Model.getModelLite(model)\r\n\r\n      let assigned = await this.postController(\"save\", model)\r\n\r\n      this.setAssigned(assigned, model)\r\n      this.setPrevious(model)\r\n      this.setNewAction(model)\r\n      Model.spliceUnused(model)\r\n\r\n    } catch (error) {\r\n\r\n      let errorL = PageForm.getError(error)\r\n\r\n      if(errorL.message.indexOf('REFERENCE constraint') != -1) {\r\n        errorL.message = \"¡No se puede eliminar registro ya que hay información relacionada!\"\r\n      }\r\n\r\n      throw error\r\n    }\r\n  }\r\n\r\n  async saveList(modelList: ModelList<Model>) {\r\n\r\n    try {\r\n\r\n      let assignedList = <any[]> await this.postController(\"save-list\", modelList);\r\n\r\n      for(var i = 0; i < assignedList.length; i++) {\r\n\r\n        let assigned = assignedList[i];\r\n        let model = modelList[i];\r\n\r\n        this.setAssigned(assigned, model)\r\n        this.setPrevious(model)\r\n        this.setNewAction(model)\r\n        Model.spliceUnused(model)\r\n      }\r\n\r\n      Model.spliceUnusedList(modelList);\r\n\r\n    } catch (error) {\r\n\r\n      let errorL = PageForm.getError(error)\r\n\r\n      if(errorL.message.indexOf('REFERENCE constraint') != -1) {\r\n        errorL.message = \"¡No se puede eliminar registro ya que hay información relacionada!\"\r\n      }\r\n\r\n      throw error\r\n    }\r\n  }\r\n\r\n  afterSaveFunction(model: Model, assigned: any) {\r\n\r\n    try {\r\n      \r\n      if(model._action == Action.Splice) {\r\n        return\r\n      }\r\n\r\n      this.setAssigned(assigned, model)\r\n      this.setPrevious(model)\r\n      this.setNewAction(model)\r\n      Model.spliceUnused(model)\r\n\r\n    } catch (error) {\r\n\r\n      let errorL = PageForm.getError(error)\r\n\r\n      if(errorL.message.indexOf('REFERENCE constraint') != -1) {\r\n        errorL.message = \"¡No se puede eliminar registro ya que hay información relacionada!\"\r\n      }\r\n\r\n      throw error\r\n    }\r\n  }\r\n\r\n  private setAssigned(assigned, model: Model) {\r\n\r\n    if(assigned == null || model == null) {\r\n      return;\r\n    }\r\n\r\n    for (var i in assigned.assignedFieldsList) {\r\n      let fieldName = assigned.assignedFieldsList[i].fieldName,\r\n        fieldValue = assigned.assignedFieldsList[i].fieldValue\r\n\r\n      model[fieldName] = fieldValue\r\n    }\r\n\r\n    for (var detailKey in assigned.detail) {\r\n      for (var m in assigned.detail[detailKey]) {\r\n        let assignedFields = assigned.detail[detailKey][m]\r\n        let mdl = model._detail[detailKey][m]\r\n\r\n        this.setAssigned(assignedFields, mdl)\r\n\r\n      }\r\n    }\r\n\r\n    let freeModel = model._freeModel;\r\n    let assignedFreeModel = assigned.freeModel;\r\n\r\n    this.setAssigned(assignedFreeModel, freeModel);\r\n\r\n  }\r\n\r\n  private setNewAction(model: Model) {\r\n\r\n    if(model == null) {\r\n      return;\r\n    }\r\n    \r\n    switch(model._action) {\r\n      case Action.Insert:\r\n        model._action = Action.Update\r\n        break\r\n      case Action.Delete:\r\n        model._action = Action.Splice\r\n        break\r\n    }\r\n\r\n    for (var detailKey in model._detail) {\r\n      let modelList = model._detail[detailKey]\r\n      for (var m in modelList) {\r\n        this.setNewAction(modelList[m])\r\n      }\r\n    }\r\n\r\n    this.setNewAction(model._freeModel);\r\n  }\r\n\r\n  private setPrevious(model: Model) {\r\n\r\n    if(model == null) {\r\n      return;\r\n    }\r\n\r\n    for (var i in model) {\r\n      if (i.substring(0, 1) != \"_\") {\r\n\r\n        let new_i = i\r\n\r\n        if(new_i.substring(0, 1) == \"$\") {\r\n          new_i = new_i.substr(1)\r\n        }\r\n\r\n        model._previousModel[new_i] = model[new_i]\r\n      }\r\n    }\r\n\r\n    for (var detailKey in model._detail) {\r\n      let modelList = model._detail[detailKey]\r\n      for (var m in modelList) {\r\n        this.setPrevious(modelList[m])\r\n      }\r\n    }\r\n\r\n    this.setPrevious(model._freeModel)\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ControllerService } from '../controller-service/controller.service';\r\nimport { ExtendedHttpClient } from '../classes/extendend-http-client';\r\nimport { Param } from '../classes/param';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class SessionsService extends ControllerService {\r\n\r\n  readedVars: any\r\n  readedValues: any\r\n\r\n  constructor(protected http: ExtendedHttpClient) {\r\n    super(http)\r\n    this.controller = \"api/session\"\r\n\r\n    this.readedVars = {}\r\n    this.readedValues = {}\r\n  }\r\n\r\n  clearSessioVars(){\r\n    this.readedVars = {}\r\n    this.readedValues = {}\r\n  }\r\n\r\n  async isActiveSession(){\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n\r\n    return await this.getController('is-active-session', cParms )\r\n  }\r\n\r\n  async getSessionVariables(vars: string[]){\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n    cParms.push({ name: 'vars', value: JSON.stringify(vars) })\r\n\r\n    return await this.getController('get-session-variables', cParms )\r\n  }\r\n\r\n  async getSessionVariable(_var: string){\r\n\r\n    if(this.readedVars[_var] != undefined) {\r\n      return this.readedVars[_var]\r\n    }\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n    cParms.push({ name: 'var', value: _var })\r\n\r\n    this.readedVars[_var] = await this.getController('get-session-variable', cParms )\r\n\r\n    return this.readedVars[_var]\r\n  }\r\n\r\n  async getSessionValue(_var: string, property: string){\r\n\r\n    if(this.readedVars[_var] != undefined) {\r\n      delete this.readedValues[_var]\r\n      return this.readedVars[_var][property]\r\n    }\r\n    if(this.readedValues[_var] != undefined) {\r\n      if(this.readedValues[_var][property] != undefined) {\r\n        return this.readedValues[_var][property]\r\n      }\r\n    } else {\r\n      this.readedValues[_var] = {}\r\n    }\r\n\r\n    let cParms: Param[]\r\n    cParms = []\r\n    cParms.push({ name: 'var', value: _var })\r\n    cParms.push({ name: 'property', value: property.substring(0, 1).toUpperCase() + property.substring(1) })\r\n\r\n    this.readedValues[_var][property] = await this.getController('get-session-value', cParms )\r\n    \r\n    return this.readedValues[_var][property]\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ControllerService } from '../controller-service/controller.service';\r\nimport { ExtendedHttpClient } from '../classes/extendend-http-client';\r\nimport { Param } from '../classes/param';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AboutService extends ControllerService {\r\n\r\n  constructor(protected http: ExtendedHttpClient) { \r\n    super(http)\r\n    this.controller = \"api/acerca-de\"\r\n  } \r\n\r\n  async about() {\r\n    return await this.getController(\"\")\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { ActionSharedService } from '../enums/action-shared-service';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class SharedService {\r\n\r\n    private emitChangeSource: Subject<ActionSharedService>;\r\n    changeEmitted$: Observable<ActionSharedService>;\r\n\r\n    constructor() {\r\n        this.emitChangeSource = new Subject<ActionSharedService>();\r\n        this.changeEmitted$ = this.emitChangeSource.asObservable();\r\n    }\r\n\r\n    emitChange(change: ActionSharedService) {\r\n        this.emitChangeSource.next(change);\r\n    }\r\n}\r\n","import { ValidatorFn, AbstractControl } from '@angular/forms';\r\n\r\nexport class CustomValidators {\r\n\r\n    static ageRangeValidator(min: number, max: number): ValidatorFn {\r\n        const result =\r\n         (control: AbstractControl): { [key: string]: boolean } | null => {\r\n            if (control.value !== undefined && (isNaN(control.value) || control.value < min || control.value > max)) {\r\n                return { 'ageRange': true };\r\n            }\r\n            return null;\r\n        };\r\n        return result\r\n    }\r\n\r\n    static timeValidator(): ValidatorFn {\r\n        const result = (control: AbstractControl): { [key: string]: boolean } | null => {\r\n\r\n            return { notValid: true }\r\n        };\r\n        return result\r\n    }\r\n}","import { Directive } from '@angular/core';\r\nimport { NG_VALIDATORS, Validator, AbstractControl, ValidationErrors } from '@angular/forms';\r\n\r\n@Directive({\r\n    selector: '[isObject]',\r\n    providers: [\r\n        { provide: NG_VALIDATORS, useExisting: IsObjectValidator, multi: true }\r\n    ]\r\n})\r\nexport class IsObjectValidator implements Validator {\r\n\r\n    constructor() {\r\n    }\r\n\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        const val = control.value;\r\n\r\n        if(typeof val == \"string\") {\r\n            return { isNotObject: true }\r\n        }\r\n\r\n        let elems = 0\r\n       \r\n        for(var i in val) {\r\n            elems++\r\n            break\r\n        }\r\n\r\n        if(elems == 0) {\r\n            return { isNotObject: true }\r\n        }\r\n\r\n        return null\r\n    }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsObjectValidator } from './is-object-validator';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    IsObjectValidator\r\n  ],\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  exports: [\r\n      IsObjectValidator\r\n  ]\r\n})\r\nexport class ValidatorsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { ExtendedHttpClient } from './classes/extendend-http-client';\r\n\r\n@NgModule({\r\n  declarations: [\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    HttpClientModule\r\n  ],\r\n  providers: [\r\n    ExtendedHttpClient\r\n  ]\r\n})\r\nexport class ClientServicesModule { }","// Clases\r\nexport { Dictionary } from './lib/classes/dictionary'\r\nexport { Error } from './lib/classes/error'\r\nexport { ExtendedHttpClient } from './lib/classes/extendend-http-client'\r\nexport { RoutingParameters } from './lib/classes/here-maps'\r\nexport { Model } from './lib/classes/model'\r\nexport { ModelList } from './lib/classes/model-list'\r\nexport { PageForm, Column, ExportOptions } from './lib/classes/page-form'\r\nexport { Param } from './lib/classes/param'\r\nexport { Trigger } from './lib/classes/trigger'\r\n\r\n// Controller Service\r\nexport { ControllerService } from './lib/controller-service/controller.service'\r\n\r\n// Enums\r\nexport { Action } from './lib/enums/action'\r\nexport { ExceptionType } from './lib/enums/exception-type'\r\nexport { FindMethod } from './lib/enums/find-method'\r\nexport { TriggerType } from './lib/enums/trigger-type'\r\nexport { ActionSharedService } from './lib/enums/action-shared-service'\r\n\r\n// Functions\r\nexport { JsonConvert } from './lib/functions/json-convert'\r\nexport { Util } from './lib/functions/util'\r\n\r\n// Services\r\nexport { ConfigurationService } from './lib/services/configuration.service'\r\nexport { EmailService } from './lib/services/email.service'\r\nexport { GeometryService } from './lib/services/geometry.service'\r\nexport { GeneralService } from './lib/services/general.service'\r\nexport { HereMapService } from './lib/services/here-map.service'\r\nexport { ModelService } from './lib/services/model.service'\r\nexport { SessionsService } from './lib/services/sessions.service'\r\nexport { AboutService } from './lib/services/about.service'\r\nexport { SharedService } from './lib/services/shared.service'\r\n\r\n// Types\r\nexport { Geometry }from './lib/types/geometry.type'\r\n\r\n// Validators\r\nexport { CustomValidators }from './lib/validators/custom-validators'\r\nexport { IsObjectValidator }from './lib/validators/is-object-validator'\r\nexport { ValidatorsModule }from './lib/validators/validators.module'\r\n\r\n// Module\r\nexport { ClientServicesModule } from './lib/client-services.module'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["Error","PageError","i1.ExtendedHttpClient"],"mappings":"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"}