From: Andrea Bianco Date: Mon, 31 Jan 2022 20:51:15 +0000 (+0100) Subject: Built motion from commit e6806ed6.|2.6.0 X-Git-Url: http://repos.xcallymotion.com/base//%22?a=commitdiff_plain;h=b8a584094ab5518ad9d99e7861bcebe81bf7f3ef;p=motion2.git Built motion from commit e6806ed6.|2.6.0 --- diff --git a/apidoc/api_data.js b/apidoc/api_data.js index 96fa16c..ec0fdb3 100644 --- a/apidoc/api_data.js +++ b/apidoc/api_data.js @@ -2496,24 +2496,6 @@ define({ "api": [ "groupTitle": "Chat_Interactions" }, { - "type": "put", - "url": "/api/chat/interactions/{id}/close", - "title": "Close Interaction", - "examples": [ - { - "title": "Example usage:", - "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", - "type": "json" - } - ], - "name": "addMessage", - "group": "Chat_Interactions", - "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", - "version": "0.0.0", - "filename": "server/api/chatInteraction/index.js", - "groupTitle": "Chat_Interactions" - }, - { "type": "post", "url": "/api/chat/interactions/{id}/messages", "title": "Creates new messages", @@ -2591,6 +2573,24 @@ define({ "api": [ "groupTitle": "Chat_Interactions" }, { + "type": "put", + "url": "/api/chat/interactions/{id}/close", + "title": "Close Interaction", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "addMessage", + "group": "Chat_Interactions", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/chatInteraction/index.js", + "groupTitle": "Chat_Interactions" + }, + { "type": "post", "url": "/api/chat/interactions/{id}/attachment_upload", "title": "Add attachment", @@ -5620,6 +5620,324 @@ define({ "api": [ }, { "type": "post", + "url": "/api/cm_contact_has_items", + "title": "Creates a new CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "CreateCmContactHasItems", + "group": "CmContactHasItems", + "parameter": { + "fields": { + "Body": [ + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "CmContactId", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "item", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "ItemTypeId", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "ItemClass", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "description", + "description": "" + } + ] + } + }, + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "delete", + "url": "/api/cm_contact_has_items/{id}", + "title": "Deletes a CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items/{id} -v -u {name}:{password} -X DELETE", + "type": "json" + } + ], + "name": "DeleteCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "get", + "url": "/api/cm_contact_has_items", + "title": "Gets a list of CmContactHasItems", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items -v -u {name}:{password}", + "type": "json" + } + ], + "name": "GetCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm_contact_has_items?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm_contact_has_items?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm_contact_has_items?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm_contact_has_items?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm_contact_has_items?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "get", + "url": "/api/cm_contact_has_items/{id}", + "title": "Gets a single CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items/{id} -v -u {name}:{password}", + "type": "json" + } + ], + "name": "ShowCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "put", + "url": "/api/cm_contact_has_items/{id}", + "title": "Update an existing CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", + "type": "json" + } + ], + "name": "updateCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "post", + "url": "/api/cm_hopper_additional_phones", + "title": "Creates a new CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "CreateCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "parameter": { + "fields": { + "Body": [ + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "CmHopperId", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": false, + "field": "phone", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "scheduledat", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countbusyretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countcongestionretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countnoanswerretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countnosuchnumberretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countdropretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countabandonedretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countmachineretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countagentrejectretry", + "description": "" + } + ] + } + }, + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "delete", + "url": "/api/cm_hopper_additional_phones/{id}", + "title": "Deletes a CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -v -u {name}:{password} -X DELETE", + "type": "json" + } + ], + "name": "DeleteCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "get", + "url": "/api/cm_hopper_additional_phones", + "title": "Gets a list of CmHopperAdditionalPhones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones -v -u {name}:{password}", + "type": "json" + } + ], + "name": "GetCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm_hopper_additional_phones?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm_hopper_additional_phones?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm_hopper_additional_phones?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm_hopper_additional_phones?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm_hopper_additional_phones?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "get", + "url": "/api/cm_hopper_additional_phones/{id}", + "title": "Gets a single CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -v -u {name}:{password}", + "type": "json" + } + ], + "name": "ShowCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "put", + "url": "/api/cm_hopper_additional_phones/{id}", + "title": "Update an existing CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", + "type": "json" + } + ], + "name": "updateCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "post", "url": "/api/cm/companies", "title": "Creates a new Company", "examples": [ @@ -6220,6 +6538,42 @@ define({ "api": [ "groupTitle": "Cm_Contacts" }, { + "type": "post", + "url": "/api/cm/contacts/{id}/duplicatePhones", + "title": "Sets new contact additional phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/duplicateAdditionalPhones -d '{\"phones\": [p1,p2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "duplicateAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { + "type": "get", + "url": "/api/cm/contacts/{id}/phones", + "title": "Gets contact phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/phones -v -u {name}:{password} -X GET", + "type": "json" + } + ], + "name": "getAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { "type": "get", "url": "/api/cm/contacts/{id}/journey", "title": "Gets customer journey", @@ -6293,6 +6647,42 @@ define({ "api": [ }, { "type": "post", + "url": "/api/cm/contacts/{id}/rescheduleAdditionalPhones", + "title": "Sets new contact additional phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/rescheduleAdditionalPhones -d '{\"phones\": [p1,p2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "rescheduleAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { + "type": "post", + "url": "/api/cm/contacts/{id}/phones", + "title": "Sets new contact phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/phones -d '{\"phones\": [p1,p2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "setAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { + "type": "post", "url": "/api/cm/contacts/{id}/tags", "title": "Sets new tags", "examples": [ @@ -6582,6 +6972,13 @@ define({ "api": [ }, { "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", "type": "String", "optional": true, "field": "dialTimezone", @@ -7890,6 +8287,24 @@ define({ "api": [ }, { "type": "get", + "url": "/api/cm/lists/global_fields", + "title": "Gets GLOBAL Custom Fields", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/lists/global_fields -v -u {name}:{password} -X GET", + "type": "json" + } + ], + "name": "getGlobalCustomFields", + "group": "Cm_Lists", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmList/index.js", + "groupTitle": "Cm_Lists" + }, + { + "type": "get", "url": "/api/cm/lists/{id}/contacts/csv", "title": "Gets CSV List Contacts", "examples": [ @@ -7944,6 +8359,24 @@ define({ "api": [ }, { "type": "post", + "url": "/api/cm/contacts/uploadUpdates/:id", + "title": "Import existing contacts by csv", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/uploadUpdates/:id -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "importUpdates", + "group": "Cm_contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_contacts" + }, + { + "type": "post", "url": "/api/cm/contacts/upload", "title": "Upload csv", "examples": [ @@ -8016,6 +8449,123 @@ define({ "api": [ }, { "type": "post", + "url": "/api/contact_item_types", + "title": "Creates a new ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "CreateContactItemTypes", + "group": "ContactItemType", + "parameter": { + "fields": { + "Body": [ + { + "group": "Body", + "type": "String", + "optional": false, + "field": "name", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "rgbBackgroundColor", + "description": "" + } + ] + } + }, + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "delete", + "url": "/api/contact_item_types/{id}", + "title": "Deletes a ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types/{id} -v -u {name}:{password} -X DELETE", + "type": "json" + } + ], + "name": "DeleteContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "get", + "url": "/api/contact_item_types", + "title": "Gets a list of ContactItemTypes", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types -v -u {name}:{password}", + "type": "json" + } + ], + "name": "GetContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/contact_item_types?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/contact_item_types?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/contact_item_types?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/contact_item_types?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/contact_item_types?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "get", + "url": "/api/contact_item_types/{id}", + "title": "Gets a single ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types/{id} -v -u {name}:{password}", + "type": "json" + } + ], + "name": "ShowContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "put", + "url": "/api/contact_item_types/{id}", + "title": "Update an existing ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", + "type": "json" + } + ], + "name": "updateContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "post", "url": "/api/cm/custom_field", "title": "Create a new custom field", "examples": [ @@ -9988,12 +10538,12 @@ define({ "api": [ }, { "type": "post", - "url": "/api/fax/accounts/{id}/applications", - "title": "Creates new applications", + "url": "/api/fax/accounts/addaccountapplications", + "title": "Creates new account and applications", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/fax/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "content": "curl https://{domain}/api/fax/accounts/addaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], @@ -10047,12 +10597,12 @@ define({ "api": [ }, { "type": "post", - "url": "/api/fax/accounts/addaccountapplications", - "title": "Creates new account and applications", + "url": "/api/fax/accounts/{id}/applications", + "title": "Creates new applications", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/fax/accounts/addaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "content": "curl https://{domain}/api/fax/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], @@ -11022,9 +11572,9 @@ define({ "api": [ "groupTitle": "Fax_Messages" }, { - "type": "put", - "url": "/api/fax/messages/{id}/reject", - "title": "Rejects message", + "type": "post", + "url": "/api/fax/messages", + "title": "Create message and send Fax", "examples": [ { "title": "Example usage:", @@ -11034,15 +11584,15 @@ define({ "api": [ ], "name": "rejectMessage", "group": "Fax_Messages", - "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" }, { - "type": "post", - "url": "/api/fax/messages", - "title": "Create message and send Fax", + "type": "put", + "url": "/api/fax/messages/{id}/reject", + "title": "Rejects message", "examples": [ { "title": "Example usage:", @@ -11052,7 +11602,7 @@ define({ "api": [ ], "name": "rejectMessage", "group": "Fax_Messages", - "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" @@ -20042,36 +20592,36 @@ define({ "api": [ }, { "type": "get", - "url": "/api/rpc/outbound", - "title": "Gets a list of RTOutbound", + "url": "/api/rpc/voice/queues", + "title": "Gets a list of RTVoiceQueues", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}", + "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}", "type": "json" } ], "name": "RTVoiceQueues", "group": "RPC_Realtime", - "description": "

Motion will return a list of realtime outbound parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a list of realtime voice queues parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/rpc/index.js", "groupTitle": "RPC_Realtime" }, { "type": "get", - "url": "/api/rpc/voice/queues", - "title": "Gets a list of RTVoiceQueues", + "url": "/api/rpc/outbound", + "title": "Gets a list of RTOutbound", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}", + "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}", "type": "json" } ], "name": "RTVoiceQueues", "group": "RPC_Realtime", - "description": "

Motion will return a list of realtime voice queues parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a list of realtime outbound parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/rpc/index.js", "groupTitle": "RPC_Realtime" @@ -23002,31 +23552,31 @@ define({ "api": [ "groupTitle": "Sms_Accounts" }, { - "type": "get", - "url": "/api/sms/accounts/{id}/status", - "title": "Receive message status as get request", + "type": "post", + "url": "/api/sms/messages/{id}/status", + "title": "Receive message status", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET", + "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST", "type": "json" } ], "name": "statusMessage", "group": "Sms_Accounts", - "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/smsAccount/index.js", + "filename": "server/api/smsMessage/index.js", "groupTitle": "Sms_Accounts" }, { "type": "post", - "url": "/api/sms/messages/{id}/status", + "url": "/api/sms/accounts/{id}/status", "title": "Receive message status", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST", + "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST", "type": "json" } ], @@ -23034,23 +23584,23 @@ define({ "api": [ "group": "Sms_Accounts", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/smsMessage/index.js", + "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { - "type": "post", + "type": "get", "url": "/api/sms/accounts/{id}/status", - "title": "Receive message status", + "title": "Receive message status as get request", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST", + "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET", "type": "json" } ], "name": "statusMessage", "group": "Sms_Accounts", - "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" @@ -26075,7 +26625,7 @@ define({ "api": [ }, { "type": "get", - "url": "/api/system", + "url": "/api/system/process", "title": "Gets system information", "examples": [ { @@ -26093,7 +26643,7 @@ define({ "api": [ }, { "type": "get", - "url": "/api/system/process", + "url": "/api/system", "title": "Gets system information", "examples": [ { @@ -26392,12 +26942,12 @@ define({ "api": [ }, { "type": "delete", - "url": "/api/openchannel/queues/{id}/teams", + "url": "/api/mail/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26405,17 +26955,17 @@ define({ "api": [ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/openchannelQueue/index.js", + "filename": "server/api/mailQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/voice/queues/{id}/teams", - "title": "Remove teams from a queue", + "url": "/api/voice/Prefixes/{id}/teams", + "title": "Remove teams from a voice prefix", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26423,17 +26973,17 @@ define({ "api": [ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/voiceQueue/index.js", + "filename": "server/api/voicePrefix/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/voice/Prefixes/{id}/teams", - "title": "Remove teams from a voice prefix", + "url": "/api/chat/queues/{id}/teams", + "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26441,7 +26991,7 @@ define({ "api": [ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/voicePrefix/index.js", + "filename": "server/api/chatQueue/index.js", "groupTitle": "Teams" }, { @@ -26464,12 +27014,12 @@ define({ "api": [ }, { "type": "delete", - "url": "/api/whatsapp/queues/{id}/teams", + "url": "/api/fax/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26477,17 +27027,17 @@ define({ "api": [ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/whatsappQueue/index.js", + "filename": "server/api/faxQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/chat/queues/{id}/teams", + "url": "/api/openchannel/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26495,17 +27045,17 @@ define({ "api": [ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/chatQueue/index.js", + "filename": "server/api/openchannelQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/mail/queues/{id}/teams", + "url": "/api/whatsapp/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26513,17 +27063,17 @@ define({ "api": [ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/mailQueue/index.js", + "filename": "server/api/whatsappQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/fax/queues/{id}/teams", + "url": "/api/voice/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26531,7 +27081,7 @@ define({ "api": [ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/faxQueue/index.js", + "filename": "server/api/voiceQueue/index.js", "groupTitle": "Teams" }, { @@ -34521,12 +35071,12 @@ define({ "api": [ }, { "type": "post", - "url": "/api/webbar/unhold", - "title": "unhold webrtc call", + "url": "/api/webbar/hold", + "title": "hold webrtc call", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/webbar/unhold -d '{\"sessionId\": \"\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST", + "content": "curl https://{domain}/api/webbar/hold -d '{\"sessionId\": \"\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST", "type": "json" } ], @@ -34538,7 +35088,7 @@ define({ "api": [ { "group": "Body", "type": "String", - "optional": false, + "optional": true, "field": "sessionId", "description": "" }, @@ -34559,12 +35109,12 @@ define({ "api": [ }, { "type": "post", - "url": "/api/webbar/hold", - "title": "hold webrtc call", + "url": "/api/webbar/unhold", + "title": "unhold webrtc call", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/webbar/hold -d '{\"sessionId\": \"\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST", + "content": "curl https://{domain}/api/webbar/unhold -d '{\"sessionId\": \"\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST", "type": "json" } ], @@ -34576,7 +35126,7 @@ define({ "api": [ { "group": "Body", "type": "String", - "optional": true, + "optional": false, "field": "sessionId", "description": "" }, diff --git a/apidoc/api_data.json b/apidoc/api_data.json index 4600dba..f239020 100644 --- a/apidoc/api_data.json +++ b/apidoc/api_data.json @@ -2496,24 +2496,6 @@ "groupTitle": "Chat_Interactions" }, { - "type": "put", - "url": "/api/chat/interactions/{id}/close", - "title": "Close Interaction", - "examples": [ - { - "title": "Example usage:", - "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", - "type": "json" - } - ], - "name": "addMessage", - "group": "Chat_Interactions", - "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", - "version": "0.0.0", - "filename": "server/api/chatInteraction/index.js", - "groupTitle": "Chat_Interactions" - }, - { "type": "post", "url": "/api/chat/interactions/{id}/messages", "title": "Creates new messages", @@ -2591,6 +2573,24 @@ "groupTitle": "Chat_Interactions" }, { + "type": "put", + "url": "/api/chat/interactions/{id}/close", + "title": "Close Interaction", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "addMessage", + "group": "Chat_Interactions", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/chatInteraction/index.js", + "groupTitle": "Chat_Interactions" + }, + { "type": "post", "url": "/api/chat/interactions/{id}/attachment_upload", "title": "Add attachment", @@ -5620,6 +5620,324 @@ }, { "type": "post", + "url": "/api/cm_contact_has_items", + "title": "Creates a new CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "CreateCmContactHasItems", + "group": "CmContactHasItems", + "parameter": { + "fields": { + "Body": [ + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "CmContactId", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "item", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "ItemTypeId", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "ItemClass", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "description", + "description": "" + } + ] + } + }, + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "delete", + "url": "/api/cm_contact_has_items/{id}", + "title": "Deletes a CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items/{id} -v -u {name}:{password} -X DELETE", + "type": "json" + } + ], + "name": "DeleteCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "get", + "url": "/api/cm_contact_has_items", + "title": "Gets a list of CmContactHasItems", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items -v -u {name}:{password}", + "type": "json" + } + ], + "name": "GetCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm_contact_has_items?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm_contact_has_items?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm_contact_has_items?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm_contact_has_items?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm_contact_has_items?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "get", + "url": "/api/cm_contact_has_items/{id}", + "title": "Gets a single CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items/{id} -v -u {name}:{password}", + "type": "json" + } + ], + "name": "ShowCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "put", + "url": "/api/cm_contact_has_items/{id}", + "title": "Update an existing CmContactHasItem", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_contact_has_items/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", + "type": "json" + } + ], + "name": "updateCmContactHasItems", + "group": "CmContactHasItems", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContactHasItem/index.js", + "groupTitle": "CmContactHasItems" + }, + { + "type": "post", + "url": "/api/cm_hopper_additional_phones", + "title": "Creates a new CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "CreateCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "parameter": { + "fields": { + "Body": [ + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "CmHopperId", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": false, + "field": "phone", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "scheduledat", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countbusyretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countcongestionretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countnoanswerretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countnosuchnumberretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countdropretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countabandonedretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countmachineretry", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "countagentrejectretry", + "description": "" + } + ] + } + }, + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "delete", + "url": "/api/cm_hopper_additional_phones/{id}", + "title": "Deletes a CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -v -u {name}:{password} -X DELETE", + "type": "json" + } + ], + "name": "DeleteCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "get", + "url": "/api/cm_hopper_additional_phones", + "title": "Gets a list of CmHopperAdditionalPhones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones -v -u {name}:{password}", + "type": "json" + } + ], + "name": "GetCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/cm_hopper_additional_phones?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/cm_hopper_additional_phones?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/cm_hopper_additional_phones?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/cm_hopper_additional_phones?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/cm_hopper_additional_phones?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "get", + "url": "/api/cm_hopper_additional_phones/{id}", + "title": "Gets a single CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -v -u {name}:{password}", + "type": "json" + } + ], + "name": "ShowCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "put", + "url": "/api/cm_hopper_additional_phones/{id}", + "title": "Update an existing CmHopperAdditionalPhone", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm_hopper_additional_phones/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", + "type": "json" + } + ], + "name": "updateCmHopperAdditionalPhones", + "group": "CmHopperAdditionalPhones", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmHopperAdditionalPhone/index.js", + "groupTitle": "CmHopperAdditionalPhones" + }, + { + "type": "post", "url": "/api/cm/companies", "title": "Creates a new Company", "examples": [ @@ -6220,6 +6538,42 @@ "groupTitle": "Cm_Contacts" }, { + "type": "post", + "url": "/api/cm/contacts/{id}/duplicatePhones", + "title": "Sets new contact additional phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/duplicateAdditionalPhones -d '{\"phones\": [p1,p2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "duplicateAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { + "type": "get", + "url": "/api/cm/contacts/{id}/phones", + "title": "Gets contact phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/phones -v -u {name}:{password} -X GET", + "type": "json" + } + ], + "name": "getAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { "type": "get", "url": "/api/cm/contacts/{id}/journey", "title": "Gets customer journey", @@ -6293,6 +6647,42 @@ }, { "type": "post", + "url": "/api/cm/contacts/{id}/rescheduleAdditionalPhones", + "title": "Sets new contact additional phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/rescheduleAdditionalPhones -d '{\"phones\": [p1,p2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "rescheduleAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { + "type": "post", + "url": "/api/cm/contacts/{id}/phones", + "title": "Sets new contact phones", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/{id}/phones -d '{\"phones\": [p1,p2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "setAdditionalPhones", + "group": "Cm_Contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_Contacts" + }, + { + "type": "post", "url": "/api/cm/contacts/{id}/tags", "title": "Sets new tags", "examples": [ @@ -6582,6 +6972,13 @@ }, { "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", "type": "String", "optional": true, "field": "dialTimezone", @@ -7890,6 +8287,24 @@ }, { "type": "get", + "url": "/api/cm/lists/global_fields", + "title": "Gets GLOBAL Custom Fields", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/lists/global_fields -v -u {name}:{password} -X GET", + "type": "json" + } + ], + "name": "getGlobalCustomFields", + "group": "Cm_Lists", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmList/index.js", + "groupTitle": "Cm_Lists" + }, + { + "type": "get", "url": "/api/cm/lists/{id}/contacts/csv", "title": "Gets CSV List Contacts", "examples": [ @@ -7944,6 +8359,24 @@ }, { "type": "post", + "url": "/api/cm/contacts/uploadUpdates/:id", + "title": "Import existing contacts by csv", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/cm/contacts/uploadUpdates/:id -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "importUpdates", + "group": "Cm_contacts", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/cmContact/index.js", + "groupTitle": "Cm_contacts" + }, + { + "type": "post", "url": "/api/cm/contacts/upload", "title": "Upload csv", "examples": [ @@ -8016,6 +8449,123 @@ }, { "type": "post", + "url": "/api/contact_item_types", + "title": "Creates a new ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST", + "type": "json" + } + ], + "name": "CreateContactItemTypes", + "group": "ContactItemType", + "parameter": { + "fields": { + "Body": [ + { + "group": "Body", + "type": "String", + "optional": false, + "field": "name", + "description": "" + }, + { + "group": "Body", + "type": "Integer", + "optional": true, + "field": "OrderBy", + "description": "" + }, + { + "group": "Body", + "type": "String", + "optional": true, + "field": "rgbBackgroundColor", + "description": "" + } + ] + } + }, + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "delete", + "url": "/api/contact_item_types/{id}", + "title": "Deletes a ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types/{id} -v -u {name}:{password} -X DELETE", + "type": "json" + } + ], + "name": "DeleteContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "get", + "url": "/api/contact_item_types", + "title": "Gets a list of ContactItemTypes", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types -v -u {name}:{password}", + "type": "json" + } + ], + "name": "GetContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will always return paged results. Motion returns paging data in the Content-Range header in the form start - end / total.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned otherwise it will return a HTTP status code 206 Partial Content.

Motion renders the resulting JSON representation in the response body.

Retrieving Specific Fields

To return only specific fields for a result set you can utilize the fields parameter. This parameter accepts a comma-separated list.

A call returning only id and name for a result set would look like this.

GET /api/contact_item_types?fields=id,name

Filtering

You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.

A call returning a result set for records with name of john.doe or jane.miller.

GET /api/contact_item_types?name=john.doe,jane.miller

If you use the key filter the result will be filtered by the value you specify.

GET /api/contact_item_types?filter=john

Sorting

To sort a result set based on one or several fields you can utilize the sort parameter. This parameters accepts a comma-separated list.

Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (-).

A call sorting a result by id ascending and then name descending would look like this.

GET /api/contact_item_types?sort=id,-name

Offset and Limit

Query results are always paged. Motion leverages the offset and limit parameters to facilitate this.

When the neither of these parameters are explicitly supplied the handler will assume the a default limit of 100.

offset is a number indicating the start position in the result set you want to return.

limit is a number indicating how many records past the start position you want returned.

A call with a result set starting at 5 and returning no more than 25 records would look like this.

GET /api/contact_item_types?offset=5&limit=25

If there were 50 records in total, the returned Content-Range header would look like this.

Content-Range: 5-30/50

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "get", + "url": "/api/contact_item_types/{id}", + "title": "Gets a single ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types/{id} -v -u {name}:{password}", + "type": "json" + } + ], + "name": "ShowContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "put", + "url": "/api/contact_item_types/{id}", + "title": "Update an existing ContactItemType", + "examples": [ + { + "title": "Example usage:", + "content": "curl https://{domain}/api/contact_item_types/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT", + "type": "json" + } + ], + "name": "updateContactItemTypes", + "group": "ContactItemType", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "version": "0.0.0", + "filename": "server/api/contactItemType/index.js", + "groupTitle": "ContactItemType" + }, + { + "type": "post", "url": "/api/cm/custom_field", "title": "Create a new custom field", "examples": [ @@ -9988,12 +10538,12 @@ }, { "type": "post", - "url": "/api/fax/accounts/{id}/applications", - "title": "Creates new applications", + "url": "/api/fax/accounts/addaccountapplications", + "title": "Creates new account and applications", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/fax/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "content": "curl https://{domain}/api/fax/accounts/addaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], @@ -10047,12 +10597,12 @@ }, { "type": "post", - "url": "/api/fax/accounts/addaccountapplications", - "title": "Creates new account and applications", + "url": "/api/fax/accounts/{id}/applications", + "title": "Creates new applications", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/fax/accounts/addaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", + "content": "curl https://{domain}/api/fax/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST", "type": "json" } ], @@ -11022,9 +11572,9 @@ "groupTitle": "Fax_Messages" }, { - "type": "put", - "url": "/api/fax/messages/{id}/reject", - "title": "Rejects message", + "type": "post", + "url": "/api/fax/messages", + "title": "Create message and send Fax", "examples": [ { "title": "Example usage:", @@ -11034,15 +11584,15 @@ ], "name": "rejectMessage", "group": "Fax_Messages", - "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" }, { - "type": "post", - "url": "/api/fax/messages", - "title": "Create message and send Fax", + "type": "put", + "url": "/api/fax/messages/{id}/reject", + "title": "Rejects message", "examples": [ { "title": "Example usage:", @@ -11052,7 +11602,7 @@ ], "name": "rejectMessage", "group": "Fax_Messages", - "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/faxMessage/index.js", "groupTitle": "Fax_Messages" @@ -20042,36 +20592,36 @@ }, { "type": "get", - "url": "/api/rpc/outbound", - "title": "Gets a list of RTOutbound", + "url": "/api/rpc/voice/queues", + "title": "Gets a list of RTVoiceQueues", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}", + "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}", "type": "json" } ], "name": "RTVoiceQueues", "group": "RPC_Realtime", - "description": "

Motion will return a list of realtime outbound parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a list of realtime voice queues parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/rpc/index.js", "groupTitle": "RPC_Realtime" }, { "type": "get", - "url": "/api/rpc/voice/queues", - "title": "Gets a list of RTVoiceQueues", + "url": "/api/rpc/outbound", + "title": "Gets a list of RTOutbound", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}", + "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}", "type": "json" } ], "name": "RTVoiceQueues", "group": "RPC_Realtime", - "description": "

Motion will return a list of realtime voice queues parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a list of realtime outbound parameters.

Upon success Motion will return a HTTP status code 200 OK if the entire collection was returned.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/rpc/index.js", "groupTitle": "RPC_Realtime" @@ -23002,31 +23552,31 @@ "groupTitle": "Sms_Accounts" }, { - "type": "get", - "url": "/api/sms/accounts/{id}/status", - "title": "Receive message status as get request", + "type": "post", + "url": "/api/sms/messages/{id}/status", + "title": "Receive message status", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET", + "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST", "type": "json" } ], "name": "statusMessage", "group": "Sms_Accounts", - "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/smsAccount/index.js", + "filename": "server/api/smsMessage/index.js", "groupTitle": "Sms_Accounts" }, { "type": "post", - "url": "/api/sms/messages/{id}/status", + "url": "/api/sms/accounts/{id}/status", "title": "Receive message status", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST", + "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST", "type": "json" } ], @@ -23034,23 +23584,23 @@ "group": "Sms_Accounts", "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/smsMessage/index.js", + "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" }, { - "type": "post", + "type": "get", "url": "/api/sms/accounts/{id}/status", - "title": "Receive message status", + "title": "Receive message status as get request", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST", + "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET", "type": "json" } ], "name": "statusMessage", "group": "Sms_Accounts", - "description": "

Motion will return a HTTP status code 201 upon success.

Motion renders the resulting JSON representation in the response body.

", + "description": "

Motion will return a HTTP status code 200 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", "filename": "server/api/smsAccount/index.js", "groupTitle": "Sms_Accounts" @@ -26075,7 +26625,7 @@ }, { "type": "get", - "url": "/api/system", + "url": "/api/system/process", "title": "Gets system information", "examples": [ { @@ -26093,7 +26643,7 @@ }, { "type": "get", - "url": "/api/system/process", + "url": "/api/system", "title": "Gets system information", "examples": [ { @@ -26392,12 +26942,12 @@ }, { "type": "delete", - "url": "/api/openchannel/queues/{id}/teams", + "url": "/api/mail/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26405,17 +26955,17 @@ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/openchannelQueue/index.js", + "filename": "server/api/mailQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/voice/queues/{id}/teams", - "title": "Remove teams from a queue", + "url": "/api/voice/Prefixes/{id}/teams", + "title": "Remove teams from a voice prefix", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26423,17 +26973,17 @@ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/voiceQueue/index.js", + "filename": "server/api/voicePrefix/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/voice/Prefixes/{id}/teams", - "title": "Remove teams from a voice prefix", + "url": "/api/chat/queues/{id}/teams", + "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26441,7 +26991,7 @@ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/voicePrefix/index.js", + "filename": "server/api/chatQueue/index.js", "groupTitle": "Teams" }, { @@ -26464,12 +27014,12 @@ }, { "type": "delete", - "url": "/api/whatsapp/queues/{id}/teams", + "url": "/api/fax/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26477,17 +27027,17 @@ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/whatsappQueue/index.js", + "filename": "server/api/faxQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/chat/queues/{id}/teams", + "url": "/api/openchannel/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26495,17 +27045,17 @@ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/chatQueue/index.js", + "filename": "server/api/openchannelQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/mail/queues/{id}/teams", + "url": "/api/whatsapp/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26513,17 +27063,17 @@ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/mailQueue/index.js", + "filename": "server/api/whatsappQueue/index.js", "groupTitle": "Teams" }, { "type": "delete", - "url": "/api/fax/queues/{id}/teams", + "url": "/api/voice/queues/{id}/teams", "title": "Remove teams from a queue", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE", + "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE", "type": "json" } ], @@ -26531,7 +27081,7 @@ "group": "Teams", "description": "

Motion will return a HTTP status code 204 upon success. Motion return a HTTP status code 404 if the corresponding record could not be located.

Motion renders the resulting JSON representation in the response body.

", "version": "0.0.0", - "filename": "server/api/faxQueue/index.js", + "filename": "server/api/voiceQueue/index.js", "groupTitle": "Teams" }, { @@ -34521,12 +35071,12 @@ }, { "type": "post", - "url": "/api/webbar/unhold", - "title": "unhold webrtc call", + "url": "/api/webbar/hold", + "title": "hold webrtc call", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/webbar/unhold -d '{\"sessionId\": \"\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST", + "content": "curl https://{domain}/api/webbar/hold -d '{\"sessionId\": \"\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST", "type": "json" } ], @@ -34538,7 +35088,7 @@ { "group": "Body", "type": "String", - "optional": false, + "optional": true, "field": "sessionId", "description": "" }, @@ -34559,12 +35109,12 @@ }, { "type": "post", - "url": "/api/webbar/hold", - "title": "hold webrtc call", + "url": "/api/webbar/unhold", + "title": "unhold webrtc call", "examples": [ { "title": "Example usage:", - "content": "curl https://{domain}/api/webbar/hold -d '{\"sessionId\": \"\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST", + "content": "curl https://{domain}/api/webbar/unhold -d '{\"sessionId\": \"\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST", "type": "json" } ], @@ -34576,7 +35126,7 @@ { "group": "Body", "type": "String", - "optional": true, + "optional": false, "field": "sessionId", "description": "" }, diff --git a/apidoc/api_project.js b/apidoc/api_project.js index 25764b8..e1a1791 100644 --- a/apidoc/api_project.js +++ b/apidoc/api_project.js @@ -1,6 +1,6 @@ define({ "name": "xCALLY Motion API", - "version": "2.5.50", + "version": "2.6.0", "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.", "title": "xCALLY MOTION API", "header": { @@ -17,7 +17,7 @@ define({ "apidoc": "0.3.0", "generator": { "name": "apidoc", - "time": "2022-01-30T14:58:20.398Z", + "time": "2022-01-31T20:36:43.522Z", "url": "http://apidocjs.com", "version": "0.24.0" } diff --git a/apidoc/api_project.json b/apidoc/api_project.json index f58c042..606cea9 100644 --- a/apidoc/api_project.json +++ b/apidoc/api_project.json @@ -1,6 +1,6 @@ { "name": "xCALLY Motion API", - "version": "2.5.50", + "version": "2.6.0", "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.", "title": "xCALLY MOTION API", "header": { @@ -17,7 +17,7 @@ "apidoc": "0.3.0", "generator": { "name": "apidoc", - "time": "2022-01-30T14:58:20.398Z", + "time": "2022-01-31T20:36:43.522Z", "url": "http://apidocjs.com", "version": "0.24.0" } diff --git a/package.json b/package.json index 873c51f..18b176f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "motion", - "version": "2.5.50", + "version": "2.6.0", "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.", "main": "server/app.js", "engines": { diff --git a/public/app/main/apps/contactmanager/i18n/ar.json b/public/app/main/apps/contactmanager/i18n/ar.json index 09afe5b..21b2cf3 100644 --- a/public/app/main/apps/contactmanager/i18n/ar.json +++ b/public/app/main/apps/contactmanager/i18n/ar.json @@ -184,7 +184,11 @@ "RECALLME": "عاود الاتصال بي", "ACTIONTYPE": "نوع الإجراء", "CLICKTOACTION": "انقر للعمل", + "ADDITIONAL_PHONES": "هواتف إضافية", + "UPDATE_EXISTING_CONTACTS": "تحديث جهات الاتصال الموجودة", "DIALTIMEZONE": "اطلب المنطقة الزمنية", - "TIMEZONE": "اطلب المنطقة الزمنية" + "TIMEZONE": "اطلب المنطقة الزمنية", + "MOVE_DOWN": "تحرك لأسفل", + "MOVE_UP": "تحرك" } } diff --git a/public/app/main/apps/contactmanager/i18n/cs.json b/public/app/main/apps/contactmanager/i18n/cs.json index 354420b..f1945cc 100644 --- a/public/app/main/apps/contactmanager/i18n/cs.json +++ b/public/app/main/apps/contactmanager/i18n/cs.json @@ -184,7 +184,11 @@ "VATNUMBER_CF": "Codice Fiscale / DPH", "ACTIONTYPE": "Typ akce", "CLICKTOACTION": "Klikněte na akci", + "ADDITIONAL_PHONES": "Další telefony", + "UPDATE_EXISTING_CONTACTS": "Aktualizujte stávající kontakty", "DIALTIMEZONE": "Vytočte časové pásmo", - "TIMEZONE": "Vytočit časové pásmo" + "TIMEZONE": "Vytočit časové pásmo", + "MOVE_DOWN": "Posunout dolů", + "MOVE_UP": "Posuňte se nahoru" } } diff --git a/public/app/main/apps/contactmanager/i18n/da.json b/public/app/main/apps/contactmanager/i18n/da.json index 393eeae..08fb2d4 100644 --- a/public/app/main/apps/contactmanager/i18n/da.json +++ b/public/app/main/apps/contactmanager/i18n/da.json @@ -184,7 +184,11 @@ "RECALLME": "Husk mig", "ACTIONTYPE": "Handlingstype", "CLICKTOACTION": "Klik for at handle", + "ADDITIONAL_PHONES": "Yderligere telefoner", + "UPDATE_EXISTING_CONTACTS": "Opdater eksisterende kontakter", "DIALTIMEZONE": "Ring tidszone", - "TIMEZONE": "Ring tidszone" + "TIMEZONE": "Ring tidszone", + "MOVE_DOWN": "Flyt ned", + "MOVE_UP": "Flyt op" } } diff --git a/public/app/main/apps/contactmanager/i18n/de.json b/public/app/main/apps/contactmanager/i18n/de.json index 08a7201..c3d27cc 100644 --- a/public/app/main/apps/contactmanager/i18n/de.json +++ b/public/app/main/apps/contactmanager/i18n/de.json @@ -184,7 +184,11 @@ "RECALLME": "Rückruf anfordern", "ACTIONTYPE": "Aktionstyp", "CLICKTOACTION": "Klicken für Aktion", + "ADDITIONAL_PHONES": "Zusätzliche Telefone", + "UPDATE_EXISTING_CONTACTS": "Bestehende Kontakte aktualisieren", "DIALTIMEZONE": "Zeitzone wählen", - "TIMEZONE": "Zeitzone wählen" + "TIMEZONE": "Zeitzone wählen", + "MOVE_DOWN": "Sich abwärts bewegen", + "MOVE_UP": "Bewegen Sie sich nach oben" } } diff --git a/public/app/main/apps/contactmanager/i18n/en.json b/public/app/main/apps/contactmanager/i18n/en.json index 72e1a02..b700161 100644 --- a/public/app/main/apps/contactmanager/i18n/en.json +++ b/public/app/main/apps/contactmanager/i18n/en.json @@ -17,6 +17,8 @@ "STARTTIME": "Start Time", "ENDTIME": "End Time", "MOTION_BULL": "Motion Bull", + "MOVE_DOWN": "Move down", + "MOVE_UP": "Move up", "HOPPER": "Hopper", "FINAL": "Hopper Final", "HISTORY": "Hopper History", @@ -29,9 +31,11 @@ "DELETE_LIST": "Delete List", "DELETE_HOPPER": "Delete Hopper", "RELOAD": "Reload", + "ADDITIONAL_PHONES": "Additional phones", "NO_COMPANIES": "No Company", "NO_AVAILABLE_ITEMS": "No Available Items", "ADD": "Add", + "UPDATE_EXISTING_CONTACTS": "Update existing contacts", "ERRORS": { "NAME_REQUIRED": "Mandatory field", "FIRSTNAME_REQUIRED": "Mandatory field", diff --git a/public/app/main/apps/contactmanager/i18n/es.json b/public/app/main/apps/contactmanager/i18n/es.json index 276f40d..59f4c4e 100644 --- a/public/app/main/apps/contactmanager/i18n/es.json +++ b/public/app/main/apps/contactmanager/i18n/es.json @@ -184,7 +184,11 @@ "RECALLME": "Recordarme", "ACTIONTYPE": "Tipo de acción", "CLICKTOACTION": "Click para actuar", + "ADDITIONAL_PHONES": "Teléfonos adicionales", + "UPDATE_EXISTING_CONTACTS": "Actualizar contactos existentes", "DIALTIMEZONE": "Marcar zona horaria", - "TIMEZONE": "Marcar zona horaria" + "TIMEZONE": "Marcar zona horaria", + "MOVE_DOWN": "Mover hacia abajo", + "MOVE_UP": "Ascender" } } diff --git a/public/app/main/apps/contactmanager/i18n/et.json b/public/app/main/apps/contactmanager/i18n/et.json index b8e9ddc..2592ba3 100644 --- a/public/app/main/apps/contactmanager/i18n/et.json +++ b/public/app/main/apps/contactmanager/i18n/et.json @@ -184,7 +184,11 @@ "VATNUMBER_CF": "Codice Fiscale / käibemaks", "ACTIONTYPE": "Toimingu tüüp", "CLICKTOACTION": "Klõpsake toimimiseks", + "ADDITIONAL_PHONES": "Täiendavad telefonid", + "UPDATE_EXISTING_CONTACTS": "Värskendage olemasolevaid kontakte", "DIALTIMEZONE": "Vali ajavöönd", - "TIMEZONE": "Vali ajavöönd" + "TIMEZONE": "Vali ajavöönd", + "MOVE_DOWN": "Liigu alla", + "MOVE_UP": "Üles liikuma" } } diff --git a/public/app/main/apps/contactmanager/i18n/fa.json b/public/app/main/apps/contactmanager/i18n/fa.json index 3151e71..ee7f8d8 100644 --- a/public/app/main/apps/contactmanager/i18n/fa.json +++ b/public/app/main/apps/contactmanager/i18n/fa.json @@ -184,7 +184,11 @@ "RECALLME": "مرا بخاطر بسپار", "ACTIONTYPE": "نوع اقدام", "CLICKTOACTION": "برای اقدام کلیک کنید", + "ADDITIONAL_PHONES": "تلفن های اضافی", + "UPDATE_EXISTING_CONTACTS": "مخاطبین موجود را به روز کنید", "DIALTIMEZONE": "منطقه زمانی را شماره گیری کنید", - "TIMEZONE": "منطقه زمانی را شماره گیری کنید" + "TIMEZONE": "منطقه زمانی را شماره گیری کنید", + "MOVE_DOWN": "حرکت به پایین", + "MOVE_UP": "حرکت به بالا" } } diff --git a/public/app/main/apps/contactmanager/i18n/fi.json b/public/app/main/apps/contactmanager/i18n/fi.json index 5ee98e9..612c187 100644 --- a/public/app/main/apps/contactmanager/i18n/fi.json +++ b/public/app/main/apps/contactmanager/i18n/fi.json @@ -184,7 +184,11 @@ "RECALLME": "Muista minut", "ACTIONTYPE": "Toiminnan tyyppi", "CLICKTOACTION": "Napsauta toimintaan", + "ADDITIONAL_PHONES": "Muut puhelimet", + "UPDATE_EXISTING_CONTACTS": "Päivitä olemassa olevat yhteystiedot", "DIALTIMEZONE": "Valitse aikavyöhyke", - "TIMEZONE": "Valitse aikavyöhyke" + "TIMEZONE": "Valitse aikavyöhyke", + "MOVE_DOWN": "Siirry alas", + "MOVE_UP": "Liiku ylös" } } diff --git a/public/app/main/apps/contactmanager/i18n/fr.json b/public/app/main/apps/contactmanager/i18n/fr.json index 6094086..750f726 100644 --- a/public/app/main/apps/contactmanager/i18n/fr.json +++ b/public/app/main/apps/contactmanager/i18n/fr.json @@ -184,7 +184,11 @@ "RECALLME": "Rappelle-moi", "ACTIONTYPE": "Type d'action", "CLICKTOACTION": "Cliquez pour agir", + "ADDITIONAL_PHONES": "Téléphones supplémentaires", + "UPDATE_EXISTING_CONTACTS": "Mettre à jour les contacts existants", "DIALTIMEZONE": "Composer le fuseau horaire", - "TIMEZONE": "Composer le fuseau horaire" + "TIMEZONE": "Composer le fuseau horaire", + "MOVE_DOWN": "Descendre", + "MOVE_UP": "Déplacer vers le haut" } } diff --git a/public/app/main/apps/contactmanager/i18n/he.json b/public/app/main/apps/contactmanager/i18n/he.json index 4c73a3e..3835597 100644 --- a/public/app/main/apps/contactmanager/i18n/he.json +++ b/public/app/main/apps/contactmanager/i18n/he.json @@ -184,7 +184,11 @@ "RECALLME": "חייג אליי", "ACTIONTYPE": "סוג פעולה", "CLICKTOACTION": "לחץ לפעולה", + "ADDITIONAL_PHONES": "טלפונים נוספים", + "UPDATE_EXISTING_CONTACTS": "עדכן אנשי קשר קיימים", "DIALTIMEZONE": "חייג אזור זמן", - "TIMEZONE": "חייג אזור זמן" + "TIMEZONE": "חייג אזור זמן", + "MOVE_DOWN": "לרדת", + "MOVE_UP": "לזוז למעלה" } } diff --git a/public/app/main/apps/contactmanager/i18n/hi.json b/public/app/main/apps/contactmanager/i18n/hi.json index 191df65..68bf074 100644 --- a/public/app/main/apps/contactmanager/i18n/hi.json +++ b/public/app/main/apps/contactmanager/i18n/hi.json @@ -184,7 +184,11 @@ "RECALLME": "मुझे याद करो", "ACTIONTYPE": "प्रक्रिया का प्रकार", "CLICKTOACTION": "कार्रवाई के लिए क्लिक करें", + "ADDITIONAL_PHONES": "अतिरिक्त फोन", + "UPDATE_EXISTING_CONTACTS": "मौजूदा संपर्कों को अपडेट करें", "DIALTIMEZONE": "डायल टाइमज़ोन", - "TIMEZONE": "डायल टाइमज़ोन" + "TIMEZONE": "डायल टाइमज़ोन", + "MOVE_DOWN": "नीचे की ओर", + "MOVE_UP": "बढ़ाना" } } diff --git a/public/app/main/apps/contactmanager/i18n/hu.json b/public/app/main/apps/contactmanager/i18n/hu.json index 6091c24..fb81f68 100644 --- a/public/app/main/apps/contactmanager/i18n/hu.json +++ b/public/app/main/apps/contactmanager/i18n/hu.json @@ -191,6 +191,10 @@ "JSCRIPTY_GET_ERROR": "Unable to retrieve any Jscripty project" }, "DIALTIMEZONE": "Tárcsázza az időzónát", - "TIMEZONE": "Tárcsázza az időzónát" + "TIMEZONE": "Tárcsázza az időzónát", + "ADDITIONAL_PHONES": "További telefonok", + "MOVE_DOWN": "Mozgás lefelé", + "MOVE_UP": "Lépj felfelé", + "UPDATE_EXISTING_CONTACTS": "Frissítse a meglévő kapcsolatokat" } } diff --git a/public/app/main/apps/contactmanager/i18n/id.json b/public/app/main/apps/contactmanager/i18n/id.json index d469a00..3d6b77c 100644 --- a/public/app/main/apps/contactmanager/i18n/id.json +++ b/public/app/main/apps/contactmanager/i18n/id.json @@ -184,7 +184,11 @@ "RECALLME": "Ingat Saya", "ACTIONTYPE": "Tipe aksi", "CLICKTOACTION": "Klik untuk bertindak", + "ADDITIONAL_PHONES": "Telepon tambahan", + "UPDATE_EXISTING_CONTACTS": "Perbarui kontak yang ada", "DIALTIMEZONE": "Putar Zona Waktu", - "TIMEZONE": "Putar Zona Waktu" + "TIMEZONE": "Putar Zona Waktu", + "MOVE_DOWN": "Turunkan", + "MOVE_UP": "Naik" } } diff --git a/public/app/main/apps/contactmanager/i18n/it.json b/public/app/main/apps/contactmanager/i18n/it.json index 48f8386..4f5c210 100644 --- a/public/app/main/apps/contactmanager/i18n/it.json +++ b/public/app/main/apps/contactmanager/i18n/it.json @@ -191,6 +191,10 @@ "ACCOUNTS_GET_ERROR": "Impossibile recuperare gli account {{channel}}", "JSCRIPTY_GET_ERROR": "Impossibile recuperare i progetti Jscripty" }, - "TIMEZONE": "Componi il fuso orario" + "ADDITIONAL_PHONES": "Telefoni aggiuntivi", + "UPDATE_EXISTING_CONTACTS": "Aggiorna i contatti esistenti", + "TIMEZONE": "Componi il fuso orario", + "MOVE_DOWN": "Abbassati", + "MOVE_UP": "Andare avanti" } } diff --git a/public/app/main/apps/contactmanager/i18n/ja.json b/public/app/main/apps/contactmanager/i18n/ja.json index 8f94175..cd965cf 100644 --- a/public/app/main/apps/contactmanager/i18n/ja.json +++ b/public/app/main/apps/contactmanager/i18n/ja.json @@ -184,7 +184,11 @@ "RECALLME": "私を思い出して", "ACTIONTYPE": "アクションタイプ", "CLICKTOACTION": "クリックしてアクション", + "ADDITIONAL_PHONES": "追加の電話", + "UPDATE_EXISTING_CONTACTS": "既存の連絡先を更新する", "DIALTIMEZONE": "タイムゾーンをダイヤルする", - "TIMEZONE": "タイムゾーンをダイヤルする" + "TIMEZONE": "タイムゾーンをダイヤルする", + "MOVE_DOWN": "下に移動", + "MOVE_UP": "上に移動" } } diff --git a/public/app/main/apps/contactmanager/i18n/ko.json b/public/app/main/apps/contactmanager/i18n/ko.json index 0644770..289a1d1 100644 --- a/public/app/main/apps/contactmanager/i18n/ko.json +++ b/public/app/main/apps/contactmanager/i18n/ko.json @@ -184,7 +184,11 @@ "RECALLME": "저를 기억하십시오", "ACTIONTYPE": "액션 유형", "CLICKTOACTION": "클릭하여 실행", + "ADDITIONAL_PHONES": "추가 전화", + "UPDATE_EXISTING_CONTACTS": "기존 연락처 업데이트", "DIALTIMEZONE": "다이얼 타임존", - "TIMEZONE": "다이얼 타임존" + "TIMEZONE": "다이얼 타임존", + "MOVE_DOWN": "아래로 이동", + "MOVE_UP": "이동" } } diff --git a/public/app/main/apps/contactmanager/i18n/lt.json b/public/app/main/apps/contactmanager/i18n/lt.json index 482b36a..bdb4f2d 100644 --- a/public/app/main/apps/contactmanager/i18n/lt.json +++ b/public/app/main/apps/contactmanager/i18n/lt.json @@ -184,7 +184,11 @@ "RECALLME": "Prisimink mane", "ACTIONTYPE": "Veiksmo tipas", "CLICKTOACTION": "Spustelėkite, kad veiktumėte", + "ADDITIONAL_PHONES": "Papildomi telefonai", + "UPDATE_EXISTING_CONTACTS": "Atnaujinkite esamus kontaktus", "DIALTIMEZONE": "Surinkite laiko juostą", - "TIMEZONE": "Surinkite laiko juostą" + "TIMEZONE": "Surinkite laiko juostą", + "MOVE_DOWN": "Judėk žemyn", + "MOVE_UP": "Judėti aukštyn" } } diff --git a/public/app/main/apps/contactmanager/i18n/lv.json b/public/app/main/apps/contactmanager/i18n/lv.json index 118307a..2a0a532 100644 --- a/public/app/main/apps/contactmanager/i18n/lv.json +++ b/public/app/main/apps/contactmanager/i18n/lv.json @@ -184,7 +184,11 @@ "RECALLME": "Atsaukt mani", "ACTIONTYPE": "Darbības veids", "CLICKTOACTION": "Noklikšķiniet uz darbības", + "ADDITIONAL_PHONES": "Papildu tālruņi", + "UPDATE_EXISTING_CONTACTS": "Atjauniniet esošās kontaktpersonas", "DIALTIMEZONE": "Sastādiet laika joslu", - "TIMEZONE": "Sastādiet laika joslu" + "TIMEZONE": "Sastādiet laika joslu", + "MOVE_DOWN": "Pārvietojieties uz leju", + "MOVE_UP": "Pārvietojieties uz augšu" } } diff --git a/public/app/main/apps/contactmanager/i18n/nl.json b/public/app/main/apps/contactmanager/i18n/nl.json index 341ce0a..caf032b 100644 --- a/public/app/main/apps/contactmanager/i18n/nl.json +++ b/public/app/main/apps/contactmanager/i18n/nl.json @@ -184,7 +184,11 @@ "RECALLME": "Herinner me", "ACTIONTYPE": "Actie type", "CLICKTOACTION": "Klik voor actie", + "ADDITIONAL_PHONES": "Extra telefoons", + "UPDATE_EXISTING_CONTACTS": "Bestaande contacten bijwerken", "DIALTIMEZONE": "Kies tijdzone", - "TIMEZONE": "Kies tijdzone" + "TIMEZONE": "Kies tijdzone", + "MOVE_DOWN": "Naar beneden verplaatsen", + "MOVE_UP": "Omhoog gaan" } } diff --git a/public/app/main/apps/contactmanager/i18n/no.json b/public/app/main/apps/contactmanager/i18n/no.json index a0b3be3..033049e 100644 --- a/public/app/main/apps/contactmanager/i18n/no.json +++ b/public/app/main/apps/contactmanager/i18n/no.json @@ -184,7 +184,11 @@ "RECALLME": "Husk meg", "ACTIONTYPE": "Handlingstype", "CLICKTOACTION": "Klikk for å handle", + "ADDITIONAL_PHONES": "Ekstra telefoner", + "UPDATE_EXISTING_CONTACTS": "Oppdater eksisterende kontakter", "DIALTIMEZONE": "Ring tidssone", - "TIMEZONE": "Ring tidssone" + "TIMEZONE": "Ring tidssone", + "MOVE_DOWN": "Flytt ned", + "MOVE_UP": "Flytte opp" } } diff --git a/public/app/main/apps/contactmanager/i18n/pl.json b/public/app/main/apps/contactmanager/i18n/pl.json index 07a2628..582fea4 100644 --- a/public/app/main/apps/contactmanager/i18n/pl.json +++ b/public/app/main/apps/contactmanager/i18n/pl.json @@ -184,7 +184,11 @@ "RECALLME": "Przypomnij mi", "ACTIONTYPE": "Rodzaj działania", "CLICKTOACTION": "Kliknij, aby wykonać czynność", + "ADDITIONAL_PHONES": "Dodatkowe telefony", + "UPDATE_EXISTING_CONTACTS": "Zaktualizuj istniejące kontakty", "DIALTIMEZONE": "Wybierz strefę czasową", - "TIMEZONE": "Wybierz strefę czasową" + "TIMEZONE": "Wybierz strefę czasową", + "MOVE_DOWN": "Padnij", + "MOVE_UP": "Podnieść" } } diff --git a/public/app/main/apps/contactmanager/i18n/pt-BR.json b/public/app/main/apps/contactmanager/i18n/pt-BR.json index fdf4d0d..b84d6b8 100644 --- a/public/app/main/apps/contactmanager/i18n/pt-BR.json +++ b/public/app/main/apps/contactmanager/i18n/pt-BR.json @@ -184,7 +184,11 @@ "RECALLME": "Lembre-me", "ACTIONTYPE": "Tipo de acão", "CLICKTOACTION": "Clique para ação", + "ADDITIONAL_PHONES": "Telefones adicionais", + "UPDATE_EXISTING_CONTACTS": "Atualizar contatos existentes", "DIALTIMEZONE": "Disque fuso horário", - "TIMEZONE": "Disque fuso horário" + "TIMEZONE": "Disque fuso horário", + "MOVE_DOWN": "Mover para baixo", + "MOVE_UP": "Subir" } } diff --git a/public/app/main/apps/contactmanager/i18n/pt-PT.json b/public/app/main/apps/contactmanager/i18n/pt-PT.json index ecea40f..1b7999f 100644 --- a/public/app/main/apps/contactmanager/i18n/pt-PT.json +++ b/public/app/main/apps/contactmanager/i18n/pt-PT.json @@ -184,7 +184,11 @@ "RECALLME": "Lembre-me", "ACTIONTYPE": "Tipo de acão", "CLICKTOACTION": "Clique para ação", + "ADDITIONAL_PHONES": "Telefones adicionais", + "UPDATE_EXISTING_CONTACTS": "Atualizar contatos existentes", "DIALTIMEZONE": "Disque fuso horário", - "TIMEZONE": "Disque fuso horário" + "TIMEZONE": "Disque fuso horário", + "MOVE_DOWN": "Mover para baixo", + "MOVE_UP": "Subir" } } diff --git a/public/app/main/apps/contactmanager/i18n/ru.json b/public/app/main/apps/contactmanager/i18n/ru.json index 6f75b78..4917f25 100644 --- a/public/app/main/apps/contactmanager/i18n/ru.json +++ b/public/app/main/apps/contactmanager/i18n/ru.json @@ -184,7 +184,11 @@ "RECALLME": "Вспомни меня", "ACTIONTYPE": "Тип действия", "CLICKTOACTION": "Нажмите, чтобы действовать", + "ADDITIONAL_PHONES": "Дополнительные телефоны", + "UPDATE_EXISTING_CONTACTS": "Обновить существующие контакты", "DIALTIMEZONE": "Часовой пояс набора", - "TIMEZONE": "Часовой пояс набора" + "TIMEZONE": "Часовой пояс набора", + "MOVE_DOWN": "Вниз", + "MOVE_UP": "Вверх" } } diff --git a/public/app/main/apps/contactmanager/i18n/sv.json b/public/app/main/apps/contactmanager/i18n/sv.json index fc2306f..c592fac 100644 --- a/public/app/main/apps/contactmanager/i18n/sv.json +++ b/public/app/main/apps/contactmanager/i18n/sv.json @@ -184,7 +184,11 @@ "RECALLME": "Kom ihåg mig", "ACTIONTYPE": "Åtgärdstyp", "CLICKTOACTION": "Klicka för att åtgärda", + "ADDITIONAL_PHONES": "Ytterligare telefoner", + "UPDATE_EXISTING_CONTACTS": "Uppdatera befintliga kontakter", "DIALTIMEZONE": "Ring tidszon", - "TIMEZONE": "Ring tidszon" + "TIMEZONE": "Ring tidszon", + "MOVE_DOWN": "Flytta ner", + "MOVE_UP": "Flytta upp" } } diff --git a/public/app/main/apps/contactmanager/i18n/tr.json b/public/app/main/apps/contactmanager/i18n/tr.json index 8fdad71..02d143b 100644 --- a/public/app/main/apps/contactmanager/i18n/tr.json +++ b/public/app/main/apps/contactmanager/i18n/tr.json @@ -184,7 +184,11 @@ "RECALLME": "Beni hatırla", "ACTIONTYPE": "Eylem Türü", "CLICKTOACTION": "İşlem yapmak için tıklayın", + "ADDITIONAL_PHONES": "Ek telefonlar", + "UPDATE_EXISTING_CONTACTS": "Mevcut kişileri güncelle", "DIALTIMEZONE": "Arama Saat Dilimi", - "TIMEZONE": "Arama Saat Dilimi" + "TIMEZONE": "Arama Saat Dilimi", + "MOVE_DOWN": "Aşağı inmek", + "MOVE_UP": "yukarı taşı" } } diff --git a/public/app/main/apps/contactmanager/i18n/zh-CN.json b/public/app/main/apps/contactmanager/i18n/zh-CN.json index 3e96307..effe3d3 100644 --- a/public/app/main/apps/contactmanager/i18n/zh-CN.json +++ b/public/app/main/apps/contactmanager/i18n/zh-CN.json @@ -184,7 +184,11 @@ "RECALLME": "召回我", "ACTIONTYPE": "动作类型", "CLICKTOACTION": "点击操作", + "ADDITIONAL_PHONES": "附加电话", + "UPDATE_EXISTING_CONTACTS": "更新现有联系人", "DIALTIMEZONE": "拨号时区", - "TIMEZONE": "拨号时区" + "TIMEZONE": "拨号时区", + "MOVE_DOWN": "下移", + "MOVE_UP": "提升" } } diff --git a/public/app/main/apps/contactmanager/i18n/zh-TW.json b/public/app/main/apps/contactmanager/i18n/zh-TW.json index da088ea..85b0226 100644 --- a/public/app/main/apps/contactmanager/i18n/zh-TW.json +++ b/public/app/main/apps/contactmanager/i18n/zh-TW.json @@ -184,7 +184,11 @@ "RECALLME": "召回我", "ACTIONTYPE": "動作類型", "CLICKTOACTION": "點擊操作", + "ADDITIONAL_PHONES": "附加電話", + "UPDATE_EXISTING_CONTACTS": "更新現有聯繫人", "DIALTIMEZONE": "撥號時區", - "TIMEZONE": "撥號時區" + "TIMEZONE": "撥號時區", + "MOVE_DOWN": "下移", + "MOVE_UP": "提升" } } diff --git a/public/app/main/apps/motiondialer/i18n/ar.json b/public/app/main/apps/motiondialer/i18n/ar.json index 4e3fd63..5df0847 100644 --- a/public/app/main/apps/motiondialer/i18n/ar.json +++ b/public/app/main/apps/motiondialer/i18n/ar.json @@ -104,7 +104,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "مكالمة add.phone بعد دقيقة. يجب أن تكون أكبر من أو تساوي", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "حقل الزامي" }, "HELP": { "ACTIVE": "نشيط", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "تسجيل الشاشة في التقدم", "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني", "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث", + "ADDITIONALPHONES": "هواتف إضافية", + "CALLADDITIONALPHONEAFTERMIN": "الاتصال بهاتف إضافي بعد [دقيقة]", "PREVIEW_AUTO_RECALL_ME": "أتمتة تذكرني المكالمات", "PREVIEW_RECALL_ME_REMINDER": "أذكرني تذكير" } diff --git a/public/app/main/apps/motiondialer/i18n/cs.json b/public/app/main/apps/motiondialer/i18n/cs.json index e574fd2..0ae115b 100644 --- a/public/app/main/apps/motiondialer/i18n/cs.json +++ b/public/app/main/apps/motiondialer/i18n/cs.json @@ -239,7 +239,9 @@ "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna", "NOSUCHNUMBERMAXRETRY_REQUIRED": "Povinné pole", "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna", - "NOSUCHNUMBERRETRYTIME_REQUIRED": "Povinné pole" + "NOSUCHNUMBERRETRYTIME_REQUIRED": "Povinné pole", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Volejte add.phone po min. by měla být větší nebo rovna", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Povinné pole" }, "GENERAL": "General", "AGENTTIMEOUT": "Agent Timeout", @@ -690,6 +692,8 @@ "NOSUCHNUMBERRETRYTIME": "Čas opakování [min]", "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně", "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně", + "ADDITIONALPHONES": "Další telefony", + "CALLADDITIONALPHONEAFTERMIN": "Zavolat další telefon po [min]", "PREVIEW_AUTO_RECALL_ME": "Automatizujte volání Recall Me", "PREVIEW_RECALL_ME_REMINDER": "Recall Me Reminder" } diff --git a/public/app/main/apps/motiondialer/i18n/da.json b/public/app/main/apps/motiondialer/i18n/da.json index 3a61d1a..e6aa4fc 100644 --- a/public/app/main/apps/motiondialer/i18n/da.json +++ b/public/app/main/apps/motiondialer/i18n/da.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Opkald tilføj. Telefon efter min. skal være større end eller lig med", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Obligatorisk felt" }, "GENERAL": "Generel", "AGENTTIMEOUT": "Agent Timeout", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Skærmoptagelse pågår", "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition", "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition", + "ADDITIONALPHONES": "Yderligere telefoner", + "CALLADDITIONALPHONEAFTERMIN": "Ring til yderligere telefon efter [min]", "PREVIEW_AUTO_RECALL_ME": "Automatiser Call Me-opkald", "PREVIEW_RECALL_ME_REMINDER": "Husk mig påmindelse" } diff --git a/public/app/main/apps/motiondialer/i18n/de.json b/public/app/main/apps/motiondialer/i18n/de.json index da12bbf..3c09c82 100644 --- a/public/app/main/apps/motiondialer/i18n/de.json +++ b/public/app/main/apps/motiondialer/i18n/de.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei Anrufbeantworter muss kleiner oder gleich sein als", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit bei Anrufbeantworter muss kleiner oder gleich sein als", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei falscher Nummer muss kleiner oder gleich sein als", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit bei falscher Nummer muss kleiner oder gleich sein als" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit bei falscher Nummer muss kleiner oder gleich sein als", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Rufen Sie add.phone nach min. sollte größer oder gleich sein", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Pflichtfeld" }, "GENERAL": "Allgemein", "AGENTTIMEOUT": "Zeitüberschreitung Agent", @@ -692,6 +694,8 @@ "SECOND_LEVEL_DISPOSITION": "Qualifizierung 2. Ebene", "THIRD_LEVEL_DISPOSITION": "Qualifikation 3. Ebene", "PREVIEW_AUTO_RECALL_ME": "Rückrufe automatisieren", - "PREVIEW_RECALL_ME_REMINDER": "Recall Me Erinnerung" + "PREVIEW_RECALL_ME_REMINDER": "Recall Me Erinnerung", + "ADDITIONALPHONES": "Zusätzliche Telefone", + "CALLADDITIONALPHONEAFTERMIN": "Weiteres Telefon anrufen nach [min]" } } diff --git a/public/app/main/apps/motiondialer/i18n/en.json b/public/app/main/apps/motiondialer/i18n/en.json index f84c475..6b63309 100644 --- a/public/app/main/apps/motiondialer/i18n/en.json +++ b/public/app/main/apps/motiondialer/i18n/en.json @@ -153,11 +153,6 @@ "NOANSWER": "No Answer", "NOANSWERMAXRETRY": "Max Retries", "NOANSWERRETRYTIME": "Retry Time [min]", - "QUEUE_PARAMS": "Queue Parameters", - "ORIGINATED": "Originated", - "MESSAGE": "Message", - "DROPPED": "Dropped", - "CREATED_AT": "Created At", "NOSUCHNUMBER": "No such number", "NOSUCHNUMBERMAXRETRY": "Max Retries", "NOSUCHNUMBERRETRYTIME": "Retry Time [min]", @@ -172,6 +167,13 @@ "AGENTREJECT": "Agent Reject", "AGENTREJECTMAXRETRY": "Max Retries", "AGENTREJECTRETRYTIME": "Retry Time [min]", + "CALLADDITIONALPHONEAFTERMIN": "Call additional phone after [min]", + "ADDITIONALPHONES": "Additional phones", + "QUEUE_PARAMS": "Queue Parameters", + "ORIGINATED": "Originated", + "MESSAGE": "Message", + "DROPPED": "Dropped", + "CREATED_AT": "Created At", "LEGEND": { "CUSTOM_APPLICATION": "(*) - Custom application." }, @@ -276,7 +278,9 @@ "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to", "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field", "CALLYSQUAREPROJECT_REQUIRED": "Mandatory field", - "TRUNK_REQUIRED": "Mandatory field" + "TRUNK_REQUIRED": "Mandatory field", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Mandatory field", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Call add.phone after min. should be greater than or equal to" }, "GENERAL": "General", "AGENTTIMEOUT": "Agent Timeout", @@ -372,8 +376,6 @@ "BUSYRETRYTIME": "Time in minutes before trying to call again a failed contact due to busy", "NOANSWERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no answer", "NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer", - "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations", - "NAME": "Only numbers, letters and specific characters (._) are supported", "NOSUCHNUMBERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no such number", "NOSUCHNUMBERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no such number", "DROPMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for drop", @@ -384,6 +386,9 @@ "MACHINERETRYTIME": "Time in minutes before trying to call again a failed contact due to machine", "AGENTREJECTMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for agent reject", "AGENTREJECTRETRYTIME": "Time in minutes before trying to call again a failed contact due to agent reject", + "CALLADDITIONALPHONEAFTERMIN": "", + "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations", + "NAME": "Only numbers, letters and specific characters (._) are supported", "MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition", "PREVIEW_AUTO_RECALL_ME": "If enabled, the system will automatically generate the Recall Me calls; otherwise, the agent must do it manually" }, diff --git a/public/app/main/apps/motiondialer/i18n/es.json b/public/app/main/apps/motiondialer/i18n/es.json index 49be9bc..b805412 100644 --- a/public/app/main/apps/motiondialer/i18n/es.json +++ b/public/app/main/apps/motiondialer/i18n/es.json @@ -206,7 +206,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Llamar al teléfono adicional después de min. debe ser mayor o igual a", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Campo obligatorio" }, "ABANDONED": "Abandonado", "ABANDONEDCALLS": "Llamadas de cola abandonadas", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Grabación de pantalla en progreso", "SECOND_LEVEL_DISPOSITION": "Tipficación de segundo nivel", "THIRD_LEVEL_DISPOSITION": "Tipificación de tercer nivel", + "ADDITIONALPHONES": "Teléfonos adicionales", + "CALLADDITIONALPHONEAFTERMIN": "Llamar a otro teléfono después de [min]", "PREVIEW_AUTO_RECALL_ME": "Automatizar las llamadas de Recall Me", "PREVIEW_RECALL_ME_REMINDER": "Recordarme recordatorio" } diff --git a/public/app/main/apps/motiondialer/i18n/et.json b/public/app/main/apps/motiondialer/i18n/et.json index a91cc7b..96861de 100644 --- a/public/app/main/apps/motiondialer/i18n/et.json +++ b/public/app/main/apps/motiondialer/i18n/et.json @@ -239,7 +239,9 @@ "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne", "NOSUCHNUMBERMAXRETRY_REQUIRED": "Kohustuslik väli", "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne", - "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli" + "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Helista lisa.telefon pärast min. peaks olema suurem või võrdne", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Kohustuslik väli" }, "GENERAL": "General", "AGENTTIMEOUT": "Agent Timeout", @@ -690,6 +692,8 @@ "NOSUCHNUMBERRETRYTIME": "Uuesti proovimise aeg [min]", "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus", "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus", + "ADDITIONALPHONES": "Täiendavad telefonid", + "CALLADDITIONALPHONEAFTERMIN": "Helistage täiendavale telefonile pärast [min]", "PREVIEW_AUTO_RECALL_ME": "Automatiseerige Call Me kõned", "PREVIEW_RECALL_ME_REMINDER": "Tuleta mulle meelde" } diff --git a/public/app/main/apps/motiondialer/i18n/fa.json b/public/app/main/apps/motiondialer/i18n/fa.json index 9bbd864..79cad1d 100644 --- a/public/app/main/apps/motiondialer/i18n/fa.json +++ b/public/app/main/apps/motiondialer/i18n/fa.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "بعد از دقیقه با add.phone تماس بگیرید باید بزرگتر یا مساوی باشد", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "زمینه اجباری" }, "GENERAL": "سردار", "AGENTTIMEOUT": "عامل زمان مجاز", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "ضبط صفحه در حال انجام است", "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم", "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم", + "ADDITIONALPHONES": "تلفن های اضافی", + "CALLADDITIONALPHONEAFTERMIN": "بعد از [دقیقه] با تلفن اضافی تماس بگیرید", "PREVIEW_AUTO_RECALL_ME": "تماس‌های Recall Me را خودکار کنید", "PREVIEW_RECALL_ME_REMINDER": "Recall Me Reminder" } diff --git a/public/app/main/apps/motiondialer/i18n/fi.json b/public/app/main/apps/motiondialer/i18n/fi.json index b4368b1..c2eb3f0 100644 --- a/public/app/main/apps/motiondialer/i18n/fi.json +++ b/public/app/main/apps/motiondialer/i18n/fi.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Soita lisäpuhelimeen min. pitäisi olla suurempi tai yhtä suuri kuin", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Pakollinen kenttä" }, "GENERAL": "Yleistä", "AGENTTIMEOUT": "Agentti aikakatkaisu", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Näytön nauhoitus käynnissä", "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus", "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus", + "ADDITIONALPHONES": "Muut puhelimet", + "CALLADDITIONALPHONEAFTERMIN": "Soita lisäpuhelimeen [min] jälkeen", "PREVIEW_AUTO_RECALL_ME": "Automatisoi Recall Me -puhelut", "PREVIEW_RECALL_ME_REMINDER": "Recall Me Reminder" } diff --git a/public/app/main/apps/motiondialer/i18n/fr.json b/public/app/main/apps/motiondialer/i18n/fr.json index 0ad4251..5327034 100644 --- a/public/app/main/apps/motiondialer/i18n/fr.json +++ b/public/app/main/apps/motiondialer/i18n/fr.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Appelez add.phone après min. doit être supérieur ou égal à", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Champ obligatoire" }, "GENERAL": "Général", "AGENTTIMEOUT": "Délai d'agent", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Enregistrement d'écran en cours", "SECOND_LEVEL_DISPOSITION": "Disposition de deuxième niveau", "THIRD_LEVEL_DISPOSITION": "Disposition de troisième niveau", + "ADDITIONALPHONES": "Téléphones supplémentaires", + "CALLADDITIONALPHONEAFTERMIN": "Appeler un autre téléphone après [min]", "PREVIEW_AUTO_RECALL_ME": "Automatisez les appels de rappel", "PREVIEW_RECALL_ME_REMINDER": "Rappel de moi" } diff --git a/public/app/main/apps/motiondialer/i18n/he.json b/public/app/main/apps/motiondialer/i18n/he.json index c077fac..9fabbbe 100644 --- a/public/app/main/apps/motiondialer/i18n/he.json +++ b/public/app/main/apps/motiondialer/i18n/he.json @@ -239,7 +239,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "התקשרו add.phone לאחר דקות. צריך להיות גדול או שווה ל", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "שדה חובה" }, "GENERAL": "כללי", "AGENTTIMEOUT": "סוף זמן המתנה לנציג", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "הקלטת מסך מתבצעת", "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה", "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית", + "ADDITIONALPHONES": "טלפונים נוספים", + "CALLADDITIONALPHONEAFTERMIN": "התקשר לטלפון נוסף לאחר [דקה]", "PREVIEW_AUTO_RECALL_ME": "אוטומציה של שיחות Recall Me", "PREVIEW_RECALL_ME_REMINDER": "תזכורת לזכר אותי" } diff --git a/public/app/main/apps/motiondialer/i18n/hi.json b/public/app/main/apps/motiondialer/i18n/hi.json index ab897ad..08a242a 100644 --- a/public/app/main/apps/motiondialer/i18n/hi.json +++ b/public/app/main/apps/motiondialer/i18n/hi.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "मिनट के बाद add.phone पर कॉल करें। से बड़ा या बराबर होना चाहिए", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "आवश्यक स्थान" }, "GENERAL": "सामान्य", "AGENTTIMEOUT": "एजेंट समयबाह्य", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "स्क्रीन रिकॉर्डिंग प्रगति पर है", "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद", "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद", + "ADDITIONALPHONES": "अतिरिक्त फोन", + "CALLADDITIONALPHONEAFTERMIN": "[मिनट] के बाद अतिरिक्त फ़ोन पर कॉल करें", "PREVIEW_AUTO_RECALL_ME": "स्वचालित रिकॉल मी कॉल", "PREVIEW_RECALL_ME_REMINDER": "रिकॉल मी रिमाइंडर" } diff --git a/public/app/main/apps/motiondialer/i18n/hu.json b/public/app/main/apps/motiondialer/i18n/hu.json index 02b6231..9998df8 100644 --- a/public/app/main/apps/motiondialer/i18n/hu.json +++ b/public/app/main/apps/motiondialer/i18n/hu.json @@ -275,7 +275,9 @@ "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to", "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field", "CALLYSQUAREPROJECT_REQUIRED": "Mandatory field", - "TRUNK_REQUIRED": "Mandatory field" + "TRUNK_REQUIRED": "Mandatory field", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Hívja az add.phone-t min. nagyobbnak vagy egyenlőnek kell lennie, mint", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Kötelezően kitöltendő mező" }, "GENERAL": "General", "AGENTTIMEOUT": "Agent Timeout", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress", "TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available", "PREVIEW_AUTO_RECALL_ME": "Automate Recall Me calls", - "PREVIEW_RECALL_ME_REMINDER": "Recall Me Reminder" + "PREVIEW_RECALL_ME_REMINDER": "Recall Me Reminder", + "ADDITIONALPHONES": "További telefonok", + "CALLADDITIONALPHONEAFTERMIN": "Hívjon egy másik telefonszámot [perc] után" } } diff --git a/public/app/main/apps/motiondialer/i18n/id.json b/public/app/main/apps/motiondialer/i18n/id.json index b6cd387..eb5c532 100644 --- a/public/app/main/apps/motiondialer/i18n/id.json +++ b/public/app/main/apps/motiondialer/i18n/id.json @@ -104,7 +104,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Hubungi add.phone setelah min. harus lebih besar dari atau sama dengan", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Bidang wajib" }, "HELP": { "ACTIVE": "Aktif", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Perekaman Layar sedang berlangsung", "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua", "THIRD_LEVEL_DISPOSITION": "Disposisi Tingkat Ketiga", + "ADDITIONALPHONES": "Telepon tambahan", + "CALLADDITIONALPHONEAFTERMIN": "Hubungi telepon tambahan setelah [mnt]", "PREVIEW_AUTO_RECALL_ME": "Otomatiskan panggilan Recall Me", "PREVIEW_RECALL_ME_REMINDER": "Ingatkan Saya Pengingat" } diff --git a/public/app/main/apps/motiondialer/i18n/it.json b/public/app/main/apps/motiondialer/i18n/it.json index e12abd3..aac0833 100644 --- a/public/app/main/apps/motiondialer/i18n/it.json +++ b/public/app/main/apps/motiondialer/i18n/it.json @@ -194,7 +194,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Chiama agg.telefono dopo min. dovrebbe essere maggiore o uguale a", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Campo obbligatorio" }, "GENERAL": "Generale", "TIMEOUT": "Timeout", @@ -691,6 +693,8 @@ "NOSUCHNUMBERRETRYTIME": "Riprova [min]", "TOOLTIP_SCREENRECORDING_OFF": "Registrazione dello schermo disponibile", "TOOLTIP_SCREENRECORDING_ON": "Registrazione dello schermo in corso", + "ADDITIONALPHONES": "Telefoni aggiuntivi", + "CALLADDITIONALPHONEAFTERMIN": "Chiama telefono aggiuntivo dopo [min]", "PREVIEW_AUTO_RECALL_ME": "Automatizza chiamate Recall Me", "PREVIEW_RECALL_ME_REMINDER": "Ricordami Promemoria" } diff --git a/public/app/main/apps/motiondialer/i18n/ja.json b/public/app/main/apps/motiondialer/i18n/ja.json index 37e13cc..1ea82ce 100644 --- a/public/app/main/apps/motiondialer/i18n/ja.json +++ b/public/app/main/apps/motiondialer/i18n/ja.json @@ -101,7 +101,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "分後にadd.phoneを呼び出します。以上である必要があります", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "必須フィールド" }, "HELP": { "ACTIVE": "アクティブ", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "スクリーン録画中", "SECOND_LEVEL_DISPOSITION": "第2レベルの気質", "THIRD_LEVEL_DISPOSITION": "第3レベルの気質", + "ADDITIONALPHONES": "追加の電話", + "CALLADDITIONALPHONEAFTERMIN": "[分]後に追加の電話をかける", "PREVIEW_AUTO_RECALL_ME": "リコールミーコールを自動化する", "PREVIEW_RECALL_ME_REMINDER": "リマインダーを思い出してください" } diff --git a/public/app/main/apps/motiondialer/i18n/ko.json b/public/app/main/apps/motiondialer/i18n/ko.json index 0f01b3e..5d0283a 100644 --- a/public/app/main/apps/motiondialer/i18n/ko.json +++ b/public/app/main/apps/motiondialer/i18n/ko.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다." + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "분 후에 add.phone에 전화를 겁니다. 보다 크거나 같아야 합니다.", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "필수 필드" }, "GENERAL": "일반", "AGENTTIMEOUT": "상담원 시간 초과", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "화면 녹화 중", "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리", "THIRD_LEVEL_DISPOSITION": "3 단계 처리", + "ADDITIONALPHONES": "추가 전화", + "CALLADDITIONALPHONEAFTERMIN": "[min] 후 추가 전화 걸기", "PREVIEW_AUTO_RECALL_ME": "자동 회상 전화", "PREVIEW_RECALL_ME_REMINDER": "리콜 미 리마인더" } diff --git a/public/app/main/apps/motiondialer/i18n/lt.json b/public/app/main/apps/motiondialer/i18n/lt.json index 2d60bd1..f7ffb86 100644 --- a/public/app/main/apps/motiondialer/i18n/lt.json +++ b/public/app/main/apps/motiondialer/i18n/lt.json @@ -259,7 +259,9 @@ "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi", "NOSUCHNUMBERMAXRETRY_REQUIRED": "Privalomas laukas", "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi", - "NOSUCHNUMBERRETRYTIME_REQUIRED": "Privalomas laukas" + "NOSUCHNUMBERRETRYTIME_REQUIRED": "Privalomas laukas", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Skambinti add.phone po min. turėtų būti didesnis arba lygus", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Privalomas laukas" }, "GENERAL": "Bendras", "AGENTTIMEOUT": "Agento laikas", @@ -690,6 +692,8 @@ "NOSUCHNUMBERRETRYTIME": "Pakartojimų laikas [min.]", "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas", "THIRD_LEVEL_DISPOSITION": "Trečiojo lygio disponavimas", + "ADDITIONALPHONES": "Papildomi telefonai", + "CALLADDITIONALPHONEAFTERMIN": "Paskambinkite papildomu telefonu po [min]", "PREVIEW_AUTO_RECALL_ME": "Automatizuokite „Recall Me“ skambučius", "PREVIEW_RECALL_ME_REMINDER": "Prisiminkite man priminimą" } diff --git a/public/app/main/apps/motiondialer/i18n/lv.json b/public/app/main/apps/motiondialer/i18n/lv.json index 57fb5e9..09d6f09 100644 --- a/public/app/main/apps/motiondialer/i18n/lv.json +++ b/public/app/main/apps/motiondialer/i18n/lv.json @@ -104,7 +104,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zvans add.phone pēc min. jābūt lielākam vai vienādam ar", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Obligāts lauks" }, "HELP": { "TIMEOUT": "Sekunžu skaits, lai piezvanītu aģentam rindā", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Notiek ekrāna ierakstīšana", "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums", "THIRD_LEVEL_DISPOSITION": "Trešā līmeņa izvietojums", + "ADDITIONALPHONES": "Papildu tālruņi", + "CALLADDITIONALPHONEAFTERMIN": "Zvaniet uz papildu tālruni pēc [min]", "PREVIEW_AUTO_RECALL_ME": "Automatizējiet Recall Me zvanus", "PREVIEW_RECALL_ME_REMINDER": "Recall Me Reminder" } diff --git a/public/app/main/apps/motiondialer/i18n/nl.json b/public/app/main/apps/motiondialer/i18n/nl.json index 6b40a6f..978ebaf 100644 --- a/public/app/main/apps/motiondialer/i18n/nl.json +++ b/public/app/main/apps/motiondialer/i18n/nl.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Bel add.phone na min. moet groter zijn dan of gelijk zijn aan", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Verplicht veld" }, "GENERAL": "Algemeen", "AGENTTIMEOUT": "Time-out agent", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Schermopname bezig", "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie", "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau", + "ADDITIONALPHONES": "Extra telefoons", + "CALLADDITIONALPHONEAFTERMIN": "Extra telefoon bellen na [min]", "PREVIEW_AUTO_RECALL_ME": "Automatisch terugbellen oproepen", "PREVIEW_RECALL_ME_REMINDER": "Herinner me herinnering" } diff --git a/public/app/main/apps/motiondialer/i18n/no.json b/public/app/main/apps/motiondialer/i18n/no.json index 310f5da..84510d7 100644 --- a/public/app/main/apps/motiondialer/i18n/no.json +++ b/public/app/main/apps/motiondialer/i18n/no.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ring tilleggstelefon etter min. skal være større enn eller lik", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Obligatoriske felt" }, "GENERAL": "Generelt", "AGENTTIMEOUT": "Agent tidsavbrudd", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Skjermopptak pågår", "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon", "THIRD_LEVEL_DISPOSITION": "Tredje nivå disposisjon", + "ADDITIONALPHONES": "Ekstra telefoner", + "CALLADDITIONALPHONEAFTERMIN": "Ring ytterligere telefon etter [min]", "PREVIEW_AUTO_RECALL_ME": "Automatiser Recall Me-samtaler", "PREVIEW_RECALL_ME_REMINDER": "Husk meg påminnelse" } diff --git a/public/app/main/apps/motiondialer/i18n/pl.json b/public/app/main/apps/motiondialer/i18n/pl.json index dd86593..f0e23e0 100644 --- a/public/app/main/apps/motiondialer/i18n/pl.json +++ b/public/app/main/apps/motiondialer/i18n/pl.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zadzwoń na ad.telefon po min. powinna być większa lub równa", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Pole obowiązkowe" }, "GENERAL": "Ogólne", "AGENTTIMEOUT": "Agent Timeout", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Trwa nagrywanie ekranu", "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu", "THIRD_LEVEL_DISPOSITION": "Dyspozycja trzeciego poziomu", + "ADDITIONALPHONES": "Dodatkowe telefony", + "CALLADDITIONALPHONEAFTERMIN": "Zadzwoń na dodatkowy telefon po [min]", "PREVIEW_AUTO_RECALL_ME": "Automatyzacja połączeń typu Przypomnij mnie", "PREVIEW_RECALL_ME_REMINDER": "Przypomnij mi przypomnienie" } diff --git a/public/app/main/apps/motiondialer/i18n/pt-BR.json b/public/app/main/apps/motiondialer/i18n/pt-BR.json index 1d96551..6f70beb 100644 --- a/public/app/main/apps/motiondialer/i18n/pt-BR.json +++ b/public/app/main/apps/motiondialer/i18n/pt-BR.json @@ -239,7 +239,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ligue para add.phone após min. deve ser maior ou igual a", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Campo obrigatório" }, "GENERAL": "Geral", "AGENTTIMEOUT": "Tempo limite do agente", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento", "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível", "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível", + "ADDITIONALPHONES": "Telefones adicionais", + "CALLADDITIONALPHONEAFTERMIN": "Ligue para outro telefone após [min]", "PREVIEW_AUTO_RECALL_ME": "Automatizar Chamadas Recall Me", "PREVIEW_RECALL_ME_REMINDER": "Lembrete para me lembrar" } diff --git a/public/app/main/apps/motiondialer/i18n/pt-PT.json b/public/app/main/apps/motiondialer/i18n/pt-PT.json index 8724cba..58243fa 100644 --- a/public/app/main/apps/motiondialer/i18n/pt-PT.json +++ b/public/app/main/apps/motiondialer/i18n/pt-PT.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ligue para add.phone após min. deve ser maior ou igual a", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Campo obrigatório" }, "GENERAL": "Geral", "AGENTTIMEOUT": "Tempo Limite do Agente", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento", "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível", "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível", + "ADDITIONALPHONES": "Telefones adicionais", + "CALLADDITIONALPHONEAFTERMIN": "Ligue para outro telefone após [min]", "PREVIEW_AUTO_RECALL_ME": "Automatizar Chamadas Recall Me", "PREVIEW_RECALL_ME_REMINDER": "Lembrete para me lembrar" } diff --git a/public/app/main/apps/motiondialer/i18n/ru.json b/public/app/main/apps/motiondialer/i18n/ru.json index edbf977..85e307f 100644 --- a/public/app/main/apps/motiondialer/i18n/ru.json +++ b/public/app/main/apps/motiondialer/i18n/ru.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Звоните на доп. Телефон через мин. должно быть больше или равно", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Обязательное поле" }, "GENERAL": "Генеральной", "AGENTTIMEOUT": "Время ожидания оператора", @@ -690,6 +692,8 @@ "NOSUCHNUMBERRETRYTIME": "Время повтора [мин]", "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня", "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня", + "ADDITIONALPHONES": "Дополнительные телефоны", + "CALLADDITIONALPHONEAFTERMIN": "Позвонить на дополнительный телефон через [мин]", "PREVIEW_AUTO_RECALL_ME": "Автоматическая функция \"Перезвоните мне\"", "PREVIEW_RECALL_ME_REMINDER": "Напомнить мне" } diff --git a/public/app/main/apps/motiondialer/i18n/sv.json b/public/app/main/apps/motiondialer/i18n/sv.json index d8fee75..5092fe6 100644 --- a/public/app/main/apps/motiondialer/i18n/sv.json +++ b/public/app/main/apps/motiondialer/i18n/sv.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ring till. Telefon efter min. bör vara större än eller lika med", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Obligatoriskt fält" }, "GENERAL": "Allmänt", "AGENTTIMEOUT": "Tidsgräns för agent", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Skärminspelning pågår", "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition", "THIRD_LEVEL_DISPOSITION": "Tredje nivåens disposition", + "ADDITIONALPHONES": "Ytterligare telefoner", + "CALLADDITIONALPHONEAFTERMIN": "Ring ytterligare telefon efter [min]", "PREVIEW_AUTO_RECALL_ME": "Automatisera Recall Me-samtal", "PREVIEW_RECALL_ME_REMINDER": "Påminnelse om mig" } diff --git a/public/app/main/apps/motiondialer/i18n/tr.json b/public/app/main/apps/motiondialer/i18n/tr.json index 10d7b56..a58c205 100644 --- a/public/app/main/apps/motiondialer/i18n/tr.json +++ b/public/app/main/apps/motiondialer/i18n/tr.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Dakikadan sonra add.phone'u arayın. daha büyük veya eşit olmalıdır", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Zorunlu alan" }, "GENERAL": "Genel", "AGENTTIMEOUT": "Ajan Zaman Aşımı", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "Ekran Kaydı devam ediyor", "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf", "THIRD_LEVEL_DISPOSITION": "Üçüncü Düzey Tasarruf", + "ADDITIONALPHONES": "Ek telefonlar", + "CALLADDITIONALPHONEAFTERMIN": "[dk] sonra ek telefonu arayın", "PREVIEW_AUTO_RECALL_ME": "Beni Geri Çağır aramalarını otomatikleştir", "PREVIEW_RECALL_ME_REMINDER": "Beni Hatırla Hatırlatma" } diff --git a/public/app/main/apps/motiondialer/i18n/zh-CN.json b/public/app/main/apps/motiondialer/i18n/zh-CN.json index 975184b..5c8b42e 100644 --- a/public/app/main/apps/motiondialer/i18n/zh-CN.json +++ b/public/app/main/apps/motiondialer/i18n/zh-CN.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "分钟后拨打 add.phone。应该大于或等于", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "必填项" }, "GENERAL": "总的", "AGENTTIMEOUT": "代理超时", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "屏幕录制正在进行中", "SECOND_LEVEL_DISPOSITION": "二级处置", "THIRD_LEVEL_DISPOSITION": "第三级处置", + "ADDITIONALPHONES": "附加电话", + "CALLADDITIONALPHONEAFTERMIN": "[分钟] 后拨打其他电话", "PREVIEW_AUTO_RECALL_ME": "自动回叫我电话", "PREVIEW_RECALL_ME_REMINDER": "记得提醒我" } diff --git a/public/app/main/apps/motiondialer/i18n/zh-TW.json b/public/app/main/apps/motiondialer/i18n/zh-TW.json index 1c86342..7e62a71 100644 --- a/public/app/main/apps/motiondialer/i18n/zh-TW.json +++ b/public/app/main/apps/motiondialer/i18n/zh-TW.json @@ -214,7 +214,9 @@ "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於", "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於", "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於", - "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於" + "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於", + "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "分鐘後撥打 add.phone。應該大於或等於", + "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "必填項" }, "GENERAL": "通用", "AGENTTIMEOUT": "值機人員等候逾時", @@ -691,6 +693,8 @@ "TOOLTIP_SCREENRECORDING_ON": "屏幕錄製正在進行中", "SECOND_LEVEL_DISPOSITION": "二級處置", "THIRD_LEVEL_DISPOSITION": "第三級處置", + "ADDITIONALPHONES": "附加電話", + "CALLADDITIONALPHONEAFTERMIN": "[分鐘] 後撥打其他電話", "PREVIEW_AUTO_RECALL_ME": "自動回叫我電話", "PREVIEW_RECALL_ME_REMINDER": "記得提醒我" } diff --git a/public/app/main/apps/tools/i18n/ar.json b/public/app/main/apps/tools/i18n/ar.json index 49adc37..e85233d 100644 --- a/public/app/main/apps/tools/i18n/ar.json +++ b/public/app/main/apps/tools/i18n/ar.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني", "SELECT_LEVEL": "حدد مستوى", "TITLEFONTSIZE": "حجم عنوان الخط", + "ADD_CONTACTITEMTYPE": "يضيف", + "CONTACTITEMTYPE": "أنواع عناصر الاتصال", + "NEW_CONTACTITEMTYPE": "نوع عنصر اتصال جديد", + "ORDER_BY": "ترتيب حسب", + "RGBBACKGROUNDCOLOR": "لون الخلفية RGB", "EMAIL": "بريد إلكتروني", "FILTERCHATWEBSITES": "تصفية مواقع الدردشة", "FILTEREMAILACCOUNTS": "تصفية حسابات البريد الإلكتروني", @@ -483,6 +488,9 @@ "OPENED_TEXT": "التفاعلات المفتوحة", "IGNOREDIALERCONTACTID": "تجاهل معرف جهة الاتصال", "MAIL_SUBSTATUS": "حالة البريد الإلكتروني الفرعية", - "OFFLINE_MESSAGE": "رسالة دون اتصال" + "OFFLINE_MESSAGE": "رسالة دون اتصال", + "DELETE_CONTACTITEMTYPE": "حذف نوع عنصر جهة الاتصال", + "EDIT_CONTACTITEMTYPE": "تحرير نوع عنصر الاتصال", + "ORDER_BY_NUMERIC": "يجب أن يكون الترتيب حسب الحقل قيمة رقمية!" } } diff --git a/public/app/main/apps/tools/i18n/cs.json b/public/app/main/apps/tools/i18n/cs.json index 8712e7a..4929bab 100644 --- a/public/app/main/apps/tools/i18n/cs.json +++ b/public/app/main/apps/tools/i18n/cs.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně", "SELECT_LEVEL": "Vyberte úroveň", "TITLEFONTSIZE": "Velikost názvu písma", + "ADD_CONTACTITEMTYPE": "Přidat", + "CONTACTITEMTYPE": "Kontaktujte typy položek", + "NEW_CONTACTITEMTYPE": "Nový typ položky kontaktu", + "ORDER_BY": "Seřadit podle", + "RGBBACKGROUNDCOLOR": "Barva pozadí RGB", "EMAIL": "E-mailem", "FILTERCHATWEBSITES": "Filtrujte webové stránky chatu", "FILTEREMAILACCOUNTS": "Filtrovat e -mailové účty", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Otevřené interakce", "IGNOREDIALERCONTACTID": "Ignorovat ID kontaktu vytáčení", "MAIL_SUBSTATUS": "E-mail Substatus", - "OFFLINE_MESSAGE": "Zpráva offline" + "OFFLINE_MESSAGE": "Zpráva offline", + "DELETE_CONTACTITEMTYPE": "Smazat typ položky kontaktu", + "EDIT_CONTACTITEMTYPE": "Upravit typ položky kontaktu", + "ORDER_BY_NUMERIC": "Řazení podle pole by měla být číselná hodnota!" } } diff --git a/public/app/main/apps/tools/i18n/da.json b/public/app/main/apps/tools/i18n/da.json index 7104354..1530633 100644 --- a/public/app/main/apps/tools/i18n/da.json +++ b/public/app/main/apps/tools/i18n/da.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition", "SELECT_LEVEL": "Vælg et niveau", "TITLEFONTSIZE": "Skrifttitelstørrelse", + "ADD_CONTACTITEMTYPE": "Tilføje", + "CONTACTITEMTYPE": "Kontaktelementtyper", + "NEW_CONTACTITEMTYPE": "Ny type kontaktperson", + "ORDER_BY": "Bestil inden", + "RGBBACKGROUNDCOLOR": "RGB Baggrundsfarve", "EMAIL": "E -mail", "FILTERCHATWEBSITES": "Filtrer chatwebsteder", "FILTEREMAILACCOUNTS": "Filtrer e -mail -konti", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Åbnede interaktioner", "IGNOREDIALERCONTACTID": "Ignorer opkaldskontakt-id", "MAIL_SUBSTATUS": "E-mail understatus", - "OFFLINE_MESSAGE": "Offline besked" + "OFFLINE_MESSAGE": "Offline besked", + "DELETE_CONTACTITEMTYPE": "Slet kontaktelementtype", + "EDIT_CONTACTITEMTYPE": "Rediger kontaktelementtype", + "ORDER_BY_NUMERIC": "Rækkefølge efter felt skal være numerisk!" } } diff --git a/public/app/main/apps/tools/i18n/de.json b/public/app/main/apps/tools/i18n/de.json index 28b91cf..4489cf0 100644 --- a/public/app/main/apps/tools/i18n/de.json +++ b/public/app/main/apps/tools/i18n/de.json @@ -464,6 +464,17 @@ "STANDARD": "Standard", "MOTION_BAR": "Motion Bar", "ALL": "Alle", + "ALL_DISPOSITIONS": "Alle Qualifizierungen", + "FIRST_LEVEL_DISPOSITION": "Qualifizierung Ebene 1", + "LEVEL": "Ebene", + "SECOND_LEVEL_DISPOSITION": "Qualifizierung Ebene 2", + "SELECT_LEVEL": "Ebene auswählen", + "TITLEFONTSIZE": "Schriftgröße Titel", + "ADD_CONTACTITEMTYPE": "Hinzufügen", + "CONTACTITEMTYPE": "Kontaktartikeltypen", + "NEW_CONTACTITEMTYPE": "Neuer Kontaktelementtyp", + "ORDER_BY": "Sortieren nach", + "RGBBACKGROUNDCOLOR": "RGB-Hintergrundfarbe", "EMAIL": "Email", "FILTERCHATWEBSITES": "Chat-Websites filtern", "FILTEREMAILACCOUNTS": "E-Mail-Konten filtern", @@ -475,14 +486,11 @@ "MANAGED_TEXT": "Verwaltete Interaktionen", "OPENED": "Geöffnet", "OPENED_TEXT": "Geöffnete Interaktionen", - "ALL_DISPOSITIONS": "Alle Qualifizierungen", - "FIRST_LEVEL_DISPOSITION": "Qualifizierung Ebene 1", - "LEVEL": "Ebene", - "SECOND_LEVEL_DISPOSITION": "Qualifizierung Ebene 2", - "SELECT_LEVEL": "Ebene auswählen", - "TITLEFONTSIZE": "Schriftgröße Titel", "IGNOREDIALERCONTACTID": "Wählkontakt-ID ignorieren", "MAIL_SUBSTATUS": "E-Mail Zwischenstatus", - "OFFLINE_MESSAGE": "Offline-Nachricht" + "OFFLINE_MESSAGE": "Offline-Nachricht", + "DELETE_CONTACTITEMTYPE": "Kontaktelementtyp löschen", + "EDIT_CONTACTITEMTYPE": "Kontaktelementtyp bearbeiten", + "ORDER_BY_NUMERIC": "Sortieren nach Feld sollte ein numerischer Wert sein!" } } diff --git a/public/app/main/apps/tools/i18n/en.json b/public/app/main/apps/tools/i18n/en.json index 320012b..306ec24 100644 --- a/public/app/main/apps/tools/i18n/en.json +++ b/public/app/main/apps/tools/i18n/en.json @@ -27,6 +27,14 @@ "WAITING": "Waiting", "TALKING": "Talking", "ANSWERED": "Answered", + "CONTACTITEMTYPE": "Contact item types", + "ORDER_BY": "Order by", + "RGBBACKGROUNDCOLOR": "RGB Background color", + "NEW_CONTACTITEMTYPE": "New contact item type", + "EDIT_CONTACTITEMTYPE": "Edit contact item type", + "DELETE_CONTACTITEMTYPE": "Delete contact item type", + "ORDER_BY_NUMERIC": "Order by field should be numeric value!", + "ADD_CONTACTITEMTYPE": "Add", "UNMANAGED": "Unmanaged", "CUSTOMTYPE": "Custom [path]", "WEBREPORT": "Web Report", diff --git a/public/app/main/apps/tools/i18n/es.json b/public/app/main/apps/tools/i18n/es.json index db925dc..63007b6 100644 --- a/public/app/main/apps/tools/i18n/es.json +++ b/public/app/main/apps/tools/i18n/es.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Tipificación de segundo nivel", "SELECT_LEVEL": "Seleccionar un nivel", "TITLEFONTSIZE": "Tamaño del título de fuente", + "ADD_CONTACTITEMTYPE": "Agregar", + "CONTACTITEMTYPE": "Tipos de elementos de contacto", + "NEW_CONTACTITEMTYPE": "Nuevo tipo de elemento de contacto", + "ORDER_BY": "Ordenar por", + "RGBBACKGROUNDCOLOR": "Color de fondo RGB", "EMAIL": "Correo electrónico", "FILTERCHATWEBSITES": "Filtrar sitios web de chat", "FILTEREMAILACCOUNTS": "Filtrar cuentas de correo electrónico", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Interacciones abiertas", "IGNOREDIALERCONTACTID": "Ignorar la identificación del contacto del marcador", "MAIL_SUBSTATUS": "Subestado de correo electrónico", - "OFFLINE_MESSAGE": "Mensaje sin conexión" + "OFFLINE_MESSAGE": "Mensaje sin conexión", + "DELETE_CONTACTITEMTYPE": "Eliminar tipo de elemento de contacto", + "EDIT_CONTACTITEMTYPE": "Editar tipo de elemento de contacto", + "ORDER_BY_NUMERIC": "¡El orden por campo debe ser un valor numérico!" } } diff --git a/public/app/main/apps/tools/i18n/et.json b/public/app/main/apps/tools/i18n/et.json index a6ad9fa..48b85d3 100644 --- a/public/app/main/apps/tools/i18n/et.json +++ b/public/app/main/apps/tools/i18n/et.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus", "SELECT_LEVEL": "Valige tase", "TITLEFONTSIZE": "Fondi pealkirja suurus", + "ADD_CONTACTITEMTYPE": "Lisama", + "CONTACTITEMTYPE": "Kontaktüksuste tüübid", + "NEW_CONTACTITEMTYPE": "Uus kontaktüksuse tüüp", + "ORDER_BY": "Telli", + "RGBBACKGROUNDCOLOR": "RGB taustavärv", "EMAIL": "E -post", "FILTERCHATWEBSITES": "Filtreeri vestluse veebisaite", "FILTEREMAILACCOUNTS": "E -posti kontode filtreerimine", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Avatud interaktsioonid", "IGNOREDIALERCONTACTID": "Ignoreeri helistaja kontakti ID", "MAIL_SUBSTATUS": "Meili alamolek", - "OFFLINE_MESSAGE": "Võrguühenduseta sõnum" + "OFFLINE_MESSAGE": "Võrguühenduseta sõnum", + "DELETE_CONTACTITEMTYPE": "Kustuta kontaktiüksuse tüüp", + "EDIT_CONTACTITEMTYPE": "Redigeerige kontaktiüksuse tüüpi", + "ORDER_BY_NUMERIC": "Järjestus välja järgi peab olema numbriline!" } } diff --git a/public/app/main/apps/tools/i18n/fa.json b/public/app/main/apps/tools/i18n/fa.json index abd1c71..4618bed 100644 --- a/public/app/main/apps/tools/i18n/fa.json +++ b/public/app/main/apps/tools/i18n/fa.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم", "SELECT_LEVEL": "یک سطح را انتخاب کنید", "TITLEFONTSIZE": "اندازه عنوان قلم", + "ADD_CONTACTITEMTYPE": "اضافه کردن", + "CONTACTITEMTYPE": "تماس با انواع آیتم ها", + "NEW_CONTACTITEMTYPE": "نوع مورد مخاطب جدید", + "ORDER_BY": "سفارش توسط", + "RGBBACKGROUNDCOLOR": "رنگ پس زمینه RGB", "EMAIL": "پست الکترونیک", "FILTERCHATWEBSITES": "وب سایت های چت را فیلتر کنید", "FILTEREMAILACCOUNTS": "فیلتر کردن حساب های ایمیل", @@ -483,6 +488,9 @@ "OPENED_TEXT": "تعاملات باز شده", "IGNOREDIALERCONTACTID": "نادیده گرفتن شناسه تماس شماره گیر", "MAIL_SUBSTATUS": "وضعیت فرعی ایمیل", - "OFFLINE_MESSAGE": "پیام آفلاین" + "OFFLINE_MESSAGE": "پیام آفلاین", + "DELETE_CONTACTITEMTYPE": "حذف نوع مورد تماس", + "EDIT_CONTACTITEMTYPE": "نوع مورد تماس را ویرایش کنید", + "ORDER_BY_NUMERIC": "ترتیب بر اساس فیلد باید مقدار عددی باشد!" } } diff --git a/public/app/main/apps/tools/i18n/fi.json b/public/app/main/apps/tools/i18n/fi.json index 54e2ee2..93cea9b 100644 --- a/public/app/main/apps/tools/i18n/fi.json +++ b/public/app/main/apps/tools/i18n/fi.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus", "SELECT_LEVEL": "Valitse taso", "TITLEFONTSIZE": "Kirjasimen otsikon koko", + "ADD_CONTACTITEMTYPE": "Lisätä", + "CONTACTITEMTYPE": "Yhteystietojen tyypit", + "NEW_CONTACTITEMTYPE": "Uusi yhteyshenkilötyyppi", + "ORDER_BY": "Tilaa", + "RGBBACKGROUNDCOLOR": "RGB -taustaväri", "EMAIL": "Sähköposti", "FILTERCHATWEBSITES": "Suodata chat -verkkosivustot", "FILTEREMAILACCOUNTS": "Suodata sähköpostitilit", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Avatut vuorovaikutukset", "IGNOREDIALERCONTACTID": "Ohita soittajan yhteystiedot", "MAIL_SUBSTATUS": "Sähköpostin alitila", - "OFFLINE_MESSAGE": "Offline-viesti" + "OFFLINE_MESSAGE": "Offline-viesti", + "DELETE_CONTACTITEMTYPE": "Poista yhteystietotyyppi", + "EDIT_CONTACTITEMTYPE": "Muokkaa yhteystietotyyppiä", + "ORDER_BY_NUMERIC": "Kenttien järjestyksen tulee olla numeerinen arvo!" } } diff --git a/public/app/main/apps/tools/i18n/fr.json b/public/app/main/apps/tools/i18n/fr.json index c7093fa..e3843c2 100644 --- a/public/app/main/apps/tools/i18n/fr.json +++ b/public/app/main/apps/tools/i18n/fr.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Disposition de deuxième niveau", "SELECT_LEVEL": "Sélectionnez un niveau", "TITLEFONTSIZE": "Taille du titre de la police", + "ADD_CONTACTITEMTYPE": "Ajouter", + "CONTACTITEMTYPE": "Types d'articles de contact", + "NEW_CONTACTITEMTYPE": "Nouveau type d'élément de contact", + "ORDER_BY": "Commandé par", + "RGBBACKGROUNDCOLOR": "Couleur d'arrière-plan RVB", "EMAIL": "E-mail", "FILTERCHATWEBSITES": "Filtrer les sites de chat", "FILTEREMAILACCOUNTS": "Filtrer les comptes de messagerie", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Interactions ouvertes", "IGNOREDIALERCONTACTID": "Ignorer l'identifiant du contact du numéroteur", "MAIL_SUBSTATUS": "Sous-statut de l'e-mail", - "OFFLINE_MESSAGE": "Message hors ligne" + "OFFLINE_MESSAGE": "Message hors ligne", + "DELETE_CONTACTITEMTYPE": "Supprimer le type d'élément de contact", + "EDIT_CONTACTITEMTYPE": "Modifier le type d'élément de contact", + "ORDER_BY_NUMERIC": "L'ordre par champ doit être une valeur numérique !" } } diff --git a/public/app/main/apps/tools/i18n/he.json b/public/app/main/apps/tools/i18n/he.json index ab7c39a..61696ae 100644 --- a/public/app/main/apps/tools/i18n/he.json +++ b/public/app/main/apps/tools/i18n/he.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה", "SELECT_LEVEL": "בחר רמה", "TITLEFONTSIZE": "גודל כותרת הגופן", + "ADD_CONTACTITEMTYPE": "לְהוֹסִיף", + "CONTACTITEMTYPE": "סוגי פריטי איש קשר", + "NEW_CONTACTITEMTYPE": "סוג פריט איש קשר חדש", + "ORDER_BY": "מיין לפי", + "RGBBACKGROUNDCOLOR": "צבע רקע RGB", "EMAIL": "אימייל", "FILTERCHATWEBSITES": "סנן אתרי צ'אט", "FILTEREMAILACCOUNTS": "סנן חשבונות דוא\"ל", @@ -483,6 +488,9 @@ "OPENED_TEXT": "אינטראקציות פתוחות", "IGNOREDIALERCONTACTID": "התעלם מזהה איש קשר חייגן", "MAIL_SUBSTATUS": "תת סטטוס דוא\"ל", - "OFFLINE_MESSAGE": "הודעה לא מקוונת" + "OFFLINE_MESSAGE": "הודעה לא מקוונת", + "DELETE_CONTACTITEMTYPE": "מחק את סוג פריט איש הקשר", + "EDIT_CONTACTITEMTYPE": "ערוך את סוג פריט איש הקשר", + "ORDER_BY_NUMERIC": "סדר לפי שדה צריך להיות ערך מספרי!" } } diff --git a/public/app/main/apps/tools/i18n/hi.json b/public/app/main/apps/tools/i18n/hi.json index 77700e3..2a27fba 100644 --- a/public/app/main/apps/tools/i18n/hi.json +++ b/public/app/main/apps/tools/i18n/hi.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद", "SELECT_LEVEL": "एक स्तर चुनें", "TITLEFONTSIZE": "फ़ॉन्ट शीर्षक आकार", + "ADD_CONTACTITEMTYPE": "जोड़ें", + "CONTACTITEMTYPE": "संपर्क आइटम प्रकार", + "NEW_CONTACTITEMTYPE": "नया संपर्क आइटम प्रकार", + "ORDER_BY": "द्वारा आदेश", + "RGBBACKGROUNDCOLOR": "आरजीबी पृष्ठभूमि रंग", "EMAIL": "ईमेल", "FILTERCHATWEBSITES": "चैट वेबसाइटों को फ़िल्टर करें", "FILTEREMAILACCOUNTS": "ईमेल खातों को फ़िल्टर करें", @@ -483,6 +488,9 @@ "OPENED_TEXT": "खुली बातचीत", "IGNOREDIALERCONTACTID": "डायलर संपर्क आईडी पर ध्यान न दें", "MAIL_SUBSTATUS": "ईमेल सबस्टैटस", - "OFFLINE_MESSAGE": "ऑफ़लाइन संदेश" + "OFFLINE_MESSAGE": "ऑफ़लाइन संदेश", + "DELETE_CONTACTITEMTYPE": "संपर्क आइटम प्रकार हटाएं", + "EDIT_CONTACTITEMTYPE": "संपर्क आइटम प्रकार संपादित करें", + "ORDER_BY_NUMERIC": "फ़ील्ड के अनुसार क्रम संख्यात्मक मान होना चाहिए!" } } diff --git a/public/app/main/apps/tools/i18n/hu.json b/public/app/main/apps/tools/i18n/hu.json index 1a21f51..922e3cd 100644 --- a/public/app/main/apps/tools/i18n/hu.json +++ b/public/app/main/apps/tools/i18n/hu.json @@ -515,6 +515,14 @@ "MANAGED_TEXT": "Kezelt interakciók", "OFFLINE_MESSAGE": "Offline üzenet", "OPENED": "Nyitott", - "OPENED_TEXT": "Megnyitott interakciók" + "OPENED_TEXT": "Megnyitott interakciók", + "ADD_CONTACTITEMTYPE": "Hozzáadás", + "CONTACTITEMTYPE": "Kapcsolati elem típusai", + "DELETE_CONTACTITEMTYPE": "Kapcsolati elem típusának törlése", + "EDIT_CONTACTITEMTYPE": "Kapcsolati elem típusának szerkesztése", + "NEW_CONTACTITEMTYPE": "Új kapcsolati elem típusa", + "ORDER_BY": "Rendezés", + "ORDER_BY_NUMERIC": "A mező szerinti sorrend numerikus legyen!", + "RGBBACKGROUNDCOLOR": "RGB háttérszín" } } diff --git a/public/app/main/apps/tools/i18n/id.json b/public/app/main/apps/tools/i18n/id.json index 0457a5f..47e9aca 100644 --- a/public/app/main/apps/tools/i18n/id.json +++ b/public/app/main/apps/tools/i18n/id.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua", "SELECT_LEVEL": "Pilih level", "TITLEFONTSIZE": "Ukuran Judul Font", + "ADD_CONTACTITEMTYPE": "Menambahkan", + "CONTACTITEMTYPE": "Jenis item kontak", + "NEW_CONTACTITEMTYPE": "Jenis item kontak baru", + "ORDER_BY": "Dipesan oleh", + "RGBBACKGROUNDCOLOR": "Warna Latar RGB", "EMAIL": "Surel", "FILTERCHATWEBSITES": "Filter Situs Web Obrolan", "FILTEREMAILACCOUNTS": "Filter Akun Email", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Interaksi Terbuka", "IGNOREDIALERCONTACTID": "Abaikan Id kontak dialer", "MAIL_SUBSTATUS": "Substatus Email", - "OFFLINE_MESSAGE": "Pesan Offline" + "OFFLINE_MESSAGE": "Pesan Offline", + "DELETE_CONTACTITEMTYPE": "Hapus jenis item kontak", + "EDIT_CONTACTITEMTYPE": "Edit jenis item kontak", + "ORDER_BY_NUMERIC": "Urutan berdasarkan bidang harus berupa nilai numerik!" } } diff --git a/public/app/main/apps/tools/i18n/it.json b/public/app/main/apps/tools/i18n/it.json index 5507b29..4a63be7 100644 --- a/public/app/main/apps/tools/i18n/it.json +++ b/public/app/main/apps/tools/i18n/it.json @@ -16,6 +16,7 @@ "FONTSIZE": "Dimensione Font", "TITLEFONTSIZE": "Dimensione Font Titolo", "CLONE_CUSTOMDASHBOARD": "Clona Dashboard Personalizzata", + "ORDER_BY_NUMERIC": "Il campo Ordinamento deve essere numerico!", "LINK": "Link [https://]", "BACKGROUND": "Background", "FOREGROUND": "Foreground", @@ -23,6 +24,8 @@ "NONE": "Nessuno", "TOTAL": "Totale", "ABANDONED": "Abbandonate", + "EDIT_CONTACTITEMTYPE": "Modifica tipo di contatto", + "DELETE_CONTACTITEMTYPE": "Elimina tipo di contatto", "WAITING": "In Attesa", "TALKING": "Attive", "ANSWERED": "Risposte", @@ -517,6 +520,11 @@ "AUTOCREATE_FIELD": "Campo autocreazione", "STANDARD": "Standard", "GLOBALS": "Globali", - "MOTION_BAR": "Motion Bar" + "MOTION_BAR": "Motion Bar", + "ADD_CONTACTITEMTYPE": "Aggiungere", + "CONTACTITEMTYPE": "Tipi di elementi di contatto", + "NEW_CONTACTITEMTYPE": "Nuovo tipo di elemento di contatto", + "ORDER_BY": "Ordinato da", + "RGBBACKGROUNDCOLOR": "Colore di sfondo RGB" } } diff --git a/public/app/main/apps/tools/i18n/ja.json b/public/app/main/apps/tools/i18n/ja.json index b4c762a..7a333dc 100644 --- a/public/app/main/apps/tools/i18n/ja.json +++ b/public/app/main/apps/tools/i18n/ja.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "第2レベルの気質", "SELECT_LEVEL": "レベルを選択してください", "TITLEFONTSIZE": "フォントタイトルサイズ", + "ADD_CONTACTITEMTYPE": "追加", + "CONTACTITEMTYPE": "連絡先アイテムの種類", + "NEW_CONTACTITEMTYPE": "新しい連絡先アイテムタイプ", + "ORDER_BY": "注文する", + "RGBBACKGROUNDCOLOR": "RGB背景色", "EMAIL": "Eメール", "FILTERCHATWEBSITES": "チャットWebサイトのフィルター", "FILTEREMAILACCOUNTS": "メールアカウントのフィルタリング", @@ -483,6 +488,9 @@ "OPENED_TEXT": "開かれた相互作用", "IGNOREDIALERCONTACTID": "ダイヤラーの連絡先IDを無視する", "MAIL_SUBSTATUS": "メールサブステータス", - "OFFLINE_MESSAGE": "オフラインメッセージ" + "OFFLINE_MESSAGE": "オフラインメッセージ", + "DELETE_CONTACTITEMTYPE": "連絡先アイテムタイプを削除", + "EDIT_CONTACTITEMTYPE": "連絡先アイテムタイプの編集", + "ORDER_BY_NUMERIC": "フィールド順は数値である必要があります。" } } diff --git a/public/app/main/apps/tools/i18n/ko.json b/public/app/main/apps/tools/i18n/ko.json index 340ae67..ced8253 100644 --- a/public/app/main/apps/tools/i18n/ko.json +++ b/public/app/main/apps/tools/i18n/ko.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리", "SELECT_LEVEL": "레벨 선택", "TITLEFONTSIZE": "글꼴 제목 크기", + "ADD_CONTACTITEMTYPE": "추가하다", + "CONTACTITEMTYPE": "연락처 항목 유형", + "NEW_CONTACTITEMTYPE": "새 연락처 항목 유형", + "ORDER_BY": "주문", + "RGBBACKGROUNDCOLOR": "RGB 배경색", "EMAIL": "이메일", "FILTERCHATWEBSITES": "채팅 웹사이트 필터링", "FILTEREMAILACCOUNTS": "이메일 계정 필터링", @@ -483,6 +488,9 @@ "OPENED_TEXT": "열린 상호 작용", "IGNOREDIALERCONTACTID": "다이얼러 연락처 ID 무시", "MAIL_SUBSTATUS": "이메일 하위 상태", - "OFFLINE_MESSAGE": "오프라인 메시지" + "OFFLINE_MESSAGE": "오프라인 메시지", + "DELETE_CONTACTITEMTYPE": "연락처 항목 유형 삭제", + "EDIT_CONTACTITEMTYPE": "연락처 항목 유형 수정", + "ORDER_BY_NUMERIC": "필드별 정렬은 숫자 값이어야 합니다!" } } diff --git a/public/app/main/apps/tools/i18n/lt.json b/public/app/main/apps/tools/i18n/lt.json index 236d5e4..b092210 100644 --- a/public/app/main/apps/tools/i18n/lt.json +++ b/public/app/main/apps/tools/i18n/lt.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas", "SELECT_LEVEL": "Pasirinkite lygį", "TITLEFONTSIZE": "Šrifto pavadinimo dydis", + "ADD_CONTACTITEMTYPE": "Papildyti", + "CONTACTITEMTYPE": "Kontaktinių elementų tipai", + "NEW_CONTACTITEMTYPE": "Naujas kontaktinio elemento tipas", + "ORDER_BY": "Rūšiuoti pagal", + "RGBBACKGROUNDCOLOR": "RGB fono spalva", "EMAIL": "Paštu", "FILTERCHATWEBSITES": "Filtruokite pokalbių svetaines", "FILTEREMAILACCOUNTS": "Filtruoti el. Pašto paskyras", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Atidarytos sąveikos", "IGNOREDIALERCONTACTID": "Ignoruoti rinkiklio kontakto ID", "MAIL_SUBSTATUS": "El. pašto būsena", - "OFFLINE_MESSAGE": "Pranešimas neprisijungus" + "OFFLINE_MESSAGE": "Pranešimas neprisijungus", + "DELETE_CONTACTITEMTYPE": "Ištrinti kontaktinio elemento tipą", + "EDIT_CONTACTITEMTYPE": "Redaguoti kontaktinio elemento tipą", + "ORDER_BY_NUMERIC": "Užsakymas pagal lauką turi būti skaitinis!" } } diff --git a/public/app/main/apps/tools/i18n/lv.json b/public/app/main/apps/tools/i18n/lv.json index 1b8a4ec..2d76687 100644 --- a/public/app/main/apps/tools/i18n/lv.json +++ b/public/app/main/apps/tools/i18n/lv.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums", "SELECT_LEVEL": "Atlasiet līmeni", "TITLEFONTSIZE": "Fonta nosaukuma lielums", + "ADD_CONTACTITEMTYPE": "Pievienot", + "CONTACTITEMTYPE": "Kontaktpersonu veidi", + "NEW_CONTACTITEMTYPE": "Jauns kontakta vienuma veids", + "ORDER_BY": "Sakārtot pēc", + "RGBBACKGROUNDCOLOR": "RGB fona krāsa", "EMAIL": "E -pasts", "FILTERCHATWEBSITES": "Filtrējiet tērzēšanas vietnes", "FILTEREMAILACCOUNTS": "Filtrējiet e -pasta kontus", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Atvērtā mijiedarbība", "IGNOREDIALERCONTACTID": "Ignorēt zvanītāja kontaktpersonas ID", "MAIL_SUBSTATUS": "E-pasta apakšstatuss", - "OFFLINE_MESSAGE": "Bezsaistes ziņojums" + "OFFLINE_MESSAGE": "Bezsaistes ziņojums", + "DELETE_CONTACTITEMTYPE": "Dzēst kontaktpersonas vienuma veidu", + "EDIT_CONTACTITEMTYPE": "Rediģēt kontaktpersonas vienuma veidu", + "ORDER_BY_NUMERIC": "Pasūtījumam pēc lauka jābūt skaitliskām vērtībām!" } } diff --git a/public/app/main/apps/tools/i18n/nl.json b/public/app/main/apps/tools/i18n/nl.json index 2576728..89c0a97 100644 --- a/public/app/main/apps/tools/i18n/nl.json +++ b/public/app/main/apps/tools/i18n/nl.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie", "SELECT_LEVEL": "Kies een niveau", "TITLEFONTSIZE": "Lettertype titelgrootte", + "ADD_CONTACTITEMTYPE": "Toevoegen", + "CONTACTITEMTYPE": "Typen contactitems", + "NEW_CONTACTITEMTYPE": "Nieuw type contactitem", + "ORDER_BY": "Bestellen op", + "RGBBACKGROUNDCOLOR": "RGB-achtergrondkleur", "EMAIL": "E-mail", "FILTERCHATWEBSITES": "Chat-websites filteren", "FILTEREMAILACCOUNTS": "E-mailaccounts filteren", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Geopende interacties", "IGNOREDIALERCONTACTID": "Contact-ID van kiezer negeren", "MAIL_SUBSTATUS": "Substatus e-mail", - "OFFLINE_MESSAGE": "Offline bericht" + "OFFLINE_MESSAGE": "Offline bericht", + "DELETE_CONTACTITEMTYPE": "Type contactitem verwijderen", + "EDIT_CONTACTITEMTYPE": "Type contactitem bewerken", + "ORDER_BY_NUMERIC": "Sorteer op veld moet een numerieke waarde zijn!" } } diff --git a/public/app/main/apps/tools/i18n/no.json b/public/app/main/apps/tools/i18n/no.json index 28944c7..8f42c3f 100644 --- a/public/app/main/apps/tools/i18n/no.json +++ b/public/app/main/apps/tools/i18n/no.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon", "SELECT_LEVEL": "Velg et nivå", "TITLEFONTSIZE": "Skriftens tittelstørrelse", + "ADD_CONTACTITEMTYPE": "Legg til", + "CONTACTITEMTYPE": "Typer av kontaktelementer", + "NEW_CONTACTITEMTYPE": "Ny type kontaktelement", + "ORDER_BY": "Rekkefølge etter", + "RGBBACKGROUNDCOLOR": "RGB bakgrunnsfarge", "EMAIL": "E -post", "FILTERCHATWEBSITES": "Filtrer nettsteder for chat", "FILTEREMAILACCOUNTS": "Filtrer e -postkontoer", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Åpne interaksjoner", "IGNOREDIALERCONTACTID": "Ignorer oppringingskontakt-ID", "MAIL_SUBSTATUS": "E-post understatus", - "OFFLINE_MESSAGE": "Frakoblet melding" + "OFFLINE_MESSAGE": "Frakoblet melding", + "DELETE_CONTACTITEMTYPE": "Slett kontaktelementtype", + "EDIT_CONTACTITEMTYPE": "Rediger kontaktelementtype", + "ORDER_BY_NUMERIC": "Rekkefølge etter felt skal være numerisk!" } } diff --git a/public/app/main/apps/tools/i18n/pl.json b/public/app/main/apps/tools/i18n/pl.json index 63159f7..6855492 100644 --- a/public/app/main/apps/tools/i18n/pl.json +++ b/public/app/main/apps/tools/i18n/pl.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu", "SELECT_LEVEL": "Wybierz poziom", "TITLEFONTSIZE": "Rozmiar tytułu czcionki", + "ADD_CONTACTITEMTYPE": "Dodać", + "CONTACTITEMTYPE": "Typy elementów kontaktu", + "NEW_CONTACTITEMTYPE": "Nowy typ elementu kontaktu", + "ORDER_BY": "Zamów przez", + "RGBBACKGROUNDCOLOR": "Kolor tła RGB", "EMAIL": "E-mail", "FILTERCHATWEBSITES": "Filtruj strony internetowe czatu", "FILTEREMAILACCOUNTS": "Filtruj konta e-mail", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Otwarte interakcje", "IGNOREDIALERCONTACTID": "Ignoruj identyfikator kontaktu dialera", "MAIL_SUBSTATUS": "Substancja e-mail", - "OFFLINE_MESSAGE": "Wiadomość offline" + "OFFLINE_MESSAGE": "Wiadomość offline", + "DELETE_CONTACTITEMTYPE": "Usuń typ elementu kontaktu", + "EDIT_CONTACTITEMTYPE": "Edytuj typ elementu kontaktu", + "ORDER_BY_NUMERIC": "Kolejność według pól powinna być wartością liczbową!" } } diff --git a/public/app/main/apps/tools/i18n/pt-BR.json b/public/app/main/apps/tools/i18n/pt-BR.json index e9a47f0..89475fd 100644 --- a/public/app/main/apps/tools/i18n/pt-BR.json +++ b/public/app/main/apps/tools/i18n/pt-BR.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível", "SELECT_LEVEL": "Selecione um nível", "TITLEFONTSIZE": "Tamanho do título da fonte", + "ADD_CONTACTITEMTYPE": "Adicionar", + "CONTACTITEMTYPE": "Tipos de item de contato", + "NEW_CONTACTITEMTYPE": "Novo tipo de item de contato", + "ORDER_BY": "Ordenar por", + "RGBBACKGROUNDCOLOR": "Cor de fundo RGB", "EMAIL": "E-mail", "FILTERCHATWEBSITES": "Filtrar sites de bate-papo", "FILTEREMAILACCOUNTS": "Filtrar contas de e-mail", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Interações abertas", "IGNOREDIALERCONTACTID": "Ignorar o ID de contato do discador", "MAIL_SUBSTATUS": "Substatus do Email", - "OFFLINE_MESSAGE": "Mensagem offline" + "OFFLINE_MESSAGE": "Mensagem offline", + "DELETE_CONTACTITEMTYPE": "Excluir tipo de item de contato", + "EDIT_CONTACTITEMTYPE": "Editar tipo de item de contato", + "ORDER_BY_NUMERIC": "A ordem por campo deve ser um valor numérico!" } } diff --git a/public/app/main/apps/tools/i18n/pt-PT.json b/public/app/main/apps/tools/i18n/pt-PT.json index c00aa93..bc7eab4 100644 --- a/public/app/main/apps/tools/i18n/pt-PT.json +++ b/public/app/main/apps/tools/i18n/pt-PT.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível", "SELECT_LEVEL": "Selecione um nível", "TITLEFONTSIZE": "Tamanho do título da fonte", + "ADD_CONTACTITEMTYPE": "Adicionar", + "CONTACTITEMTYPE": "Tipos de item de contato", + "NEW_CONTACTITEMTYPE": "Novo tipo de item de contato", + "ORDER_BY": "Ordenar por", + "RGBBACKGROUNDCOLOR": "Cor de fundo RGB", "EMAIL": "E-mail", "FILTERCHATWEBSITES": "Filtrar sites de bate-papo", "FILTEREMAILACCOUNTS": "Filtrar contas de e-mail", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Interações abertas", "IGNOREDIALERCONTACTID": "Ignorar o ID de contato do discador", "MAIL_SUBSTATUS": "Substatus do Email", - "OFFLINE_MESSAGE": "Mensagem offline" + "OFFLINE_MESSAGE": "Mensagem offline", + "DELETE_CONTACTITEMTYPE": "Excluir tipo de item de contato", + "EDIT_CONTACTITEMTYPE": "Editar tipo de item de contato", + "ORDER_BY_NUMERIC": "A ordem por campo deve ser um valor numérico!" } } diff --git a/public/app/main/apps/tools/i18n/ru.json b/public/app/main/apps/tools/i18n/ru.json index 892955e..a950f0f 100644 --- a/public/app/main/apps/tools/i18n/ru.json +++ b/public/app/main/apps/tools/i18n/ru.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня", "SELECT_LEVEL": "Выберите уровень", "TITLEFONTSIZE": "Размер заголовка шрифта", + "ADD_CONTACTITEMTYPE": "Добавлять", + "CONTACTITEMTYPE": "Типы контактов", + "NEW_CONTACTITEMTYPE": "Новый тип элемента контакта", + "ORDER_BY": "Сортировать по", + "RGBBACKGROUNDCOLOR": "Цвет фона RGB", "EMAIL": "Электронное письмо", "FILTERCHATWEBSITES": "Фильтр веб-сайтов чата", "FILTEREMAILACCOUNTS": "Фильтр учетных записей электронной почты", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Открытые взаимодействия", "IGNOREDIALERCONTACTID": "Игнорировать идентификатор контакта номеронабирателя", "MAIL_SUBSTATUS": "Подстатус электронной почты", - "OFFLINE_MESSAGE": "Автономное сообщение" + "OFFLINE_MESSAGE": "Автономное сообщение", + "DELETE_CONTACTITEMTYPE": "Удалить тип элемента контакта", + "EDIT_CONTACTITEMTYPE": "Изменить тип элемента контакта", + "ORDER_BY_NUMERIC": "Порядок по полю должен быть числовым значением!" } } diff --git a/public/app/main/apps/tools/i18n/sv.json b/public/app/main/apps/tools/i18n/sv.json index d5854a7..2e1fd2b 100644 --- a/public/app/main/apps/tools/i18n/sv.json +++ b/public/app/main/apps/tools/i18n/sv.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition", "SELECT_LEVEL": "Välj en nivå", "TITLEFONTSIZE": "Teckensnittsstorlek", + "ADD_CONTACTITEMTYPE": "Lägg till", + "CONTACTITEMTYPE": "Typer av kontaktartiklar", + "NEW_CONTACTITEMTYPE": "Ny typ av kontaktartikel", + "ORDER_BY": "Sortera efter", + "RGBBACKGROUNDCOLOR": "RGB bakgrundsfärg", "EMAIL": "E-post", "FILTERCHATWEBSITES": "Filtrera chattwebbplatser", "FILTEREMAILACCOUNTS": "Filtrera e -postkonton", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Öppnade interaktioner", "IGNOREDIALERCONTACTID": "Ignorera uppringarens kontakt-ID", "MAIL_SUBSTATUS": "E-postunderstatus", - "OFFLINE_MESSAGE": "Offlinemeddelande" + "OFFLINE_MESSAGE": "Offlinemeddelande", + "DELETE_CONTACTITEMTYPE": "Ta bort kontaktobjektstyp", + "EDIT_CONTACTITEMTYPE": "Redigera kontaktobjektstyp", + "ORDER_BY_NUMERIC": "Ordna efter fält ska vara ett numeriskt värde!" } } diff --git a/public/app/main/apps/tools/i18n/tr.json b/public/app/main/apps/tools/i18n/tr.json index 6c4628c..13c547b 100644 --- a/public/app/main/apps/tools/i18n/tr.json +++ b/public/app/main/apps/tools/i18n/tr.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf", "SELECT_LEVEL": "Bir seviye seçin", "TITLEFONTSIZE": "Yazı Tipi Başlık Boyutu", + "ADD_CONTACTITEMTYPE": "Ekle", + "CONTACTITEMTYPE": "İletişim öğesi türleri", + "NEW_CONTACTITEMTYPE": "Yeni kişi öğesi türü", + "ORDER_BY": "Tarafından sipariş", + "RGBBACKGROUNDCOLOR": "RGB Arkaplan rengi", "EMAIL": "E-posta", "FILTERCHATWEBSITES": "Sohbet Web Sitelerini Filtrele", "FILTEREMAILACCOUNTS": "E-posta Hesaplarını Filtrele", @@ -483,6 +488,9 @@ "OPENED_TEXT": "Açık Etkileşimler", "IGNOREDIALERCONTACTID": "Çevirici kişi kimliğini yoksay", "MAIL_SUBSTATUS": "E-posta Alt Durumu", - "OFFLINE_MESSAGE": "Çevrimdışı Mesaj" + "OFFLINE_MESSAGE": "Çevrimdışı Mesaj", + "DELETE_CONTACTITEMTYPE": "Kişi öğesi türünü sil", + "EDIT_CONTACTITEMTYPE": "Kişi öğesi türünü düzenle", + "ORDER_BY_NUMERIC": "Alana göre sıralama sayısal değer olmalıdır!" } } diff --git a/public/app/main/apps/tools/i18n/zh-CN.json b/public/app/main/apps/tools/i18n/zh-CN.json index f7abfb6..8e352ea 100644 --- a/public/app/main/apps/tools/i18n/zh-CN.json +++ b/public/app/main/apps/tools/i18n/zh-CN.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "二级处置", "SELECT_LEVEL": "选择一个级别", "TITLEFONTSIZE": "字体标题大小", + "ADD_CONTACTITEMTYPE": "添加", + "CONTACTITEMTYPE": "联系项目类型", + "NEW_CONTACTITEMTYPE": "新的联系人项目类型", + "ORDER_BY": "订购方式", + "RGBBACKGROUNDCOLOR": "RGB 背景色", "EMAIL": "电子邮件", "FILTERCHATWEBSITES": "过滤聊天网站", "FILTEREMAILACCOUNTS": "过滤电子邮件帐户", @@ -483,6 +488,9 @@ "OPENED_TEXT": "打开的交互", "IGNOREDIALERCONTACTID": "忽略拨号联系人 ID", "MAIL_SUBSTATUS": "电子邮件子状态", - "OFFLINE_MESSAGE": "离线留言" + "OFFLINE_MESSAGE": "离线留言", + "DELETE_CONTACTITEMTYPE": "删除联系人项目类型", + "EDIT_CONTACTITEMTYPE": "编辑联系人项目类型", + "ORDER_BY_NUMERIC": "按字段排序应该是数值!" } } diff --git a/public/app/main/apps/tools/i18n/zh-TW.json b/public/app/main/apps/tools/i18n/zh-TW.json index 225e797..6a30d83 100644 --- a/public/app/main/apps/tools/i18n/zh-TW.json +++ b/public/app/main/apps/tools/i18n/zh-TW.json @@ -470,6 +470,11 @@ "SECOND_LEVEL_DISPOSITION": "二級處置", "SELECT_LEVEL": "選擇一個級別", "TITLEFONTSIZE": "字體標題大小", + "ADD_CONTACTITEMTYPE": "添加", + "CONTACTITEMTYPE": "聯繫項目類型", + "NEW_CONTACTITEMTYPE": "新的聯繫人項目類型", + "ORDER_BY": "訂購方式", + "RGBBACKGROUNDCOLOR": "RGB 背景色", "EMAIL": "電子郵件", "FILTERCHATWEBSITES": "過濾聊天網站", "FILTEREMAILACCOUNTS": "過濾電子郵件帳戶", @@ -483,6 +488,9 @@ "OPENED_TEXT": "打開的交互", "IGNOREDIALERCONTACTID": "忽略撥號聯繫人 ID", "MAIL_SUBSTATUS": "電子郵件子狀態", - "OFFLINE_MESSAGE": "離線留言" + "OFFLINE_MESSAGE": "離線留言", + "DELETE_CONTACTITEMTYPE": "刪除聯繫人項目類型", + "EDIT_CONTACTITEMTYPE": "編輯聯繫人項目類型", + "ORDER_BY_NUMERIC": "按字段排序應該是數值!" } } diff --git a/public/app/toolbar/i18n/ar.json b/public/app/toolbar/i18n/ar.json index 94ee517..6af6092 100644 --- a/public/app/toolbar/i18n/ar.json +++ b/public/app/toolbar/i18n/ar.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "قام {{ip}} بتسجيل الدخول باستخدام بيانات الاعتماد الخاصة بك.\nغير مسموح بتسجيل الدخول المتعدد", "LOGOUT": "تسجيل خروج", "SESSION_TIMEOUT": "سيتم إغلاق الجلسة تلقائيًا بعد 60 ثانية", + "PHONE2CALL": "هاتف للاتصال", "HUNGARIAN": "المجرية", "AUTOANSWER_NOTIFICATIONS": "إخطارات الرد التلقائي", "CHANNEL": "قناة", diff --git a/public/app/toolbar/i18n/cs.json b/public/app/toolbar/i18n/cs.json index 8d45f34..eac0bd8 100644 --- a/public/app/toolbar/i18n/cs.json +++ b/public/app/toolbar/i18n/cs.json @@ -105,6 +105,7 @@ "WEBRTC_SPEAKER_NOT_AVAILABLE": "Není k dispozici žádný reproduktor", "LOGOUT": "Odhlásit se", "SESSION_TIMEOUT": "Relace bude automaticky ukončena po 60 sekundách", + "PHONE2CALL": "Telefon na zavolání", "HUNGARIAN": "maďarský", "AUTOANSWER_NOTIFICATIONS": "Oznámení o automatické odpovědi", "CHANNEL": "Kanál", diff --git a/public/app/toolbar/i18n/da.json b/public/app/toolbar/i18n/da.json index 56bb53e..ffbb285 100644 --- a/public/app/toolbar/i18n/da.json +++ b/public/app/toolbar/i18n/da.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} er logget ind med dine legitimationsoplysninger.\nFlere login er ikke tilladt", "LOGOUT": "Log ud", "SESSION_TIMEOUT": "Sessionen lukkes automatisk efter 60 sekunder", + "PHONE2CALL": "Telefon for at ringe", "HUNGARIAN": "ungarsk", "AUTOANSWER_NOTIFICATIONS": "Autosvar-meddelelser", "CHANNEL": "Kanal", diff --git a/public/app/toolbar/i18n/de.json b/public/app/toolbar/i18n/de.json index d11e1da..0adf4ba 100644 --- a/public/app/toolbar/i18n/de.json +++ b/public/app/toolbar/i18n/de.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} hat sich mit Ihren Anmeldeinformationen angemeldet.\nMehrfachanmeldungen sind nicht zulässig", "LOGOUT": "Ausloggen", "SESSION_TIMEOUT": "Die Sitzung wird nach 60 Sekunden automatisch geschlossen", + "PHONE2CALL": "Telefon zum Anrufen", "HUNGARIAN": "ungarisch", "AUTOANSWER_NOTIFICATIONS": "Automatische Antwortbenachrichtigungen", "CHANNEL": "Kanal", diff --git a/public/app/toolbar/i18n/en.json b/public/app/toolbar/i18n/en.json index 41c6efa..c1c3ad7 100644 --- a/public/app/toolbar/i18n/en.json +++ b/public/app/toolbar/i18n/en.json @@ -17,6 +17,7 @@ "REQUIREMENTS": "Requirements", "LICENSE": "License", "HTTPS": "HTTPS", + "PHONE2CALL": "Phone to call", "CHANNELS": "Channels", "CHANNEL": "Channel", "NUM_NOTIFICATIONS": "Notifications", diff --git a/public/app/toolbar/i18n/es.json b/public/app/toolbar/i18n/es.json index c5744b8..1d7cc9a 100644 --- a/public/app/toolbar/i18n/es.json +++ b/public/app/toolbar/i18n/es.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} ha iniciado sesión con sus credenciales.\nNo se permiten múltiples inicios de sesión", "LOGOUT": "Cerrar sesión", "SESSION_TIMEOUT": "La sesión se cerrará automáticamente después de 60 segundos.", + "PHONE2CALL": "Teléfono para llamar", "HUNGARIAN": "húngaro", "AUTOANSWER_NOTIFICATIONS": "Notificaciones de respuesta automática", "CHANNEL": "Canal", diff --git a/public/app/toolbar/i18n/et.json b/public/app/toolbar/i18n/et.json index ee22825..184add3 100644 --- a/public/app/toolbar/i18n/et.json +++ b/public/app/toolbar/i18n/et.json @@ -105,6 +105,7 @@ "WEBRTC_SPEAKER_NOT_AVAILABLE": "Kõlarit pole saadaval", "LOGOUT": "Logi välja", "SESSION_TIMEOUT": "Seanss suletakse 60 sekundi pärast automaatselt", + "PHONE2CALL": "Telefon helistamiseks", "HUNGARIAN": "ungari", "AUTOANSWER_NOTIFICATIONS": "Automaatne vastamine", "CHANNEL": "Kanal", diff --git a/public/app/toolbar/i18n/fa.json b/public/app/toolbar/i18n/fa.json index 767b497..cfe1d34 100644 --- a/public/app/toolbar/i18n/fa.json +++ b/public/app/toolbar/i18n/fa.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip} with با اعتبار خود وارد شوید.\nورود چندگانه مجاز نیست", "LOGOUT": "خروج", "SESSION_TIMEOUT": "جلسه پس از 60 ثانیه به طور خودکار بسته می شود", + "PHONE2CALL": "تلفن جهت تماس", "HUNGARIAN": "مجارستانی", "AUTOANSWER_NOTIFICATIONS": "پاسخ خودکار اعلان ها", "CHANNEL": "کانال", diff --git a/public/app/toolbar/i18n/fi.json b/public/app/toolbar/i18n/fi.json index 30e1292..3d92e58 100644 --- a/public/app/toolbar/i18n/fi.json +++ b/public/app/toolbar/i18n/fi.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} on kirjautunut sisään käyttöoikeustietosi.\nUseita kirjautumisia ei sallita", "LOGOUT": "Kirjautua ulos", "SESSION_TIMEOUT": "Istunto suljetaan automaattisesti 60 sekunnin kuluttua", + "PHONE2CALL": "Puhelin soittaa", "HUNGARIAN": "Unkarin kieli", "AUTOANSWER_NOTIFICATIONS": "Automaattinen vastaus ilmoitukset", "CHANNEL": "kanava", diff --git a/public/app/toolbar/i18n/fr.json b/public/app/toolbar/i18n/fr.json index 4fa8d42..9bbcaf5 100644 --- a/public/app/toolbar/i18n/fr.json +++ b/public/app/toolbar/i18n/fr.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} s'est connecté avec vos identifiants.\nLes connexions multiples ne sont pas autorisées", "LOGOUT": "Se déconnecter", "SESSION_TIMEOUT": "La session sera automatiquement fermée après 60 secondes", + "PHONE2CALL": "Téléphone pour appeler", "HUNGARIAN": "hongrois", "AUTOANSWER_NOTIFICATIONS": "Notifications de réponse automatique", "CHANNEL": "Canaliser", diff --git a/public/app/toolbar/i18n/he.json b/public/app/toolbar/i18n/he.json index 41c4f09..069ce4f 100644 --- a/public/app/toolbar/i18n/he.json +++ b/public/app/toolbar/i18n/he.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} התחבר עם האישורים שלך.\nאין להכניס כניסות מרובות", "LOGOUT": "להתנתק", "SESSION_TIMEOUT": "ההפעלה תיסגר אוטומטית לאחר 60 שניות", + "PHONE2CALL": "טלפון להתקשרות", "HUNGARIAN": "הוּנגָרִי", "AUTOANSWER_NOTIFICATIONS": "הודעות מענה אוטומטי", "CHANNEL": "עָרוּץ", diff --git a/public/app/toolbar/i18n/hi.json b/public/app/toolbar/i18n/hi.json index 8d5887e..665a579 100644 --- a/public/app/toolbar/i18n/hi.json +++ b/public/app/toolbar/i18n/hi.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} ने आपकी साख के साथ लॉग इन किया है।\nएकाधिक लॉगिन की अनुमति नहीं है", "LOGOUT": "लॉग आउट", "SESSION_TIMEOUT": "60 सेकंड के बाद सत्र स्वचालित रूप से बंद हो जाएगा", + "PHONE2CALL": "कॉल करने के लिए फोन", "HUNGARIAN": "हंगेरी", "AUTOANSWER_NOTIFICATIONS": "स्वतः उत्तर सूचनाएं", "CHANNEL": "चैनल", diff --git a/public/app/toolbar/i18n/hu.json b/public/app/toolbar/i18n/hu.json index f229581..5305370 100644 --- a/public/app/toolbar/i18n/hu.json +++ b/public/app/toolbar/i18n/hu.json @@ -120,6 +120,7 @@ "NUM_NOTIFICATIONS": "Értesítések", "OPENCHANNEL": "Nyílt csatorna", "SMS": "SMS", - "WHATSAPP": "Whatsapp" + "WHATSAPP": "Whatsapp", + "PHONE2CALL": "Telefon a híváshoz" } } diff --git a/public/app/toolbar/i18n/id.json b/public/app/toolbar/i18n/id.json index d1fe7ce..cdb770f 100644 --- a/public/app/toolbar/i18n/id.json +++ b/public/app/toolbar/i18n/id.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} telah masuk dengan kredensial Anda.\nBanyak login tidak diperbolehkan", "LOGOUT": "Keluar", "SESSION_TIMEOUT": "Sesi akan ditutup secara otomatis setelah 60 detik", + "PHONE2CALL": "Telepon untuk dihubungi", "HUNGARIAN": "Hongaria", "AUTOANSWER_NOTIFICATIONS": "Notifikasi jawaban otomatis", "CHANNEL": "Saluran", diff --git a/public/app/toolbar/i18n/it.json b/public/app/toolbar/i18n/it.json index 1be8395..6ae4616 100644 --- a/public/app/toolbar/i18n/it.json +++ b/public/app/toolbar/i18n/it.json @@ -106,6 +106,7 @@ "USER_FORCE_LOGOUT": "{{ip}} si è connesso con le tue credenziali. \nNon sono consentite connessioni multiple", "LOGOUT": "Disconnettersi", "SESSION_TIMEOUT": "La sessione verrà chiusa automaticamente dopo 60 secondi", + "PHONE2CALL": "Telefono per chiamare", "HELP": { "PREVIEW_RECALLME": "Questa è una chiamata Recall Me programmata per il {{date}}" }, diff --git a/public/app/toolbar/i18n/ja.json b/public/app/toolbar/i18n/ja.json index 7474c9a..61673c4 100644 --- a/public/app/toolbar/i18n/ja.json +++ b/public/app/toolbar/i18n/ja.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}}はあなたの認証情報でログインしています。\n複数のログインは許可されていません", "LOGOUT": "ログアウト", "SESSION_TIMEOUT": "セッションは60秒後に自動的に閉じられます", + "PHONE2CALL": "電話する", "HUNGARIAN": "ハンガリー語", "AUTOANSWER_NOTIFICATIONS": "自動応答通知", "CHANNEL": "チャネル", diff --git a/public/app/toolbar/i18n/ko.json b/public/app/toolbar/i18n/ko.json index 9ff43f1..6a67e36 100644 --- a/public/app/toolbar/i18n/ko.json +++ b/public/app/toolbar/i18n/ko.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}}이 (가) 귀하의 자격 증명으로 로그인했습니다.\n다중 로그인은 허용되지 않습니다.", "LOGOUT": "로그 아웃", "SESSION_TIMEOUT": "세션은 60 초 후에 자동으로 닫힙니다.", + "PHONE2CALL": "전화 걸기", "HUNGARIAN": "헝가리 인", "AUTOANSWER_NOTIFICATIONS": "자동 응답 알림", "CHANNEL": "채널", diff --git a/public/app/toolbar/i18n/lt.json b/public/app/toolbar/i18n/lt.json index 51065b6..0817df8 100644 --- a/public/app/toolbar/i18n/lt.json +++ b/public/app/toolbar/i18n/lt.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} prisijungė naudodamas savo įgaliojimus. Keli prisijungimai neleidžiami", "LOGOUT": "Atsijungti", "SESSION_TIMEOUT": "Po 60 sekundžių sesija bus automatiškai uždaryta", + "PHONE2CALL": "Telefonas skambinti", "HUNGARIAN": "vengrų", "AUTOANSWER_NOTIFICATIONS": "Automatinio atsakymo pranešimai", "CHANNEL": "Kanalas", diff --git a/public/app/toolbar/i18n/lv.json b/public/app/toolbar/i18n/lv.json index 7026342..2074cd1 100644 --- a/public/app/toolbar/i18n/lv.json +++ b/public/app/toolbar/i18n/lv.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} ir pieteicies ar jūsu akreditācijas datiem.\nVairāki pieteikumi nav atļauti", "LOGOUT": "Izlogoties", "SESSION_TIMEOUT": "Sesija tiks automātiski slēgta pēc 60 sekundēm", + "PHONE2CALL": "Tālrunis, lai zvanītu", "HUNGARIAN": "ungāru", "AUTOANSWER_NOTIFICATIONS": "Automātiskās atbildes paziņojumi", "CHANNEL": "Kanāls", diff --git a/public/app/toolbar/i18n/nl.json b/public/app/toolbar/i18n/nl.json index 9b255b5..7b95ad0 100644 --- a/public/app/toolbar/i18n/nl.json +++ b/public/app/toolbar/i18n/nl.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} is ingelogd met uw inloggegevens.\nMeerdere aanmeldingen zijn niet toegestaan", "LOGOUT": "Uitloggen", "SESSION_TIMEOUT": "De sessie wordt automatisch na 60 seconden afgesloten", + "PHONE2CALL": "Telefoon om te bellen", "HUNGARIAN": "Hongaars", "AUTOANSWER_NOTIFICATIONS": "Meldingen automatisch beantwoorden", "CHANNEL": "Kanaal", diff --git a/public/app/toolbar/i18n/no.json b/public/app/toolbar/i18n/no.json index d4a4268..7fbfe21 100644 --- a/public/app/toolbar/i18n/no.json +++ b/public/app/toolbar/i18n/no.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} har logget på med legitimasjonsbeskrivelsen.\nFlere pålogginger er ikke tillatt", "LOGOUT": "Logg ut", "SESSION_TIMEOUT": "Økten lukkes automatisk etter 60 sekunder", + "PHONE2CALL": "Telefon for å ringe", "HUNGARIAN": "ungarsk", "AUTOANSWER_NOTIFICATIONS": "Autosvar-varsler", "CHANNEL": "Kanal", diff --git a/public/app/toolbar/i18n/pl.json b/public/app/toolbar/i18n/pl.json index 2250070..97af4b4 100644 --- a/public/app/toolbar/i18n/pl.json +++ b/public/app/toolbar/i18n/pl.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} zalogował się przy użyciu Twoich danych logowania.\nWielokrotne logowanie jest niedozwolone", "LOGOUT": "Wyloguj", "SESSION_TIMEOUT": "Sesja zostanie automatycznie zamknięta po 60 sekundach", + "PHONE2CALL": "Telefon, aby zadzwonić", "HUNGARIAN": "język węgierski", "AUTOANSWER_NOTIFICATIONS": "Powiadomienia automatycznej odpowiedzi", "CHANNEL": "Kanał", diff --git a/public/app/toolbar/i18n/pt-BR.json b/public/app/toolbar/i18n/pt-BR.json index dda35e4..4f000e1 100644 --- a/public/app/toolbar/i18n/pt-BR.json +++ b/public/app/toolbar/i18n/pt-BR.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nVários logins não são permitidos", "LOGOUT": "Sair", "SESSION_TIMEOUT": "A sessão será fechada automaticamente após 60 segundos", + "PHONE2CALL": "Telefone para ligar", "HUNGARIAN": "húngaro", "AUTOANSWER_NOTIFICATIONS": "Notificações de resposta automática", "CHANNEL": "Canal", diff --git a/public/app/toolbar/i18n/pt-PT.json b/public/app/toolbar/i18n/pt-PT.json index 0e28412..c4a4134 100644 --- a/public/app/toolbar/i18n/pt-PT.json +++ b/public/app/toolbar/i18n/pt-PT.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nVários logins não são permitidos", "LOGOUT": "Sair", "SESSION_TIMEOUT": "A sessão será fechada automaticamente após 60 segundos", + "PHONE2CALL": "Telefone para ligar", "HUNGARIAN": "húngaro", "AUTOANSWER_NOTIFICATIONS": "Notificações de resposta automática", "CHANNEL": "Canal", diff --git a/public/app/toolbar/i18n/ru.json b/public/app/toolbar/i18n/ru.json index 7c78855..c935b01 100644 --- a/public/app/toolbar/i18n/ru.json +++ b/public/app/toolbar/i18n/ru.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} вошел в систему с вашими учетными данными.\nМножественные входы не разрешены", "LOGOUT": "Выйти", "SESSION_TIMEOUT": "Сессия будет автоматически закрыта через 60 секунд.", + "PHONE2CALL": "Телефон для звонка", "HUNGARIAN": "венгерский язык", "AUTOANSWER_NOTIFICATIONS": "Уведомления автоответчика", "CHANNEL": "Канал", diff --git a/public/app/toolbar/i18n/sv.json b/public/app/toolbar/i18n/sv.json index 0378f08..0a7354c 100644 --- a/public/app/toolbar/i18n/sv.json +++ b/public/app/toolbar/i18n/sv.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} har loggat in med dina referenser.\nFlera inloggningar är inte tillåtna", "LOGOUT": "Logga ut", "SESSION_TIMEOUT": "Sessionen stängs automatiskt efter 60 sekunder", + "PHONE2CALL": "Telefon för att ringa", "HUNGARIAN": "ungerska", "AUTOANSWER_NOTIFICATIONS": "Autosvar aviseringar", "CHANNEL": "Kanal", diff --git a/public/app/toolbar/i18n/tr.json b/public/app/toolbar/i18n/tr.json index 76ed0bb..6bd9402 100644 --- a/public/app/toolbar/i18n/tr.json +++ b/public/app/toolbar/i18n/tr.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}} kimlik bilgilerinizle giriş yaptı.\nBirden çok girişe izin verilmez", "LOGOUT": "Çıkış Yap", "SESSION_TIMEOUT": "60 saniye sonra oturum otomatik olarak kapatılacaktır", + "PHONE2CALL": "Aranacak telefon", "HUNGARIAN": "Macarca", "AUTOANSWER_NOTIFICATIONS": "Otomatik yanıt bildirimleri", "CHANNEL": "Kanal", diff --git a/public/app/toolbar/i18n/zh-CN.json b/public/app/toolbar/i18n/zh-CN.json index 25d0dd2..69d5010 100644 --- a/public/app/toolbar/i18n/zh-CN.json +++ b/public/app/toolbar/i18n/zh-CN.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}}已使用您的凭据登录。\n不允许多次登录", "LOGOUT": "登出", "SESSION_TIMEOUT": "该会话将在60秒后自动关闭", + "PHONE2CALL": "拨打电话", "HUNGARIAN": "匈牙利", "AUTOANSWER_NOTIFICATIONS": "自动回复通知", "CHANNEL": "渠道", diff --git a/public/app/toolbar/i18n/zh-TW.json b/public/app/toolbar/i18n/zh-TW.json index bb68a45..5da9717 100644 --- a/public/app/toolbar/i18n/zh-TW.json +++ b/public/app/toolbar/i18n/zh-TW.json @@ -105,6 +105,7 @@ "USER_FORCE_LOGOUT": "{{ip}}已使用您的憑據登錄。\n不允許多次登錄", "LOGOUT": "登出", "SESSION_TIMEOUT": "該會話將在60秒後自動關閉", + "PHONE2CALL": "撥打電話", "HUNGARIAN": "匈牙利", "AUTOANSWER_NOTIFICATIONS": "自動回复通知", "CHANNEL": "渠道", diff --git a/public/index.html b/public/index.html index 6af375b..87701a9 100644 --- a/public/index.html +++ b/public/index.html @@ -1,36 +1,34 @@ - + - - - - + + + + xCALLY Motion - + - + +

You are using an outdated browser. Please upgrade + your browser to improve your experience.

+ +
@@ -68,7 +66,7 @@ - + diff --git a/public/scripts/app.d1d6b36c.js b/public/scripts/app.47e9bb58.js similarity index 52% rename from public/scripts/app.d1d6b36c.js rename to public/scripts/app.47e9bb58.js index 94edeca..796dcac 100644 --- a/public/scripts/app.d1d6b36c.js +++ b/public/scripts/app.47e9bb58.js @@ -1 +1 @@ -!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.client-side-logging",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors","app.user-setting","app.client-side-logging"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=""<\/span>/gi,"").replace("","").replace("",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(s,o,e,t){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function l(n){return e[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;nNumber(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),a()}function d(){var e=m();r.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),p(),r.pendingCondition.style=null,r.pendingCondition=void 0}function m(){return{name:r.selectedField.name,operator:s.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:u(r.value),displayEndValue:u(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=d,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=c,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){{if(r.selectedField.options.routes&&Array.isArray(r.selectedField.options.routes)){var e=angular.copy(r.selectedField.options.routes),n=_.map(e,function(e){return l(e)});return o.all(n).then(function(e){r.selectedField.values=_.flatten(e)})}var t=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var a=0;a
',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("
"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('
')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n'),r=angular.element('
'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('
'),i=angular.element('
'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0 target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50 session",e._request),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function O(e,n){y.debug("terminate -> session",e._request),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return y.debug("getVoiceChannels -> session",t._request),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=w.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}));for(var a=0;a session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){y.debug("referAttended -> session",e._request),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1 evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('
');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;ee.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeftt.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('
');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0{{ vm.timer }}",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",ngChange:"&"},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;tl.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;tl.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;so.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;te.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t){var e={getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},setAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));e.globalStatusDisplayValue=n},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;an.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i"+(e.name||"extractedReport")+" will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent(""+f.selectedExtractedReports.length+" selected will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n"+(e.name||"metric")+" will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent(""+f.selectedMetrics.length+" selected will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n"+e.field+" will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent(""+c.selectedReportFields.length+" selected will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n"+e.name+" will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent(""+p.selectedReports.length+" selected will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0"+(t.text?t.text:"Node")+" and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n"+(e.name||"odbc")+" will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent(""+f.selectedODBC.length+" selected will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n"+e.name+" will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent(""+p.selectedProjects.length+" selected will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n"+(e.name||"squareRecording")+" will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent(""+f.selectedSquareRecordings.length+" selected will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n"+(e.name||"chatQueue")+" will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent(""+f.selectedChatQueues.length+" selected will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent(""+(e.name||"chatWebsite")+" will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent(""+f.selectedChatWebsites.length+" selected will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i"+e.app+" will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent(""+r.selectedChatWebsiteApps.length+" selected will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+" will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent(""+m.selectedChatWebsiteChatCannedAnswers.length+" selected will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent(""+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+" will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n"+m.selectedChatWebsiteInteractions.length+" selected will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+" will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent(""+m.selectedChatWebsiteOfflineMessages.length+" selected will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?|(]*>|]*>|]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+" will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent(""+m.selectedChatWebsiteProactiveActions.length+" selected will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n