diff --git a/db/changes/233001/00-clientSms.sql b/db/changes/233001/00-clientSms.sql
new file mode 100644
index 000000000..e1e34f6b2
--- /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=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
+
+INSERT INTO `salix`.`ACL` (`model`, `property`, `accessType`, `permission`, `principalType`, `principalId`)
+ VALUES
+ ('ClientSms', 'find', 'READ', 'ALLOW', 'ROLE', 'employee'),
+ ('ClientSms', 'create', 'WRITE', 'ALLOW', 'ROLE', 'employee');
diff --git a/modules/client/back/methods/client/sendSms.js b/modules/client/back/methods/client/sendSms.js
index 83b7c8d6e..270d7e5b5 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 1e06ea1c0..bc48ec360 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 000000000..b2244ebbb
--- /dev/null
+++ b/modules/client/back/models/client-sms.json
@@ -0,0 +1,26 @@
+{
+ "name": "ClientSms",
+ "base": "VnModel",
+ "options": {
+ "mysql": {
+ "table": "clientSms"
+ }
+ },
+ "properties": {
+ "id": {
+ "type": "number",
+ "id": true,
+ "description": "Identifier"
+ },
+ "clientFk": {
+ "type": "number"
+ }
+ },
+ "relations": {
+ "sms": {
+ "type": "belongsTo",
+ "model": "Sms",
+ "foreignKey": "smsFk"
+ }
+ }
+}
diff --git a/modules/client/front/index.js b/modules/client/front/index.js
index c7e39ea5d..62076459b 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 01d1b53bf..63d6709e5 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": "sms"},
{
"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 000000000..9abadd312
--- /dev/null
+++ b/modules/client/front/sms/index.html
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+ Sender
+ Destination
+ Message
+ Status
+ Created
+
+
+
+
+
+
+ {{::clientSms.sms.sender.name}}
+
+
+ {{::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 000000000..6ad64282e
--- /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: 'sender',
+ 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 000000000..6d1e9e147
--- /dev/null
+++ b/modules/client/front/sms/locale/es.yml
@@ -0,0 +1,2 @@
+Sender: Remitente
+Number sender: NĂºmero remitente