diff --git a/db/changes/233001/00-clientSms.sql b/db/changes/233001/00-clientSms.sql
new file mode 100644
index 0000000000..353041ad90
--- /dev/null
+++ b/db/changes/233001/00-clientSms.sql
@@ -0,0 +1,15 @@
+CREATE TABLE `vn`.`clientSms` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `clientFk` int(11) NOT NULL,
+ `smsFk` mediumint(8) unsigned NOT NULL,
+ PRIMARY KEY (`id`),
+ KEY `clientSms_FK` (`clientFk`),
+ KEY `clientSms_FK_1` (`smsFk`),
+ CONSTRAINT `clientSms_FK` FOREIGN KEY (`clientFk`) REFERENCES `client` (`id`) ON UPDATE CASCADE,
+ CONSTRAINT `clientSms_FK_1` FOREIGN KEY (`smsFk`) REFERENCES `sms` (`id`) ON UPDATE CASCADE
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+
+INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`)
+ VALUES
+ ('ClientSms', '*', 'READ', 'ALLOW', 'ROLE', 'employee'),
+ ('ClientSms', '*', 'WRITE', 'ALLOW', 'ROLE', 'employee');
diff --git a/modules/client/back/methods/client/sendSms.js b/modules/client/back/methods/client/sendSms.js
index 83b7c8d6ed..270d7e5b5d 100644
--- a/modules/client/back/methods/client/sendSms.js
+++ b/modules/client/back/methods/client/sendSms.js
@@ -7,7 +7,7 @@ module.exports = Self => {
arg: 'id',
type: 'number',
required: true,
- description: 'The ticket id',
+ description: 'The client id',
http: {source: 'path'}
},
{
@@ -33,6 +33,12 @@ module.exports = Self => {
Self.sendSms = async(ctx, id, destination, message) => {
const models = Self.app.models;
const sms = await models.Sms.send(ctx, destination, message);
+
+ await models.ClientSms.create({
+ clientFk: id,
+ smsFk: sms.id
+ });
+
return sms;
};
};
diff --git a/modules/client/back/model-config.json b/modules/client/back/model-config.json
index 1e06ea1c05..bc48ec360c 100644
--- a/modules/client/back/model-config.json
+++ b/modules/client/back/model-config.json
@@ -95,6 +95,9 @@
"ClientSample": {
"dataSource": "vn"
},
+ "ClientSms": {
+ "dataSource": "vn"
+ },
"Sms": {
"dataSource": "vn"
},
diff --git a/modules/client/back/models/client-sms.json b/modules/client/back/models/client-sms.json
new file mode 100644
index 0000000000..18d7ad051d
--- /dev/null
+++ b/modules/client/back/models/client-sms.json
@@ -0,0 +1,29 @@
+{
+ "name": "ClientSms",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "clientSms"
+ }
+ },
+ "properties": {
+ "id": {
+ "type": "number",
+ "id": true,
+ "description": "Identifier"
+ },
+ "clientFk": {
+ "type": "number"
+ },
+ "smsFk": {
+ "type": "number"
+ }
+ },
+ "relations": {
+ "sms": {
+ "type": "belongsTo",
+ "model": "Sms",
+ "foreignKey": "smsFk"
+ }
+ }
+}
diff --git a/modules/client/back/models/sms.json b/modules/client/back/models/sms.json
index 4639131ef6..8f349b073e 100644
--- a/modules/client/back/models/sms.json
+++ b/modules/client/back/models/sms.json
@@ -36,7 +36,7 @@
}
},
"relations": {
- "sender": {
+ "user": {
"type": "belongsTo",
"model": "VnUser",
"foreignKey": "senderFk"
diff --git a/modules/client/front/index.js b/modules/client/front/index.js
index c7e39ea5d6..62076459b2 100644
--- a/modules/client/front/index.js
+++ b/modules/client/front/index.js
@@ -48,4 +48,5 @@ import './notification';
import './unpaid';
import './extended-list';
import './credit-management';
+import './sms';
diff --git a/modules/client/front/routes.json b/modules/client/front/routes.json
index 01d1b53bf6..773b7b22ab 100644
--- a/modules/client/front/routes.json
+++ b/modules/client/front/routes.json
@@ -23,6 +23,7 @@
{"state": "client.card.recovery.index", "icon": "icon-recovery"},
{"state": "client.card.webAccess", "icon": "cloud"},
{"state": "client.card.log", "icon": "history"},
+ {"state": "client.card.sms", "icon": "contact_support"},
{
"description": "Credit management",
"icon": "monetization_on",
@@ -373,6 +374,12 @@
"component": "vn-client-log",
"description": "Log"
},
+ {
+ "url" : "/sms",
+ "state": "client.card.sms",
+ "component": "vn-client-sms",
+ "description": "Sms"
+ },
{
"url": "/dms",
"state": "client.card.dms",
diff --git a/modules/client/front/sms/index.html b/modules/client/front/sms/index.html
new file mode 100644
index 0000000000..db944e3b0a
--- /dev/null
+++ b/modules/client/front/sms/index.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+ Sender
+ Number sender
+ Destination
+ Message
+ Status
+ Created
+
+
+
+
+
+
+ {{::clientSms.sms.user.name}}
+
+
+ {{::clientSms.sms.sender}}
+ {{::clientSms.sms.destination}}
+ {{::clientSms.sms.message}}
+ {{::clientSms.sms.status}}
+ {{::clientSms.sms.created | date:'dd/MM/yyyy HH:mm'}}
+
+
+
+
+
+
+
diff --git a/modules/client/front/sms/index.js b/modules/client/front/sms/index.js
new file mode 100644
index 0000000000..1478b78e9d
--- /dev/null
+++ b/modules/client/front/sms/index.js
@@ -0,0 +1,39 @@
+import ngModule from '../module';
+import Section from 'salix/components/section';
+
+export default class Controller extends Section {
+ constructor($element, $) {
+ super($element, $);
+
+ this.filter = {
+ fields: ['id', 'smsFk'],
+ include: {
+ relation: 'sms',
+ scope: {
+ fields: [
+ 'senderFk',
+ 'sender',
+ 'destination',
+ 'message',
+ 'statusCode',
+ 'status',
+ 'created'],
+ include: {
+ relation: 'user',
+ scope: {
+ fields: ['name']
+ }
+ }
+ }
+ }
+ };
+ }
+}
+
+ngModule.vnComponent('vnClientSms', {
+ template: require('./index.html'),
+ controller: Controller,
+ bindings: {
+ client: '<'
+ }
+});
diff --git a/modules/client/front/sms/locale/es.yml b/modules/client/front/sms/locale/es.yml
new file mode 100644
index 0000000000..6d1e9e147f
--- /dev/null
+++ b/modules/client/front/sms/locale/es.yml
@@ -0,0 +1,2 @@
+Sender: Remitente
+Number sender: NĂºmero remitente