@adlfe/campaign-management-library 2.11.11 → 2.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adlfe-campaign-management-library.d.ts +11 -14
- package/adlfe-campaign-management-library.metadata.json +1 -1
- package/bundles/adlfe-campaign-management-library.umd.js +422 -265
- package/bundles/adlfe-campaign-management-library.umd.js.map +1 -1
- package/bundles/adlfe-campaign-management-library.umd.min.js +2 -2
- package/bundles/adlfe-campaign-management-library.umd.min.js.map +1 -1
- package/esm2015/adlfe-campaign-management-library.js +12 -15
- package/esm2015/environments/environment.js +3 -3
- package/esm2015/lib/campaign-management/models/general-information-wa-req.model.js +37 -9
- package/esm2015/lib/campaign-management/models/template-wa.model.js +1 -1
- package/esm2015/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.js +1 -1
- package/esm2015/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +328 -223
- package/esm2015/lib/campaign-management/modules/new-campaign/general-information/general-information.component.js +6 -12
- package/esm2015/lib/campaign-management/modules/new-campaign/new-number-bases/new-number-bases.component.js +24 -11
- package/esm2015/lib/core/const/validation-message.const.js +2 -1
- package/esm2015/public-api.js +6 -1
- package/esm5/adlfe-campaign-management-library.js +12 -15
- package/esm5/environments/environment.js +3 -3
- package/esm5/lib/campaign-management/models/general-information-wa-req.model.js +38 -9
- package/esm5/lib/campaign-management/models/template-wa.model.js +1 -1
- package/esm5/lib/campaign-management/modules/campaign-index/component/filter-in-list-of-campaign/filter-in-list-of-campaign.component.js +1 -1
- package/esm5/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.js +341 -222
- package/esm5/lib/campaign-management/modules/new-campaign/general-information/general-information.component.js +6 -12
- package/esm5/lib/campaign-management/modules/new-campaign/new-number-bases/new-number-bases.component.js +24 -11
- package/esm5/lib/core/const/validation-message.const.js +2 -1
- package/esm5/public-api.js +6 -1
- package/fesm2015/adlfe-campaign-management-library.js +394 -253
- package/fesm2015/adlfe-campaign-management-library.js.map +1 -1
- package/fesm5/adlfe-campaign-management-library.js +407 -252
- package/fesm5/adlfe-campaign-management-library.js.map +1 -1
- package/lib/campaign-management/models/general-information-wa-req.model.d.ts +5 -0
- package/lib/campaign-management/modules/new-campaign/components/general-information-wa/general-information-wa.component.d.ts +10 -3
- package/lib/core/const/validation-message.const.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +5 -0
|
@@ -992,11 +992,11 @@
|
|
|
992
992
|
}
|
|
993
993
|
// 4. Cek Demo Dev secara spesifik
|
|
994
994
|
else if (origin.includes('demo-dev')) {
|
|
995
|
-
API_CONST = 'https://
|
|
995
|
+
API_CONST = 'https://api-staging.neuapix.com';
|
|
996
996
|
}
|
|
997
997
|
// 5. Default (Localhost atau lainnya)
|
|
998
998
|
else {
|
|
999
|
-
API_CONST = 'https://
|
|
999
|
+
API_CONST = 'https://api-staging.neuapix.com';
|
|
1000
1000
|
}
|
|
1001
1001
|
var environment = {
|
|
1002
1002
|
production: false,
|
|
@@ -1619,6 +1619,7 @@
|
|
|
1619
1619
|
catalogue: [{ type: 'required', message: 'Catalog is required' }],
|
|
1620
1620
|
product: [{ type: 'required', message: 'Product is required' }],
|
|
1621
1621
|
body: [{ type: 'maxlength', message: 'Maximum character 100' }],
|
|
1622
|
+
paramName: [{ type: 'required', message: 'Variable Name is required' }],
|
|
1622
1623
|
};
|
|
1623
1624
|
var GeneralInformationEmailMessageValidationConst = {
|
|
1624
1625
|
channel: [{ type: 'required', message: 'Message Type is required' }],
|
|
@@ -1912,7 +1913,7 @@
|
|
|
1912
1913
|
core.Component({
|
|
1913
1914
|
selector: 'lib-filter-in-list-of-campaign',
|
|
1914
1915
|
template: "<p class=\"font-16px font-bold\">Filter</p>\r\n\r\n<form [formGroup]=\"form\" class=\"contact-filter\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-70\">\r\n <mat-label>Business Name</mat-label>\r\n <mat-select placeholder=\"Select Business Name\" formControlName=\"businessName\">\r\n <div class=\"select-search\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n (searchRes)=\"businessNameSearch($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option value=\"\"> --- select none --- </mat-option>\r\n <mat-option\r\n *ngFor=\"let option of filteredBusinessNameOption\"\r\n [value]=\"option.id\"\r\n >\r\n {{ option.name }}\r\n </mat-option>\r\n <mat-option *ngIf=\"!filteredBusinessNameOption.length\" disabled>\r\n No data found\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-70\">\r\n <mat-label>Channel</mat-label>\r\n\r\n <mat-select placeholder=\"Select the Channel\" formControlName=\"medium\">\r\n <mat-option value=\"\"> --- select none --- </mat-option>\r\n <mat-option\r\n *ngFor=\"let option of filteredChannelOption\"\r\n [value]=\"option.value\"\r\n (click)=\"getTemplateOptionService()\"\r\n >\r\n {{ option.label }}\r\n </mat-option>\r\n <mat-option *ngIf=\"!filteredChannelOption.length\" disabled>\r\n No data found\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Template Name</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"templateName\"\r\n placeholder=\"Select template\"\r\n [complete]=\"isHaveNextTemplateOption === false\"\r\n [compareWith]=\"templateSelectedDisplay\"\r\n (infiniteScroll)=\"getNextTemplateBatch()\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('templateName').value?.name\"\r\n (searchRes)=\"templateSearch($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of templateOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingTemplateOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-70\">\r\n <mat-label>Status</mat-label>\r\n\r\n <mat-select placeholder=\"Select the Status\" formControlName=\"status\">\r\n <div class=\"select-search\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n (searchRes)=\"statusSearch($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option value=\"\"> --- select none --- </mat-option>\r\n <mat-option\r\n *ngFor=\"let option of filteredStatusOption\"\r\n [value]=\"option.value\"\r\n >\r\n {{ option.label }}\r\n </mat-option>\r\n <mat-option *ngIf=\"!filteredStatusOption.length\" disabled>\r\n No data found\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label> Start Date </mat-label>\r\n <input\r\n matInput\r\n [matDatepicker]=\"startDatePicker\"\r\n formControlName=\"startDate\"\r\n class=\"mat-datepicker-input\"\r\n (dateChange)=\"validateBackDate()\"\r\n />\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"startDatePicker\">\r\n </mat-datepicker-toggle>\r\n <mat-icon\r\n *ngIf=\"form.get('startDate').value\"\r\n matDatepickerToggleIcon\r\n (click)=\"clearDate()\"\r\n >clear</mat-icon\r\n >\r\n <mat-datepicker #startDatePicker></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div class=\"col-md-12 col-12\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label> End Date </mat-label>\r\n <input\r\n matInput\r\n [min]=\"form.get('startDate').value\"\r\n [matDatepicker]=\"endDatePicker\"\r\n formControlName=\"endDate\"\r\n class=\"mat-datepicker-input\"\r\n (dateChange)=\"validateBackDate()\"\r\n />\r\n\r\n <mat-datepicker-toggle matSuffix [for]=\"endDatePicker\"> </mat-datepicker-toggle>\r\n <mat-icon\r\n *ngIf=\"form.get('endDate').value\"\r\n matDatepickerToggleIcon\r\n (click)=\"clearDate()\"\r\n >clear</mat-icon\r\n >\r\n <mat-datepicker #endDatePicker></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n\r\n <div style=\"display: flex; flex: 1; width: 100%\">\r\n <button\r\n mat-stroked-button\r\n color=\"primary-telin\"\r\n class=\"telin-font-color w-48\"\r\n style=\"width: 100%; margin-bottom: 10px\"\r\n (click)=\"onReset()\"\r\n >\r\n Reset\r\n </button>\r\n </div>\r\n <div class=\"d-flex justify-content-between\">\r\n <button mat-stroked-button color=\"secondary-telin\" class=\"w-48\" (click)=\"onCancel()\">\r\n Cancel\r\n </button>\r\n\r\n <button mat-flat-button color=\"primary-telin-blue2\" class=\"w-48\" (click)=\"onApply()\">\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n",
|
|
1915
|
-
styles: [".contact-filter .platform{display
|
|
1916
|
+
styles: [".contact-filter .platform{display:grid;grid-gap:5px;grid-template-columns:auto 1fr auto}.button-row{margin:8px 8px 8px 0}.mat-datepicker-input{width:85%}.mat-icon{position:relative;float:right;top:-7px;cursor:pointer;color:rgba(0,0,0,.54)}.select-search{margin:20px}"]
|
|
1916
1917
|
}),
|
|
1917
1918
|
core.Injectable({
|
|
1918
1919
|
providedIn: 'root',
|
|
@@ -2685,14 +2686,12 @@
|
|
|
2685
2686
|
function GeneralInformationWAReqModel() {
|
|
2686
2687
|
}
|
|
2687
2688
|
GeneralInformationWAReqModel.prototype.clone = function (source) {
|
|
2688
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
2689
|
-
/* Source Mapping */
|
|
2689
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
2690
2690
|
if (((_a = source) === null || _a === void 0 ? void 0 : _a.media) === 'IMAGE' ||
|
|
2691
2691
|
((_b = source) === null || _b === void 0 ? void 0 : _b.media) === 'VIDEO' ||
|
|
2692
2692
|
((_c = source) === null || _c === void 0 ? void 0 : _c.media) === 'DOCUMENT') {
|
|
2693
2693
|
source.channel = source.media;
|
|
2694
2694
|
}
|
|
2695
|
-
/* ./ Source Mapping */
|
|
2696
2695
|
if (source.campaignName) {
|
|
2697
2696
|
this.name = source.campaignName;
|
|
2698
2697
|
}
|
|
@@ -2724,6 +2723,12 @@
|
|
|
2724
2723
|
fileName: source.fileName,
|
|
2725
2724
|
};
|
|
2726
2725
|
}
|
|
2726
|
+
if (source.buttonParams && Array.isArray(source.buttonParams)) {
|
|
2727
|
+
this.buttonParams = source.buttonParams.map(function (btn) { return ({
|
|
2728
|
+
label: btn.label,
|
|
2729
|
+
payload: btn.payload ? btn.payload : btn.label,
|
|
2730
|
+
}); });
|
|
2731
|
+
}
|
|
2727
2732
|
if (source.template) {
|
|
2728
2733
|
this.template = {
|
|
2729
2734
|
id: source.template.ID,
|
|
@@ -2731,12 +2736,21 @@
|
|
|
2731
2736
|
lang: source.template.lang,
|
|
2732
2737
|
headerUrl: source.targetURL,
|
|
2733
2738
|
header: (_g = (_f = source.paramHeader) === null || _f === void 0 ? void 0 : _f.map(function (t) { return t.name; }), (_g !== null && _g !== void 0 ? _g : [])),
|
|
2734
|
-
data: (
|
|
2735
|
-
|
|
2739
|
+
data: ((_h = source.variables) === null || _h === void 0 ? void 0 : _h.length) ? source.variables.map(function (v) { return v.paramName; })
|
|
2740
|
+
: (_k = (_j = source.paramBody) === null || _j === void 0 ? void 0 : _j.map(function (t) { return t.name; }), (_k !== null && _k !== void 0 ? _k : [])),
|
|
2741
|
+
button: (_l = source.paramButton) === null || _l === void 0 ? void 0 : _l.reduce(function (result, each) {
|
|
2736
2742
|
var _a;
|
|
2737
2743
|
result.push((_a = each.name.map(function (t) { return t.name; }), (_a !== null && _a !== void 0 ? _a : [])));
|
|
2738
2744
|
return result;
|
|
2739
2745
|
}, []),
|
|
2746
|
+
buttonParams: source.buttonParams
|
|
2747
|
+
? source.buttonParams.map(function (btn) {
|
|
2748
|
+
return {
|
|
2749
|
+
label: btn.label,
|
|
2750
|
+
payload: btn.payload ? btn.payload : btn.label,
|
|
2751
|
+
};
|
|
2752
|
+
})
|
|
2753
|
+
: [],
|
|
2740
2754
|
};
|
|
2741
2755
|
if (source.template.category === 'AUTHENTICATION')
|
|
2742
2756
|
this.template = {
|
|
@@ -2745,6 +2759,7 @@
|
|
|
2745
2759
|
header: null,
|
|
2746
2760
|
data: [source.otpValue],
|
|
2747
2761
|
button: [[source.otpValue]],
|
|
2762
|
+
buttonParams: [],
|
|
2748
2763
|
};
|
|
2749
2764
|
if (source.template.ID)
|
|
2750
2765
|
this.template.id = source.template.ID;
|
|
@@ -2752,11 +2767,25 @@
|
|
|
2752
2767
|
if (this.type === 'utility') {
|
|
2753
2768
|
this.type = 'template';
|
|
2754
2769
|
this.category = 'utility';
|
|
2755
|
-
|
|
2770
|
+
var mappedVariables = ((_o = (_m = source) === null || _m === void 0 ? void 0 : _m.variables) === null || _o === void 0 ? void 0 : _o.length) ? source.variables.map(function (v) { return v.paramName; })
|
|
2771
|
+
: [];
|
|
2772
|
+
if ((_p = source) === null || _p === void 0 ? void 0 : _p.isUseExistingTemplate) {
|
|
2773
|
+
this.template = __assign(__assign({}, source.template), { data: mappedVariables.length > 0 ? mappedVariables : source.template.data || [] });
|
|
2774
|
+
}
|
|
2775
|
+
else {
|
|
2776
|
+
this.template = {
|
|
2777
|
+
name: '',
|
|
2778
|
+
lang: 'id',
|
|
2779
|
+
header: null,
|
|
2780
|
+
button: null,
|
|
2781
|
+
data: mappedVariables,
|
|
2782
|
+
buttonParams: [],
|
|
2783
|
+
};
|
|
2784
|
+
}
|
|
2756
2785
|
this.isNeedSave = source.isNeedSave;
|
|
2757
2786
|
this.ttlSeconds = source.ttl;
|
|
2758
|
-
if ((
|
|
2759
|
-
this.text = (_r = (
|
|
2787
|
+
if ((_q = source) === null || _q === void 0 ? void 0 : _q.isUseExistingTemplate) {
|
|
2788
|
+
this.text = ((_r = source) === null || _r === void 0 ? void 0 : _r.text) || ((_u = (_t = (_s = source) === null || _s === void 0 ? void 0 : _s.template) === null || _t === void 0 ? void 0 : _t.body) === null || _u === void 0 ? void 0 : _u.text);
|
|
2760
2789
|
}
|
|
2761
2790
|
}
|
|
2762
2791
|
return this;
|
|
@@ -4307,9 +4336,8 @@
|
|
|
4307
4336
|
};
|
|
4308
4337
|
Object.defineProperty(GeneralInformationWAComponent.prototype, "getCampaignStorage", {
|
|
4309
4338
|
get: function () {
|
|
4310
|
-
|
|
4311
|
-
|
|
4312
|
-
: {};
|
|
4339
|
+
var campaignData = localStorage.getItem('telin.campaign');
|
|
4340
|
+
return campaignData ? JSON.parse(campaignData) : {};
|
|
4313
4341
|
},
|
|
4314
4342
|
enumerable: true,
|
|
4315
4343
|
configurable: true
|
|
@@ -4341,6 +4369,10 @@
|
|
|
4341
4369
|
isUseExistingTemplate: new forms.FormControl(false),
|
|
4342
4370
|
isNeedSave: new forms.FormControl(false),
|
|
4343
4371
|
ttl: new forms.FormControl(null),
|
|
4372
|
+
isDownloadVariableXLS: new forms.FormControl(false),
|
|
4373
|
+
variables: new forms.FormArray([]),
|
|
4374
|
+
useXlsx: new forms.FormControl(false),
|
|
4375
|
+
buttonParams: new forms.FormArray([]),
|
|
4344
4376
|
});
|
|
4345
4377
|
this.form.valueChanges.subscribe(function () {
|
|
4346
4378
|
setTimeout(function () {
|
|
@@ -4355,133 +4387,152 @@
|
|
|
4355
4387
|
this.form.disable();
|
|
4356
4388
|
};
|
|
4357
4389
|
GeneralInformationWAComponent.prototype.initEdit = function () {
|
|
4358
|
-
var
|
|
4359
|
-
|
|
4360
|
-
|
|
4390
|
+
var _this = this;
|
|
4391
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10;
|
|
4392
|
+
var storageData = this.getCampaignStorage;
|
|
4393
|
+
var formValues = (_b = (_a = storageData) === null || _a === void 0 ? void 0 : _a.generalInformation) === null || _b === void 0 ? void 0 : _b.form;
|
|
4394
|
+
if (!storageData ||
|
|
4395
|
+
Object.entries(storageData).length === 0 ||
|
|
4396
|
+
((_c = formValues) === null || _c === void 0 ? void 0 : _c.medium) !== 'WA') {
|
|
4361
4397
|
return;
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4366
|
-
|
|
4367
|
-
|
|
4368
|
-
this.
|
|
4369
|
-
|
|
4370
|
-
|
|
4371
|
-
this.
|
|
4372
|
-
|
|
4373
|
-
|
|
4374
|
-
this.
|
|
4375
|
-
|
|
4376
|
-
|
|
4377
|
-
|
|
4378
|
-
.
|
|
4379
|
-
.
|
|
4380
|
-
|
|
4381
|
-
|
|
4382
|
-
|
|
4383
|
-
|
|
4384
|
-
|
|
4385
|
-
|
|
4386
|
-
|
|
4387
|
-
this.form
|
|
4388
|
-
.get('isNeedSave')
|
|
4389
|
-
.setValue(!!((_5 = (_4 = (_3 = this.getCampaignStorage) === null || _3 === void 0 ? void 0 : _3.generalInformation) === null || _4 === void 0 ? void 0 : _4.form) === null || _5 === void 0 ? void 0 : _5.isNeedSave));
|
|
4390
|
-
this.form.get('ttl').setValue((_8 = (_7 = (_6 = this.getCampaignStorage) === null || _6 === void 0 ? void 0 : _6.generalInformation) === null || _7 === void 0 ? void 0 : _7.form) === null || _8 === void 0 ? void 0 : _8.ttl);
|
|
4391
|
-
this.isHaveTemplateParam = this.form.get('isUpload').value;
|
|
4392
|
-
this.getTemplateOptionService(null, (_9 = this.form.get('template').value) === null || _9 === void 0 ? void 0 : _9.name);
|
|
4398
|
+
}
|
|
4399
|
+
(_d = this.getControl('channel')) === null || _d === void 0 ? void 0 : _d.setValue((_e = formValues) === null || _e === void 0 ? void 0 : _e.channel);
|
|
4400
|
+
(_f = this.getControl('media')) === null || _f === void 0 ? void 0 : _f.setValue((_g = formValues) === null || _g === void 0 ? void 0 : _g.media);
|
|
4401
|
+
(_h = this.getControl('from')) === null || _h === void 0 ? void 0 : _h.setValue((_j = formValues) === null || _j === void 0 ? void 0 : _j.from);
|
|
4402
|
+
(_k = this.getControl('text')) === null || _k === void 0 ? void 0 : _k.setValue((_l = formValues) === null || _l === void 0 ? void 0 : _l.text);
|
|
4403
|
+
(_m = this.getControl('targetURL')) === null || _m === void 0 ? void 0 : _m.setValue((_o = formValues) === null || _o === void 0 ? void 0 : _o.targetURL);
|
|
4404
|
+
(_p = this.getControl('fileName')) === null || _p === void 0 ? void 0 : _p.setValue((_r = (_q = formValues) === null || _q === void 0 ? void 0 : _q.fileName, (_r !== null && _r !== void 0 ? _r : (_s = this.getControl('targetURL')) === null || _s === void 0 ? void 0 : _s.value)));
|
|
4405
|
+
(_t = this.getControl('template')) === null || _t === void 0 ? void 0 : _t.setValue((_u = formValues) === null || _u === void 0 ? void 0 : _u.template);
|
|
4406
|
+
(_v = this.getControl('isUpload')) === null || _v === void 0 ? void 0 : _v.setValue((_w = formValues) === null || _w === void 0 ? void 0 : _w.isUpload);
|
|
4407
|
+
(_x = this.getControl('fileId')) === null || _x === void 0 ? void 0 : _x.setValue((_y = formValues) === null || _y === void 0 ? void 0 : _y.fileId);
|
|
4408
|
+
(_z = this.getControl('otpValue')) === null || _z === void 0 ? void 0 : _z.setValue((_0 = formValues) === null || _0 === void 0 ? void 0 : _0.otpValue);
|
|
4409
|
+
(_1 = this.getControl('isUseExistingTemplate')) === null || _1 === void 0 ? void 0 : _1.setValue(!!((_2 = formValues) === null || _2 === void 0 ? void 0 : _2.templateName));
|
|
4410
|
+
(_3 = this.getControl('isNeedSave')) === null || _3 === void 0 ? void 0 : _3.setValue(!!((_4 = formValues) === null || _4 === void 0 ? void 0 : _4.isNeedSave));
|
|
4411
|
+
(_5 = this.getControl('ttl')) === null || _5 === void 0 ? void 0 : _5.setValue((_6 = formValues) === null || _6 === void 0 ? void 0 : _6.ttl);
|
|
4412
|
+
var savedVariables = (_7 = formValues) === null || _7 === void 0 ? void 0 : _7.variables;
|
|
4413
|
+
if (savedVariables && Array.isArray(savedVariables) && savedVariables.length > 0) {
|
|
4414
|
+
this.variables.clear();
|
|
4415
|
+
savedVariables.forEach(function (item) {
|
|
4416
|
+
_this.variables.push(new forms.FormGroup({
|
|
4417
|
+
paramName: new forms.FormControl({ value: item.paramName || '', disabled: _this.isReadOnlyMode }, forms.Validators.required),
|
|
4418
|
+
}));
|
|
4419
|
+
});
|
|
4420
|
+
}
|
|
4421
|
+
this.isHaveTemplateParam = (_8 = this.getControl('isUpload')) === null || _8 === void 0 ? void 0 : _8.value;
|
|
4422
|
+
this.getTemplateOptionService(null, (_10 = (_9 = this.getControl('template')) === null || _9 === void 0 ? void 0 : _9.value) === null || _10 === void 0 ? void 0 : _10.name);
|
|
4393
4423
|
};
|
|
4394
4424
|
GeneralInformationWAComponent.prototype.initValidation = function () {
|
|
4425
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17;
|
|
4426
|
+
if (!this.form)
|
|
4427
|
+
return;
|
|
4395
4428
|
for (var key in this.form.controls) {
|
|
4396
|
-
this.form.controls[key]
|
|
4397
|
-
|
|
4429
|
+
if (this.form.controls[key]) {
|
|
4430
|
+
this.form.controls[key].clearValidators();
|
|
4431
|
+
this.form.controls[key].updateValueAndValidity();
|
|
4432
|
+
}
|
|
4398
4433
|
}
|
|
4399
|
-
this.
|
|
4434
|
+
(_a = this.getControl('channel')) === null || _a === void 0 ? void 0 : _a.setValidators(forms.Validators.required);
|
|
4400
4435
|
if (this.getIsText) {
|
|
4401
|
-
this.
|
|
4402
|
-
this.
|
|
4403
|
-
this.
|
|
4404
|
-
this.
|
|
4436
|
+
(_b = this.getControl('from')) === null || _b === void 0 ? void 0 : _b.setValidators(forms.Validators.required);
|
|
4437
|
+
(_c = this.getControl('text')) === null || _c === void 0 ? void 0 : _c.setValidators(forms.Validators.required);
|
|
4438
|
+
(_d = this.getControl('from')) === null || _d === void 0 ? void 0 : _d.updateValueAndValidity();
|
|
4439
|
+
(_e = this.getControl('text')) === null || _e === void 0 ? void 0 : _e.updateValueAndValidity();
|
|
4405
4440
|
}
|
|
4406
4441
|
else if (this.getIsMedia) {
|
|
4407
|
-
this.
|
|
4408
|
-
this.
|
|
4409
|
-
this.
|
|
4410
|
-
this.
|
|
4411
|
-
this.
|
|
4412
|
-
this.
|
|
4442
|
+
(_f = this.getControl('media')) === null || _f === void 0 ? void 0 : _f.setValidators(forms.Validators.required);
|
|
4443
|
+
(_g = this.getControl('from')) === null || _g === void 0 ? void 0 : _g.setValidators(forms.Validators.required);
|
|
4444
|
+
(_h = this.getControl('fileName')) === null || _h === void 0 ? void 0 : _h.setValidators(forms.Validators.required);
|
|
4445
|
+
(_j = this.getControl('media')) === null || _j === void 0 ? void 0 : _j.updateValueAndValidity();
|
|
4446
|
+
(_k = this.getControl('from')) === null || _k === void 0 ? void 0 : _k.updateValueAndValidity();
|
|
4447
|
+
(_l = this.getControl('fileName')) === null || _l === void 0 ? void 0 : _l.updateValueAndValidity();
|
|
4413
4448
|
}
|
|
4414
4449
|
else if (this.getIsTemplate) {
|
|
4415
|
-
this.
|
|
4416
|
-
this.
|
|
4417
|
-
this.
|
|
4418
|
-
this.
|
|
4419
|
-
this.
|
|
4420
|
-
this.
|
|
4421
|
-
this.
|
|
4422
|
-
this.
|
|
4423
|
-
this.
|
|
4424
|
-
this.
|
|
4450
|
+
(_m = this.getControl('from')) === null || _m === void 0 ? void 0 : _m.setValidators(forms.Validators.required);
|
|
4451
|
+
(_o = this.getControl('template')) === null || _o === void 0 ? void 0 : _o.setValidators(forms.Validators.required);
|
|
4452
|
+
(_p = this.getControl('paramHeader')) === null || _p === void 0 ? void 0 : _p.setValidators(forms.Validators.required);
|
|
4453
|
+
(_q = this.getControl('paramBody')) === null || _q === void 0 ? void 0 : _q.setValidators(forms.Validators.required);
|
|
4454
|
+
(_r = this.getControl('paramButton')) === null || _r === void 0 ? void 0 : _r.setValidators(forms.Validators.required);
|
|
4455
|
+
(_s = this.getControl('from')) === null || _s === void 0 ? void 0 : _s.updateValueAndValidity();
|
|
4456
|
+
(_t = this.getControl('template')) === null || _t === void 0 ? void 0 : _t.updateValueAndValidity();
|
|
4457
|
+
(_u = this.getControl('paramHeader')) === null || _u === void 0 ? void 0 : _u.updateValueAndValidity();
|
|
4458
|
+
(_v = this.getControl('paramBody')) === null || _v === void 0 ? void 0 : _v.updateValueAndValidity();
|
|
4459
|
+
(_w = this.getControl('paramButton')) === null || _w === void 0 ? void 0 : _w.updateValueAndValidity();
|
|
4425
4460
|
}
|
|
4426
4461
|
else if (this.getIsCatalogue) {
|
|
4427
|
-
this.
|
|
4428
|
-
this.
|
|
4429
|
-
this.
|
|
4430
|
-
this.
|
|
4431
|
-
this.
|
|
4432
|
-
this.
|
|
4433
|
-
this.
|
|
4434
|
-
this.
|
|
4435
|
-
this.
|
|
4436
|
-
this.
|
|
4462
|
+
(_x = this.getControl('from')) === null || _x === void 0 ? void 0 : _x.setValidators(forms.Validators.required);
|
|
4463
|
+
(_y = this.getControl('category')) === null || _y === void 0 ? void 0 : _y.setValidators(forms.Validators.required);
|
|
4464
|
+
(_z = this.getControl('catalogue')) === null || _z === void 0 ? void 0 : _z.setValidators(forms.Validators.required);
|
|
4465
|
+
(_0 = this.getControl('product')) === null || _0 === void 0 ? void 0 : _0.setValidators(forms.Validators.required);
|
|
4466
|
+
(_1 = this.getControl('body')) === null || _1 === void 0 ? void 0 : _1.setValidators(forms.Validators.maxLength(100));
|
|
4467
|
+
(_2 = this.getControl('from')) === null || _2 === void 0 ? void 0 : _2.updateValueAndValidity();
|
|
4468
|
+
(_3 = this.getControl('category')) === null || _3 === void 0 ? void 0 : _3.updateValueAndValidity();
|
|
4469
|
+
(_4 = this.getControl('catalogue')) === null || _4 === void 0 ? void 0 : _4.updateValueAndValidity();
|
|
4470
|
+
(_5 = this.getControl('product')) === null || _5 === void 0 ? void 0 : _5.updateValueAndValidity();
|
|
4471
|
+
(_6 = this.getControl('body')) === null || _6 === void 0 ? void 0 : _6.updateValueAndValidity();
|
|
4437
4472
|
}
|
|
4438
4473
|
else if (this.getIsUtility) {
|
|
4439
|
-
this.
|
|
4440
|
-
this.
|
|
4441
|
-
|
|
4442
|
-
.
|
|
4443
|
-
|
|
4474
|
+
(_7 = this.getControl('from')) === null || _7 === void 0 ? void 0 : _7.setValidators(forms.Validators.required);
|
|
4475
|
+
(_8 = this.getControl('text')) === null || _8 === void 0 ? void 0 : _8.setValidators([
|
|
4476
|
+
forms.Validators.required,
|
|
4477
|
+
forms.Validators.maxLength(1024),
|
|
4478
|
+
]);
|
|
4479
|
+
(_9 = this.getControl('ttl')) === null || _9 === void 0 ? void 0 : _9.setValidators([
|
|
4444
4480
|
Validators.min(30, 'Minimum TTL 30'),
|
|
4445
4481
|
Validators.max(43200, 'Maximum TTL 43200'),
|
|
4446
4482
|
]);
|
|
4447
|
-
this.
|
|
4448
|
-
this.
|
|
4449
|
-
this.
|
|
4483
|
+
(_10 = this.getControl('from')) === null || _10 === void 0 ? void 0 : _10.updateValueAndValidity();
|
|
4484
|
+
(_11 = this.getControl('text')) === null || _11 === void 0 ? void 0 : _11.updateValueAndValidity();
|
|
4485
|
+
(_12 = this.getControl('ttl')) === null || _12 === void 0 ? void 0 : _12.updateValueAndValidity();
|
|
4486
|
+
(_13 = this.getControl('variables')) === null || _13 === void 0 ? void 0 : _13.updateValueAndValidity();
|
|
4450
4487
|
}
|
|
4451
4488
|
else {
|
|
4452
|
-
this.
|
|
4453
|
-
this.
|
|
4454
|
-
this.
|
|
4455
|
-
this.
|
|
4489
|
+
(_14 = this.getControl('from')) === null || _14 === void 0 ? void 0 : _14.setValidators(forms.Validators.required);
|
|
4490
|
+
(_15 = this.getControl('text')) === null || _15 === void 0 ? void 0 : _15.setValidators(forms.Validators.required);
|
|
4491
|
+
(_16 = this.getControl('from')) === null || _16 === void 0 ? void 0 : _16.updateValueAndValidity();
|
|
4492
|
+
(_17 = this.getControl('text')) === null || _17 === void 0 ? void 0 : _17.updateValueAndValidity();
|
|
4456
4493
|
}
|
|
4457
4494
|
};
|
|
4458
4495
|
GeneralInformationWAComponent.prototype.formReset = function (_isMediaType) {
|
|
4459
4496
|
if (_isMediaType === void 0) { _isMediaType = false; }
|
|
4497
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
4460
4498
|
if (!_isMediaType) {
|
|
4461
|
-
this.
|
|
4462
|
-
this.
|
|
4499
|
+
(_a = this.getControl('media')) === null || _a === void 0 ? void 0 : _a.reset();
|
|
4500
|
+
(_b = this.getControl('from')) === null || _b === void 0 ? void 0 : _b.reset();
|
|
4501
|
+
}
|
|
4502
|
+
(_c = this.getControl('text')) === null || _c === void 0 ? void 0 : _c.reset();
|
|
4503
|
+
(_d = this.getControl('fileName')) === null || _d === void 0 ? void 0 : _d.reset();
|
|
4504
|
+
(_e = this.getControl('targetURL')) === null || _e === void 0 ? void 0 : _e.reset();
|
|
4505
|
+
(_f = this.getControl('fileType')) === null || _f === void 0 ? void 0 : _f.reset();
|
|
4506
|
+
(_g = this.getControl('file')) === null || _g === void 0 ? void 0 : _g.reset();
|
|
4507
|
+
(_h = this.getControl('latitude')) === null || _h === void 0 ? void 0 : _h.reset();
|
|
4508
|
+
(_j = this.getControl('longitude')) === null || _j === void 0 ? void 0 : _j.reset();
|
|
4509
|
+
(_k = this.getControl('template')) === null || _k === void 0 ? void 0 : _k.reset();
|
|
4510
|
+
(_l = this.getControl('category')) === null || _l === void 0 ? void 0 : _l.reset();
|
|
4511
|
+
(_m = this.getControl('product')) === null || _m === void 0 ? void 0 : _m.reset();
|
|
4512
|
+
(_o = this.getControl('catalogue')) === null || _o === void 0 ? void 0 : _o.reset();
|
|
4513
|
+
(_p = this.getControl('body')) === null || _p === void 0 ? void 0 : _p.reset();
|
|
4514
|
+
(_q = this.getControl('otpValue')) === null || _q === void 0 ? void 0 : _q.reset();
|
|
4515
|
+
(_r = this.getControl('variables')) === null || _r === void 0 ? void 0 : _r.reset();
|
|
4516
|
+
var paramHeader = this.getControl('paramHeader');
|
|
4517
|
+
if (paramHeader) {
|
|
4518
|
+
paramHeader.clear();
|
|
4519
|
+
paramHeader.reset();
|
|
4520
|
+
}
|
|
4521
|
+
var paramBody = this.getControl('paramBody');
|
|
4522
|
+
if (paramBody) {
|
|
4523
|
+
paramBody.clear();
|
|
4524
|
+
paramBody.reset();
|
|
4525
|
+
}
|
|
4526
|
+
var paramButton = this.getControl('paramButton');
|
|
4527
|
+
if (paramButton) {
|
|
4528
|
+
paramButton.clear();
|
|
4529
|
+
paramButton.reset();
|
|
4463
4530
|
}
|
|
4464
|
-
this.form.get('text').reset();
|
|
4465
|
-
this.form.get('fileName').reset();
|
|
4466
|
-
this.form.get('targetURL').reset();
|
|
4467
|
-
this.form.get('fileType').reset();
|
|
4468
|
-
this.form.get('file').reset();
|
|
4469
|
-
this.form.get('latitude').reset();
|
|
4470
|
-
this.form.get('longitude').reset();
|
|
4471
|
-
this.form.get('template').reset();
|
|
4472
|
-
this.form.get('category').reset();
|
|
4473
|
-
this.form.get('product').reset();
|
|
4474
|
-
this.form.get('catalogue').reset();
|
|
4475
|
-
this.form.get('body').reset();
|
|
4476
|
-
this.form.get('otpValue').reset();
|
|
4477
|
-
this.form.get('paramHeader').controls = [];
|
|
4478
|
-
this.form.get('paramHeader').reset();
|
|
4479
|
-
this.form.get('paramBody').controls = [];
|
|
4480
|
-
this.form.get('paramBody').reset();
|
|
4481
|
-
this.form.get('paramButton').controls = [];
|
|
4482
|
-
this.form.get('paramButton').reset();
|
|
4483
4531
|
this.initValidation();
|
|
4484
4532
|
};
|
|
4533
|
+
GeneralInformationWAComponent.prototype.getControl = function (controlName) {
|
|
4534
|
+
return this.form ? this.form.get(controlName) : null;
|
|
4535
|
+
};
|
|
4485
4536
|
GeneralInformationWAComponent.prototype.initParam = function (_name, _value, _type) {
|
|
4486
4537
|
return {
|
|
4487
4538
|
name: _name,
|
|
@@ -4505,10 +4556,11 @@
|
|
|
4505
4556
|
var subs = this.apiAdapterService
|
|
4506
4557
|
.executeApiRequest(parameterList, '/admin/account', 'GET')
|
|
4507
4558
|
.subscribe(function (resp) {
|
|
4559
|
+
var _a;
|
|
4508
4560
|
if (!resp.data)
|
|
4509
4561
|
return;
|
|
4510
4562
|
_this.accountOption = isInfinite ? __spread(_this.accountOption, resp.data) : resp.data;
|
|
4511
|
-
_this.isHaveNextAccountOption = resp.haveNext;
|
|
4563
|
+
_this.isHaveNextAccountOption = (_a = resp.haveNext, (_a !== null && _a !== void 0 ? _a : true));
|
|
4512
4564
|
_this.isLoadingAccountOption = false;
|
|
4513
4565
|
});
|
|
4514
4566
|
this.subscribers.push(subs);
|
|
@@ -4518,7 +4570,7 @@
|
|
|
4518
4570
|
if (event === void 0) { event = null; }
|
|
4519
4571
|
if (filter === void 0) { filter = ''; }
|
|
4520
4572
|
if (isInfinite === void 0) { isInfinite = false; }
|
|
4521
|
-
var _a, _b, _c, _d;
|
|
4573
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
4522
4574
|
this.isLoadingTemplateOption = true;
|
|
4523
4575
|
var parameterList = [
|
|
4524
4576
|
this.initParam('pageNo', this.pageNoTemplateOption, 'number'),
|
|
@@ -4526,30 +4578,31 @@
|
|
|
4526
4578
|
this.initParam('platform', 'WA', 'string'),
|
|
4527
4579
|
this.initParam('filter', filter, 'string'),
|
|
4528
4580
|
this.initParam('status', 'APPROVED', 'string'),
|
|
4529
|
-
this.initParam('clientId', (_a = this.
|
|
4530
|
-
this.initParam('wabaId', (
|
|
4581
|
+
this.initParam('clientId', (_c = (_b = (_a = this.getControl('from')) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.clientId, (_c !== null && _c !== void 0 ? _c : '')), 'string'),
|
|
4582
|
+
this.initParam('wabaId', (_f = (_e = (_d = this.getControl('from')) === null || _d === void 0 ? void 0 : _d.value) === null || _e === void 0 ? void 0 : _e.wabaId, (_f !== null && _f !== void 0 ? _f : '')), 'string'),
|
|
4531
4583
|
];
|
|
4532
4584
|
if (this.isReadOnlyMode)
|
|
4533
4585
|
parameterList.push(this.initParam('summary', true, 'string'));
|
|
4534
|
-
var messageType = (
|
|
4586
|
+
var messageType = (_g = this.form.value) === null || _g === void 0 ? void 0 : _g.channel;
|
|
4535
4587
|
if (messageType === 'utility') {
|
|
4536
4588
|
parameterList.push(this.initParam('isDirectSend', true, 'string'));
|
|
4537
4589
|
}
|
|
4538
4590
|
var subs = this.apiAdapterService
|
|
4539
4591
|
.executeApiRequest(parameterList, '/message/template', 'GET')
|
|
4540
4592
|
.subscribe(function (resp) {
|
|
4541
|
-
var _a;
|
|
4542
|
-
_this.templateOption
|
|
4543
|
-
|
|
4544
|
-
_this.
|
|
4593
|
+
var _a, _b, _c, _d, _e, _f;
|
|
4594
|
+
var currentOptions = _this.templateOption || [];
|
|
4595
|
+
var newData = resp.data || [];
|
|
4596
|
+
_this.templateOption = isInfinite ? __spread(currentOptions, newData) : newData;
|
|
4597
|
+
_this.isHaveNextTemplateOption = (_a = resp.haveNext, (_a !== null && _a !== void 0 ? _a : true));
|
|
4545
4598
|
_this.isLoadingTemplateOption = false;
|
|
4546
|
-
var template = (
|
|
4599
|
+
var template = (_b = _this.templateOption) === null || _b === void 0 ? void 0 : _b.find(function (t) { var _a, _b; return t.ID === ((_b = (_a = _this.getControl('template')) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.ID); });
|
|
4547
4600
|
if (template) {
|
|
4548
|
-
_this.
|
|
4549
|
-
if (_this.
|
|
4550
|
-
return _this.updateDownloadCSV(_this.
|
|
4601
|
+
(_c = _this.getControl('template')) === null || _c === void 0 ? void 0 : _c.patchValue(template);
|
|
4602
|
+
if ((_d = _this.getControl('isUpload')) === null || _d === void 0 ? void 0 : _d.value)
|
|
4603
|
+
return _this.updateDownloadCSV((_e = _this.getControl('isUpload')) === null || _e === void 0 ? void 0 : _e.value);
|
|
4551
4604
|
}
|
|
4552
|
-
_this.updateTemplate(_this.
|
|
4605
|
+
_this.updateTemplate((_f = _this.getControl('template')) === null || _f === void 0 ? void 0 : _f.value);
|
|
4553
4606
|
});
|
|
4554
4607
|
this.subscribers.push(subs);
|
|
4555
4608
|
};
|
|
@@ -4609,45 +4662,45 @@
|
|
|
4609
4662
|
};
|
|
4610
4663
|
Object.defineProperty(GeneralInformationWAComponent.prototype, "getIsText", {
|
|
4611
4664
|
get: function () {
|
|
4612
|
-
var _a;
|
|
4613
|
-
return (this.
|
|
4614
|
-
((
|
|
4665
|
+
var _a, _b, _c;
|
|
4666
|
+
return (((_a = this.getControl('channel')) === null || _a === void 0 ? void 0 : _a.value) &&
|
|
4667
|
+
((_c = (_b = this.getControl('channel')) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === 'text');
|
|
4615
4668
|
},
|
|
4616
4669
|
enumerable: true,
|
|
4617
4670
|
configurable: true
|
|
4618
4671
|
});
|
|
4619
4672
|
Object.defineProperty(GeneralInformationWAComponent.prototype, "getIsMedia", {
|
|
4620
4673
|
get: function () {
|
|
4621
|
-
var _a;
|
|
4622
|
-
return (this.
|
|
4623
|
-
((
|
|
4674
|
+
var _a, _b, _c;
|
|
4675
|
+
return (((_a = this.getControl('channel')) === null || _a === void 0 ? void 0 : _a.value) &&
|
|
4676
|
+
((_c = (_b = this.getControl('channel')) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === 'media');
|
|
4624
4677
|
},
|
|
4625
4678
|
enumerable: true,
|
|
4626
4679
|
configurable: true
|
|
4627
4680
|
});
|
|
4628
4681
|
Object.defineProperty(GeneralInformationWAComponent.prototype, "getIsTemplate", {
|
|
4629
4682
|
get: function () {
|
|
4630
|
-
var _a;
|
|
4631
|
-
return (this.
|
|
4632
|
-
((
|
|
4683
|
+
var _a, _b, _c;
|
|
4684
|
+
return (((_a = this.getControl('channel')) === null || _a === void 0 ? void 0 : _a.value) &&
|
|
4685
|
+
((_c = (_b = this.getControl('channel')) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === 'template');
|
|
4633
4686
|
},
|
|
4634
4687
|
enumerable: true,
|
|
4635
4688
|
configurable: true
|
|
4636
4689
|
});
|
|
4637
4690
|
Object.defineProperty(GeneralInformationWAComponent.prototype, "getIsCatalogue", {
|
|
4638
4691
|
get: function () {
|
|
4639
|
-
var _a;
|
|
4640
|
-
return (this.
|
|
4641
|
-
((
|
|
4692
|
+
var _a, _b, _c;
|
|
4693
|
+
return (((_a = this.getControl('channel')) === null || _a === void 0 ? void 0 : _a.value) &&
|
|
4694
|
+
((_c = (_b = this.getControl('channel')) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === 'catalogue');
|
|
4642
4695
|
},
|
|
4643
4696
|
enumerable: true,
|
|
4644
4697
|
configurable: true
|
|
4645
4698
|
});
|
|
4646
4699
|
Object.defineProperty(GeneralInformationWAComponent.prototype, "getIsUtility", {
|
|
4647
4700
|
get: function () {
|
|
4648
|
-
var _a;
|
|
4649
|
-
return (this.
|
|
4650
|
-
((
|
|
4701
|
+
var _a, _b, _c;
|
|
4702
|
+
return (((_a = this.getControl('channel')) === null || _a === void 0 ? void 0 : _a.value) &&
|
|
4703
|
+
((_c = (_b = this.getControl('channel')) === null || _b === void 0 ? void 0 : _b.value) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === 'utility');
|
|
4651
4704
|
},
|
|
4652
4705
|
enumerable: true,
|
|
4653
4706
|
configurable: true
|
|
@@ -4675,6 +4728,7 @@
|
|
|
4675
4728
|
: '';
|
|
4676
4729
|
};
|
|
4677
4730
|
GeneralInformationWAComponent.prototype.onFileSelected = function (event) {
|
|
4731
|
+
var _a, _b, _c, _d, _e, _f;
|
|
4678
4732
|
var file = event.target.files;
|
|
4679
4733
|
var accept = this.extFileAccepted.split('/');
|
|
4680
4734
|
var matchType = accept[0];
|
|
@@ -4690,21 +4744,22 @@
|
|
|
4690
4744
|
this.toastr.error('Upload media failed, max size 10mb');
|
|
4691
4745
|
return;
|
|
4692
4746
|
}
|
|
4693
|
-
this.
|
|
4694
|
-
this.
|
|
4695
|
-
this.
|
|
4696
|
-
this.
|
|
4697
|
-
this.
|
|
4747
|
+
(_a = this.getControl('file')) === null || _a === void 0 ? void 0 : _a.setValue(file[0]);
|
|
4748
|
+
(_b = this.getControl('fileType')) === null || _b === void 0 ? void 0 : _b.setValue('image');
|
|
4749
|
+
(_c = this.getControl('fileName')) === null || _c === void 0 ? void 0 : _c.setValue(file[0].name);
|
|
4750
|
+
(_d = this.getControl('targetURL')) === null || _d === void 0 ? void 0 : _d.setValidators(forms.Validators.required);
|
|
4751
|
+
(_e = this.getControl('targetURL')) === null || _e === void 0 ? void 0 : _e.updateValueAndValidity();
|
|
4698
4752
|
if (file[0].type.indexOf('video') > -1)
|
|
4699
|
-
this.
|
|
4753
|
+
(_f = this.getControl('fileType')) === null || _f === void 0 ? void 0 : _f.setValue('video');
|
|
4700
4754
|
this.uploadMediaService();
|
|
4701
4755
|
};
|
|
4702
4756
|
GeneralInformationWAComponent.prototype.uploadMediaService = function () {
|
|
4703
4757
|
var _this = this;
|
|
4758
|
+
var _a;
|
|
4704
4759
|
var parameterList = [
|
|
4705
4760
|
{
|
|
4706
4761
|
name: 'file',
|
|
4707
|
-
value: this.
|
|
4762
|
+
value: (_a = this.getControl('file')) === null || _a === void 0 ? void 0 : _a.value,
|
|
4708
4763
|
in: 'formData',
|
|
4709
4764
|
type: 'object',
|
|
4710
4765
|
},
|
|
@@ -4712,75 +4767,93 @@
|
|
|
4712
4767
|
var subs = this.apiAdapterService
|
|
4713
4768
|
.executeApiRequest(parameterList, '/message/media', 'POST')
|
|
4714
4769
|
.subscribe(function (resp) {
|
|
4715
|
-
|
|
4716
|
-
_this.
|
|
4717
|
-
_this.
|
|
4718
|
-
_this.
|
|
4770
|
+
var _a, _b, _c, _d;
|
|
4771
|
+
(_a = _this.getControl('targetURL')) === null || _a === void 0 ? void 0 : _a.clearValidators();
|
|
4772
|
+
(_b = _this.getControl('targetURL')) === null || _b === void 0 ? void 0 : _b.updateValueAndValidity();
|
|
4773
|
+
(_c = _this.getControl('targetURL')) === null || _c === void 0 ? void 0 : _c.setValue(resp.data.targetURL);
|
|
4774
|
+
(_d = _this.getControl('file')) === null || _d === void 0 ? void 0 : _d.reset();
|
|
4719
4775
|
_this.toastr.success('Upload media success');
|
|
4720
4776
|
});
|
|
4721
4777
|
this.subscribers.push(subs);
|
|
4722
4778
|
};
|
|
4779
|
+
Object.defineProperty(GeneralInformationWAComponent.prototype, "buttonParamsControls", {
|
|
4780
|
+
get: function () {
|
|
4781
|
+
return this.form.get('buttonParams').controls;
|
|
4782
|
+
},
|
|
4783
|
+
enumerable: true,
|
|
4784
|
+
configurable: true
|
|
4785
|
+
});
|
|
4786
|
+
Object.defineProperty(GeneralInformationWAComponent.prototype, "isUsingExcelBulk", {
|
|
4787
|
+
get: function () {
|
|
4788
|
+
var _a;
|
|
4789
|
+
return ((_a = this.getControl('isUpload')) === null || _a === void 0 ? void 0 : _a.value) || false;
|
|
4790
|
+
},
|
|
4791
|
+
enumerable: true,
|
|
4792
|
+
configurable: true
|
|
4793
|
+
});
|
|
4723
4794
|
GeneralInformationWAComponent.prototype.updateTemplate = function (template) {
|
|
4724
4795
|
var _this = this;
|
|
4725
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9;
|
|
4796
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34;
|
|
4726
4797
|
this.isShowParameter = false;
|
|
4727
4798
|
if (!template)
|
|
4728
4799
|
return;
|
|
4800
|
+
var buttonParamsArray = this.form.get('buttonParams');
|
|
4801
|
+
buttonParamsArray.clear();
|
|
4802
|
+
if (template && template.buttons && template.buttons.length > 0) {
|
|
4803
|
+
var quickReplyButtons = template.buttons.filter(function (btn) { return btn.type === 'QUICK_REPLY'; });
|
|
4804
|
+
quickReplyButtons.forEach(function (btn) {
|
|
4805
|
+
buttonParamsArray.push(new forms.FormGroup({
|
|
4806
|
+
label: new forms.FormControl(btn.text),
|
|
4807
|
+
payload: new forms.FormControl('', [forms.Validators.maxLength(256)]),
|
|
4808
|
+
}));
|
|
4809
|
+
});
|
|
4810
|
+
}
|
|
4729
4811
|
this.isHaveTemplateParam =
|
|
4730
|
-
((_a = template.header
|
|
4731
|
-
((
|
|
4732
|
-
((
|
|
4733
|
-
if (['image', 'video', 'document'].includes((
|
|
4734
|
-
this.form
|
|
4735
|
-
|
|
4736
|
-
|
|
4737
|
-
|
|
4738
|
-
|
|
4739
|
-
|
|
4740
|
-
|
|
4741
|
-
|
|
4742
|
-
((
|
|
4743
|
-
? this.
|
|
4744
|
-
: this.form.get('paramHeader').clearValidators();
|
|
4745
|
-
((_v = template.body.examples) === null || _v === void 0 ? void 0 : _v.length) > 0
|
|
4746
|
-
? this.form.get('paramBody').setValidators(forms.Validators.required)
|
|
4747
|
-
: this.form.get('paramBody').clearValidators();
|
|
4748
|
-
((_w = template.buttons) === null || _w === void 0 ? void 0 : _w.length) > 0
|
|
4749
|
-
? this.form.get('paramButton').setValidators(forms.Validators.required)
|
|
4750
|
-
: this.form.get('paramButton').clearValidators();
|
|
4812
|
+
(_c = (_b = (_a = template.header) === null || _a === void 0 ? void 0 : _a.examples) === null || _b === void 0 ? void 0 : _b.length, (_c !== null && _c !== void 0 ? _c : 0)) > 0 ||
|
|
4813
|
+
(_f = (_e = (_d = template.body) === null || _d === void 0 ? void 0 : _d.examples) === null || _e === void 0 ? void 0 : _e.length, (_f !== null && _f !== void 0 ? _f : 0)) > 0 ||
|
|
4814
|
+
(_h = (_g = template.buttons) === null || _g === void 0 ? void 0 : _g.length, (_h !== null && _h !== void 0 ? _h : 0)) > 0;
|
|
4815
|
+
if (['image', 'video', 'document'].includes((_l = (_k = (_j = template) === null || _j === void 0 ? void 0 : _j.header) === null || _k === void 0 ? void 0 : _k.type) === null || _l === void 0 ? void 0 : _l.toLowerCase())) {
|
|
4816
|
+
(_m = this.getControl('fileName')) === null || _m === void 0 ? void 0 : _m.setValue((_t = (_q = (_p = (_o = this.getCampaignStorage) === null || _o === void 0 ? void 0 : _o.generalInformation) === null || _p === void 0 ? void 0 : _p.form.fileName, (_q !== null && _q !== void 0 ? _q : (_s = (_r = this.getCampaignStorage) === null || _r === void 0 ? void 0 : _r.generalInformation) === null || _s === void 0 ? void 0 : _s.form.targetURL)), (_t !== null && _t !== void 0 ? _t : template.header.url)));
|
|
4817
|
+
(_u = this.getControl('targetURL')) === null || _u === void 0 ? void 0 : _u.setValue((_x = (_w = (_v = this.getCampaignStorage) === null || _v === void 0 ? void 0 : _v.generalInformation) === null || _w === void 0 ? void 0 : _w.form.targetURL, (_x !== null && _x !== void 0 ? _x : template.header.url)));
|
|
4818
|
+
this.fileTypeChange((_0 = (_z = (_y = template) === null || _y === void 0 ? void 0 : _y.header) === null || _z === void 0 ? void 0 : _z.type) === null || _0 === void 0 ? void 0 : _0.toLowerCase());
|
|
4819
|
+
}
|
|
4820
|
+
(_2 = (_1 = template.header.examples) === null || _1 === void 0 ? void 0 : _1.length, (_2 !== null && _2 !== void 0 ? _2 : 0)) > 0
|
|
4821
|
+
? (_3 = this.getControl('paramHeader')) === null || _3 === void 0 ? void 0 : _3.setValidators(forms.Validators.required) : (_4 = this.getControl('paramHeader')) === null || _4 === void 0 ? void 0 : _4.clearValidators();
|
|
4822
|
+
(_6 = (_5 = template.body.examples) === null || _5 === void 0 ? void 0 : _5.length, (_6 !== null && _6 !== void 0 ? _6 : 0)) > 0
|
|
4823
|
+
? (_7 = this.getControl('paramBody')) === null || _7 === void 0 ? void 0 : _7.setValidators(forms.Validators.required) : (_8 = this.getControl('paramBody')) === null || _8 === void 0 ? void 0 : _8.clearValidators();
|
|
4824
|
+
(_10 = (_9 = template.buttons) === null || _9 === void 0 ? void 0 : _9.length, (_10 !== null && _10 !== void 0 ? _10 : 0)) > 0
|
|
4825
|
+
? (_11 = this.getControl('paramButton')) === null || _11 === void 0 ? void 0 : _11.setValidators(forms.Validators.required) : (_12 = this.getControl('paramButton')) === null || _12 === void 0 ? void 0 : _12.clearValidators();
|
|
4751
4826
|
this.form.get('paramHeader').controls = [];
|
|
4752
4827
|
this.form.get('paramHeader').reset();
|
|
4753
|
-
this.
|
|
4828
|
+
(_13 = this.getControl('paramHeader')) === null || _13 === void 0 ? void 0 : _13.updateValueAndValidity();
|
|
4754
4829
|
this.form.get('paramBody').controls = [];
|
|
4755
4830
|
this.form.get('paramBody').reset();
|
|
4756
|
-
this.
|
|
4831
|
+
(_14 = this.getControl('paramBody')) === null || _14 === void 0 ? void 0 : _14.updateValueAndValidity();
|
|
4757
4832
|
this.form.get('paramButton').controls = [];
|
|
4758
4833
|
this.form.get('paramButton').reset();
|
|
4759
|
-
this.
|
|
4760
|
-
this.
|
|
4761
|
-
this.
|
|
4762
|
-
this.
|
|
4763
|
-
var formStorage = (
|
|
4834
|
+
(_15 = this.getControl('paramButton')) === null || _15 === void 0 ? void 0 : _15.updateValueAndValidity();
|
|
4835
|
+
(_16 = this.getControl('otpValue')) === null || _16 === void 0 ? void 0 : _16.setValue('');
|
|
4836
|
+
(_17 = this.getControl('otpValue')) === null || _17 === void 0 ? void 0 : _17.clearValidators();
|
|
4837
|
+
(_18 = this.getControl('otpValue')) === null || _18 === void 0 ? void 0 : _18.updateValueAndValidity();
|
|
4838
|
+
var formStorage = (_20 = (_19 = this.getCampaignStorage) === null || _19 === void 0 ? void 0 : _19.generalInformation) === null || _20 === void 0 ? void 0 : _20.form;
|
|
4764
4839
|
if (template.category === 'AUTHENTICATION') {
|
|
4765
|
-
this.
|
|
4766
|
-
|
|
4767
|
-
|
|
4768
|
-
this.form.get('otpValue').setValidators(forms.Validators.required);
|
|
4769
|
-
this.form.get('otpValue').updateValueAndValidity();
|
|
4840
|
+
(_21 = this.getControl('otpValue')) === null || _21 === void 0 ? void 0 : _21.setValue((_29 = (_23 = (_22 = formStorage) === null || _22 === void 0 ? void 0 : _22.otpValue, (_23 !== null && _23 !== void 0 ? _23 : (_28 = __spread((_27 = (_26 = (_25 = (_24 = formStorage) === null || _24 === void 0 ? void 0 : _24.template) === null || _25 === void 0 ? void 0 : _25.body) === null || _26 === void 0 ? void 0 : _26.examples, (_27 !== null && _27 !== void 0 ? _27 : [])))) === null || _28 === void 0 ? void 0 : _28.pop())), (_29 !== null && _29 !== void 0 ? _29 : '')));
|
|
4841
|
+
(_30 = this.getControl('otpValue')) === null || _30 === void 0 ? void 0 : _30.setValidators(forms.Validators.required);
|
|
4842
|
+
(_31 = this.getControl('otpValue')) === null || _31 === void 0 ? void 0 : _31.updateValueAndValidity();
|
|
4770
4843
|
}
|
|
4771
|
-
(
|
|
4844
|
+
(_32 = template.header.examples) === null || _32 === void 0 ? void 0 : _32.forEach(function (each, index) {
|
|
4772
4845
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
4773
4846
|
_this.addParamHeader((_g = (_d = (_c = (_b = (_a = formStorage) === null || _a === void 0 ? void 0 : _a.paramHeader) === null || _b === void 0 ? void 0 : _b[index]) === null || _c === void 0 ? void 0 : _c.name, (_d !== null && _d !== void 0 ? _d : (_f = (_e = formStorage) === null || _e === void 0 ? void 0 : _e.paramHeader) === null || _f === void 0 ? void 0 : _f[index])), (_g !== null && _g !== void 0 ? _g : '')));
|
|
4774
4847
|
});
|
|
4775
|
-
(
|
|
4848
|
+
(_33 = template.body.examples) === null || _33 === void 0 ? void 0 : _33.forEach(function (each, index) {
|
|
4776
4849
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
4777
4850
|
var paramValue = (_g = (_d = (_c = (_b = (_a = formStorage) === null || _a === void 0 ? void 0 : _a.paramBody) === null || _b === void 0 ? void 0 : _b[index]) === null || _c === void 0 ? void 0 : _c.name, (_d !== null && _d !== void 0 ? _d : (_f = (_e = formStorage) === null || _e === void 0 ? void 0 : _e.paramBody) === null || _f === void 0 ? void 0 : _f[index])), (_g !== null && _g !== void 0 ? _g : ''));
|
|
4778
4851
|
if (['$UnsubscribeAccount'].includes(each))
|
|
4779
4852
|
paramValue = each;
|
|
4780
4853
|
_this.addParamBody(paramValue);
|
|
4781
4854
|
});
|
|
4782
|
-
(
|
|
4783
|
-
var _a;
|
|
4855
|
+
(_34 = template.buttons) === null || _34 === void 0 ? void 0 : _34.forEach(function (each, index) {
|
|
4856
|
+
var _a, _b, _c, _d;
|
|
4784
4857
|
_this.addParamButton();
|
|
4785
4858
|
var button = _this.getButton;
|
|
4786
4859
|
if (((_a = each.examples) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
@@ -4798,8 +4871,9 @@
|
|
|
4798
4871
|
});
|
|
4799
4872
|
}
|
|
4800
4873
|
else {
|
|
4801
|
-
button[button.length - 1].get('name')
|
|
4802
|
-
|
|
4874
|
+
var lastControl = (_b = button[button.length - 1]) === null || _b === void 0 ? void 0 : _b.get('name');
|
|
4875
|
+
(_c = lastControl) === null || _c === void 0 ? void 0 : _c.clearValidators();
|
|
4876
|
+
(_d = lastControl) === null || _d === void 0 ? void 0 : _d.updateValueAndValidity();
|
|
4803
4877
|
}
|
|
4804
4878
|
});
|
|
4805
4879
|
};
|
|
@@ -4834,13 +4908,14 @@
|
|
|
4834
4908
|
var autocomplete = new google.maps.places.Autocomplete(_this.mapSearchRef.nativeElement);
|
|
4835
4909
|
autocomplete.addListener('place_changed', function () {
|
|
4836
4910
|
_this.ngZone.run(function () {
|
|
4911
|
+
var _a, _b;
|
|
4837
4912
|
var place = autocomplete.getPlace();
|
|
4838
4913
|
if (!place.geometry)
|
|
4839
4914
|
return;
|
|
4840
4915
|
_this.maps.latitude = place.geometry.location.lat();
|
|
4841
4916
|
_this.maps.longitude = place.geometry.location.lng();
|
|
4842
|
-
_this.
|
|
4843
|
-
_this.
|
|
4917
|
+
(_a = _this.getControl('latitude')) === null || _a === void 0 ? void 0 : _a.setValue(_this.maps.latitude);
|
|
4918
|
+
(_b = _this.getControl('longitude')) === null || _b === void 0 ? void 0 : _b.setValue(_this.maps.longitude);
|
|
4844
4919
|
});
|
|
4845
4920
|
});
|
|
4846
4921
|
});
|
|
@@ -4849,59 +4924,73 @@
|
|
|
4849
4924
|
var _this = this;
|
|
4850
4925
|
if ('geolocation' in navigator) {
|
|
4851
4926
|
navigator.geolocation.getCurrentPosition(function (position) {
|
|
4852
|
-
|
|
4927
|
+
var _a, _b, _c, _d;
|
|
4928
|
+
if (!((_a = _this.getControl('longitude')) === null || _a === void 0 ? void 0 : _a.value) && !((_b = _this.getControl('latitude')) === null || _b === void 0 ? void 0 : _b.value)) {
|
|
4853
4929
|
_this.maps.latitude = position.coords.latitude;
|
|
4854
4930
|
_this.maps.longitude = position.coords.longitude;
|
|
4855
|
-
_this.
|
|
4856
|
-
_this.
|
|
4931
|
+
(_c = _this.getControl('latitude')) === null || _c === void 0 ? void 0 : _c.setValue(_this.maps.latitude);
|
|
4932
|
+
(_d = _this.getControl('longitude')) === null || _d === void 0 ? void 0 : _d.setValue(_this.maps.longitude);
|
|
4857
4933
|
}
|
|
4858
4934
|
});
|
|
4859
4935
|
}
|
|
4860
4936
|
};
|
|
4861
4937
|
GeneralInformationWAComponent.prototype.markerDragEnd = function (event) {
|
|
4938
|
+
var _a, _b;
|
|
4862
4939
|
if (event.latLng) {
|
|
4863
4940
|
this.maps.latitude = event.latLng.lat();
|
|
4864
4941
|
this.maps.longitude = event.latLng.lng();
|
|
4865
|
-
this.
|
|
4866
|
-
this.
|
|
4942
|
+
(_a = this.getControl('latitude')) === null || _a === void 0 ? void 0 : _a.setValue(this.maps.latitude);
|
|
4943
|
+
(_b = this.getControl('longitude')) === null || _b === void 0 ? void 0 : _b.setValue(this.maps.longitude);
|
|
4867
4944
|
}
|
|
4868
4945
|
};
|
|
4869
4946
|
GeneralInformationWAComponent.prototype.updateDownloadCSV = function (isChecked) {
|
|
4870
|
-
|
|
4947
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
4948
|
+
(_a = this.getControl('isUpload')) === null || _a === void 0 ? void 0 : _a.setValue(isChecked);
|
|
4871
4949
|
if (isChecked) {
|
|
4872
|
-
this.
|
|
4873
|
-
this.
|
|
4874
|
-
this.
|
|
4875
|
-
this.
|
|
4876
|
-
this.
|
|
4877
|
-
this.
|
|
4878
|
-
this.
|
|
4879
|
-
this.
|
|
4880
|
-
this.
|
|
4881
|
-
this.
|
|
4882
|
-
this.
|
|
4883
|
-
this.
|
|
4884
|
-
this.
|
|
4885
|
-
this.
|
|
4886
|
-
this.
|
|
4950
|
+
this.getControl('paramHeader').controls = [];
|
|
4951
|
+
this.getControl('paramHeader').reset();
|
|
4952
|
+
this.getControl('paramBody').controls = [];
|
|
4953
|
+
this.getControl('paramBody').reset();
|
|
4954
|
+
this.getControl('paramButton').controls = [];
|
|
4955
|
+
this.getControl('paramButton').reset();
|
|
4956
|
+
(_b = this.getControl('paramHeader')) === null || _b === void 0 ? void 0 : _b.clearValidators();
|
|
4957
|
+
(_c = this.getControl('paramBody')) === null || _c === void 0 ? void 0 : _c.clearValidators();
|
|
4958
|
+
(_d = this.getControl('paramButton')) === null || _d === void 0 ? void 0 : _d.clearValidators();
|
|
4959
|
+
(_e = this.getControl('paramHeader')) === null || _e === void 0 ? void 0 : _e.updateValueAndValidity();
|
|
4960
|
+
(_f = this.getControl('paramBody')) === null || _f === void 0 ? void 0 : _f.updateValueAndValidity();
|
|
4961
|
+
(_g = this.getControl('paramButton')) === null || _g === void 0 ? void 0 : _g.updateValueAndValidity();
|
|
4962
|
+
(_h = this.getControl('otpValue')) === null || _h === void 0 ? void 0 : _h.reset();
|
|
4963
|
+
(_j = this.getControl('otpValue')) === null || _j === void 0 ? void 0 : _j.clearValidators();
|
|
4964
|
+
(_k = this.getControl('otpValue')) === null || _k === void 0 ? void 0 : _k.updateValueAndValidity();
|
|
4887
4965
|
return;
|
|
4888
4966
|
}
|
|
4889
|
-
this.updateTemplate(this.
|
|
4967
|
+
this.updateTemplate((_l = this.getControl('template')) === null || _l === void 0 ? void 0 : _l.value);
|
|
4890
4968
|
};
|
|
4891
4969
|
GeneralInformationWAComponent.prototype.handleChangeTemplate = function (useExisting) {
|
|
4970
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
4971
|
+
(_a = this.getControl('isDownloadVariableXLS')) === null || _a === void 0 ? void 0 : _a.setValue(false);
|
|
4972
|
+
this.variables.clear();
|
|
4973
|
+
this.updateVariableDownloadXLS(false);
|
|
4892
4974
|
if (useExisting) {
|
|
4893
|
-
this.
|
|
4894
|
-
this.
|
|
4895
|
-
this.
|
|
4896
|
-
this.
|
|
4897
|
-
this.
|
|
4975
|
+
(_b = this.getControl('template')) === null || _b === void 0 ? void 0 : _b.setValidators(forms.Validators.required);
|
|
4976
|
+
//this.getControl('text')?.reset();
|
|
4977
|
+
(_c = this.getControl('text')) === null || _c === void 0 ? void 0 : _c.clearValidators();
|
|
4978
|
+
(_d = this.getControl('text')) === null || _d === void 0 ? void 0 : _d.setValue('Halo {{1}}, ini adalah kode verifikasi kamu: {{2}}');
|
|
4979
|
+
(_e = this.getControl('text')) === null || _e === void 0 ? void 0 : _e.updateValueAndValidity();
|
|
4980
|
+
(_f = this.getControl('template')) === null || _f === void 0 ? void 0 : _f.updateValueAndValidity();
|
|
4981
|
+
this.variables.push(new forms.FormGroup({
|
|
4982
|
+
paramName: new forms.FormControl('', forms.Validators.required),
|
|
4983
|
+
}));
|
|
4984
|
+
this.variables.push(new forms.FormGroup({
|
|
4985
|
+
paramName: new forms.FormControl('', forms.Validators.required),
|
|
4986
|
+
}));
|
|
4898
4987
|
}
|
|
4899
4988
|
else {
|
|
4900
|
-
this.
|
|
4901
|
-
this.
|
|
4902
|
-
this.
|
|
4903
|
-
this.
|
|
4904
|
-
this.
|
|
4989
|
+
(_g = this.getControl('template')) === null || _g === void 0 ? void 0 : _g.reset();
|
|
4990
|
+
(_h = this.getControl('template')) === null || _h === void 0 ? void 0 : _h.clearValidators();
|
|
4991
|
+
(_j = this.getControl('text')) === null || _j === void 0 ? void 0 : _j.setValidators([forms.Validators.required, forms.Validators.max(1024)]);
|
|
4992
|
+
(_k = this.getControl('text')) === null || _k === void 0 ? void 0 : _k.updateValueAndValidity();
|
|
4993
|
+
(_l = this.getControl('template')) === null || _l === void 0 ? void 0 : _l.updateValueAndValidity();
|
|
4905
4994
|
}
|
|
4906
4995
|
};
|
|
4907
4996
|
GeneralInformationWAComponent.prototype.handleChangeFrom = function (value) {
|
|
@@ -4910,6 +4999,65 @@
|
|
|
4910
4999
|
return;
|
|
4911
5000
|
this.getTemplateOptionService(value);
|
|
4912
5001
|
};
|
|
5002
|
+
Object.defineProperty(GeneralInformationWAComponent.prototype, "variables", {
|
|
5003
|
+
get: function () {
|
|
5004
|
+
return this.getControl('variables');
|
|
5005
|
+
},
|
|
5006
|
+
enumerable: true,
|
|
5007
|
+
configurable: true
|
|
5008
|
+
});
|
|
5009
|
+
GeneralInformationWAComponent.prototype.addVariable = function () {
|
|
5010
|
+
var variableGroup = new forms.FormGroup({
|
|
5011
|
+
paramName: new forms.FormControl('', forms.Validators.required),
|
|
5012
|
+
});
|
|
5013
|
+
this.variables.push(variableGroup);
|
|
5014
|
+
var textControl = this.getControl('text');
|
|
5015
|
+
if (textControl) {
|
|
5016
|
+
var currentBody = textControl.value || '';
|
|
5017
|
+
var newSequence = "{{" + this.variables.controls.length + "}}";
|
|
5018
|
+
textControl.setValue((currentBody + " " + newSequence).trim());
|
|
5019
|
+
}
|
|
5020
|
+
};
|
|
5021
|
+
GeneralInformationWAComponent.prototype.removeVariable = function (index) {
|
|
5022
|
+
var _a;
|
|
5023
|
+
this.variables.removeAt(index);
|
|
5024
|
+
if (this.variables.controls.length === 0) {
|
|
5025
|
+
(_a = this.getControl('useXlsx')) === null || _a === void 0 ? void 0 : _a.setValue(false);
|
|
5026
|
+
}
|
|
5027
|
+
var textControl = this.getControl('text');
|
|
5028
|
+
if (textControl && textControl.value) {
|
|
5029
|
+
var targetSequence_1 = index + 1;
|
|
5030
|
+
var currentBody = textControl.value;
|
|
5031
|
+
var removeRegex = new RegExp("\\s*\\{\\{" + targetSequence_1 + "\\}\\}", 'g');
|
|
5032
|
+
currentBody = currentBody.replace(removeRegex, '');
|
|
5033
|
+
currentBody = currentBody.replace(/\{\{(\d+)\}\}/g, function (match, numStr) {
|
|
5034
|
+
var num = parseInt(numStr, 10);
|
|
5035
|
+
if (num > targetSequence_1) {
|
|
5036
|
+
return "{{" + (num - 1) + "}}";
|
|
5037
|
+
}
|
|
5038
|
+
return match;
|
|
5039
|
+
});
|
|
5040
|
+
textControl.setValue(currentBody.trim());
|
|
5041
|
+
}
|
|
5042
|
+
};
|
|
5043
|
+
GeneralInformationWAComponent.prototype.updateVariableDownloadXLS = function (isChecked) {
|
|
5044
|
+
var variablesArray = this.variables;
|
|
5045
|
+
if (isChecked) {
|
|
5046
|
+
variablesArray.controls.forEach(function (control) {
|
|
5047
|
+
var _a, _b;
|
|
5048
|
+
(_a = control.get('paramName')) === null || _a === void 0 ? void 0 : _a.clearValidators();
|
|
5049
|
+
(_b = control.get('paramName')) === null || _b === void 0 ? void 0 : _b.updateValueAndValidity();
|
|
5050
|
+
});
|
|
5051
|
+
}
|
|
5052
|
+
else {
|
|
5053
|
+
variablesArray.controls.forEach(function (control) {
|
|
5054
|
+
var _a, _b;
|
|
5055
|
+
(_a = control.get('paramName')) === null || _a === void 0 ? void 0 : _a.setValidators(forms.Validators.required);
|
|
5056
|
+
(_b = control.get('paramName')) === null || _b === void 0 ? void 0 : _b.updateValueAndValidity();
|
|
5057
|
+
});
|
|
5058
|
+
}
|
|
5059
|
+
this.form.updateValueAndValidity();
|
|
5060
|
+
};
|
|
4913
5061
|
GeneralInformationWAComponent.prototype.ngOnDestroy = function () {
|
|
4914
5062
|
this.subscribers.forEach(function (each) { return each.unsubscribe(); });
|
|
4915
5063
|
};
|
|
@@ -4935,8 +5083,8 @@
|
|
|
4935
5083
|
GeneralInformationWAComponent = __decorate([
|
|
4936
5084
|
core.Component({
|
|
4937
5085
|
selector: 'lib-general-information-wa',
|
|
4938
|
-
template: "<form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Message Type</mat-label>\r\n\r\n <mat-select placeholder=\"Select message type\" formControlName=\"channel\">\r\n <mat-option\r\n *ngFor=\"let option of msgTypeWAOption\"\r\n [value]=\"option.code\"\r\n (click)=\"formReset()\"\r\n >\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.channel\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('channel')?.touched && form.get('channel')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n\r\n <div\r\n *ngIf=\"!getIsTemplate\"\r\n role=\"alert\"\r\n class=\"alert alert-warning d-flex align-items-center\"\r\n style=\"margin-top: 16px; border: 1px solid rgb(243, 124, 44)\"\r\n >\r\n <mat-icon style=\"margin-right: 10px !important\">error_outline</mat-icon>\r\n <div *ngIf=\"!getIsUtility\">\r\n If you select this channel, keep in mind that the message might not be delivered to\r\n all selected customers. This is because the customer must have had a conversation\r\n previously with BSP.\r\n </div>\r\n\r\n <div *ngIf=\"getIsUtility\">\r\n You can send directly a utility message. You can choose between existing utility\r\n templates or creating a new one. If you create a new template, the system may check\r\n whether the content already exists as a template.\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getIsText\">\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from').touched && form.get('from').hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label class=\"asterix--after\">Text</mat-label>\r\n\r\n <textarea\r\n matInput\r\n rows=\"6\"\r\n cols=\"50\"\r\n cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"2\"\r\n cdkAutosizeMaxRows=\"15\"\r\n formControlName=\"text\"\r\n placeholder=\"Enter text\"\r\n #autosize=\"cdkTextareaAutosize\"\r\n ></textarea>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.text\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('text')?.touched && form.get('text')?.hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getIsMedia\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Media Type</mat-label>\r\n\r\n <mat-select\r\n placeholder=\"Select media type\"\r\n formControlName=\"media\"\r\n (selectionChange)=\"updateMediaType($event.value)\"\r\n >\r\n <mat-option *ngFor=\"let option of mediaTypeOption\" [value]=\"option.code\">\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.media\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('media').touched && form.get('media').hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from').touched && form.get('from').hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <ng-container *ngIf=\"form.get('media').value?.toLowerCase() !== 'location'\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">File</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n (click)=\"filePicker.click()\"\r\n formControlName=\"fileName\"\r\n />\r\n\r\n <button\r\n mat-button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Choose File\"\r\n (click)=\"filePicker.click()\"\r\n >\r\n <mat-icon>attach_file</mat-icon>\r\n </button>\r\n\r\n <input\r\n #filePicker\r\n hidden\r\n type=\"file\"\r\n [accept]=\"extFileAccepted\"\r\n (change)=\"onFileSelected($event)\"\r\n />\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.fileName\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('fileName').touched &&\r\n form.get('fileName').hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"form.get('media').value?.toLowerCase() === 'location'\">\r\n <div class=\"w-100\">\r\n <h4 class=\"asterix--after\">Location</h4>\r\n\r\n <div class=\"w-100\">\r\n <agm-map\r\n style=\"width: 100%; height: 400px\"\r\n [latitude]=\"maps.latitude\"\r\n [longitude]=\"maps.longitude\"\r\n [disableDoubleClickZoom]=\"maps.isDoubleClickZoom\"\r\n [zoom]=\"maps.zoom\"\r\n >\r\n <agm-marker\r\n [latitude]=\"maps.latitude\"\r\n [longitude]=\"maps.longitude\"\r\n [markerDraggable]=\"maps.isDraggable\"\r\n (dragEnd)=\"markerDragEnd($event)\"\r\n ></agm-marker>\r\n </agm-map>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Location</mat-label>\r\n\r\n <input\r\n #mapSearch\r\n matInput\r\n type=\"text\"\r\n maxlength=\"100\"\r\n placeholder=\"Enter location here\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getIsTemplate\">\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n (selectionChange)=\"getTemplateOptionService($event.value)\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from')?.touched && form.get('from')?.hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Template</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"template\"\r\n placeholder=\"Select template\"\r\n [complete]=\"isHaveNextTemplateOption === false\"\r\n [compareWith]=\"templateSelectedDisplay\"\r\n (infiniteScroll)=\"getNextTemplateBatch()\"\r\n (selectionChange)=\"updateTemplate($event.value)\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('template').value?.name\"\r\n (searchRes)=\"updateSearch($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of templateOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingTemplateOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.template\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('template')?.touched &&\r\n form.get('template')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div *ngIf=\"isHaveTemplateParam\" class=\"d-flex justify-content-end\">\r\n <mat-checkbox\r\n labelPosition=\"before\"\r\n formControlName=\"isUpload\"\r\n (change)=\"updateDownloadCSV($event.checked)\"\r\n >\r\n Using Download XLSX\r\n </mat-checkbox>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!form.get('isUpload')?.value\">\r\n <div\r\n *ngIf=\"form.get('template')?.value?.category === 'AUTHENTICATION'\"\r\n class=\"form-group\"\r\n >\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label> OTP Value </mat-label>\r\n\r\n <input matInput type=\"text\" formControlName=\"otpValue\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getParamHeader?.length > 0\">\r\n <p class=\"font-16px font-PoppinsBold\">Header Parameter</p>\r\n\r\n <div\r\n *ngFor=\"let param of getParamHeader; let paramHeaderIndex = index\"\r\n class=\"form-group\"\r\n >\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Parameter {{ paramHeaderIndex + 1 }}</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"'Parameter ' + (paramHeaderIndex + 1)\"\r\n [formControl]=\"param.get('name')\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getParamBody?.length > 0\">\r\n <p class=\"font-16px font-PoppinsBold mt-3\">Body Parameter</p>\r\n\r\n <div\r\n *ngFor=\"let param of getParamBody; let paramBodyIndex = index\"\r\n class=\"form-group\"\r\n >\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Parameter {{ paramBodyIndex + 1 }}</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"'Parameter ' + (paramBodyIndex + 1)\"\r\n [formControl]=\"param.get('name')\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"isShowParameter\">\r\n <p class=\"font-16px font-PoppinsBold mt-3\">Button Parameter</p>\r\n\r\n <ng-container *ngFor=\"let button of getButton; let buttonIndex = index\">\r\n <ng-container *ngIf=\"getParamButton(buttonIndex)?.length > 0\">\r\n <p class=\"font-14px font-PoppinsBold mt-3\">Button {{ buttonIndex + 1 }}</p>\r\n\r\n <div\r\n *ngFor=\"\r\n let param of getParamButton(buttonIndex);\r\n let paramIndex = index\r\n \"\r\n class=\"form-group\"\r\n >\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Parameter {{ paramIndex + 1 }}</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"'Parameter ' + (paramIndex + 1)\"\r\n [formControl]=\"param.get('name')\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"\r\n ['image', 'video', 'document'].includes(\r\n form.get('template')?.value?.header?.type?.toLowerCase()\r\n )\r\n \"\r\n >\r\n <p class=\"font-16px font-PoppinsBold mt-3\">File</p>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">File</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n (click)=\"filePicker.click()\"\r\n formControlName=\"fileName\"\r\n />\r\n\r\n <button\r\n mat-button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Choose File\"\r\n (click)=\"filePicker.click()\"\r\n >\r\n <mat-icon>attach_file</mat-icon>\r\n </button>\r\n\r\n <input\r\n #filePicker\r\n hidden\r\n type=\"file\"\r\n [accept]=\"extFileAccepted\"\r\n (change)=\"onFileSelected($event)\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getIsCatalogue\">\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from')?.touched && form.get('from')?.hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">Category</mat-label>\r\n\r\n <mat-select formControlName=\"category\" placeholder=\"Select category\">\r\n <mat-option *ngFor=\"let option of categoryOption\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.category\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('category')?.touched &&\r\n form.get('category')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">Catalog</mat-label>\r\n\r\n <mat-select formControlName=\"catalogue\" placeholder=\"Select catalog\">\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.catalogue\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('catalogue')?.touched &&\r\n form.get('catalogue')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"form.get('category')?.value === 'product'\"\r\n style=\"padding: 8px; border-radius: 8px; border: 1px solid #6177c4\"\r\n >\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Product</mat-label>\r\n\r\n <mat-select formControlName=\"product\" placeholder=\"Select product\">\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.product\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('product')?.touched &&\r\n form.get('product')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Body</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n maxlength=\"100\"\r\n formControlName=\"body\"\r\n placeholder=\"Enter body\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getIsUtility\">\r\n <div style=\"display: grid; gap: 0.5rem\">\r\n <mat-label class=\"asterix--after\">Template</mat-label>\r\n <mat-radio-group\r\n style=\"display: flex; gap: 0.5rem; flex-wrap: wrap\"\r\n formControlName=\"isUseExistingTemplate\"\r\n (change)=\"handleChangeTemplate($event.value)\"\r\n >\r\n <mat-radio-button\r\n [value]=\"option.value\"\r\n *ngFor=\"let option of templates\"\r\n color=\"primary\"\r\n >\r\n {{ option.label }}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n (selectionChange)=\"handleChangeFrom($event.value)\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from')?.touched && form.get('from')?.hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!form.get('isUseExistingTemplate')?.value; else existingTmpl\">\r\n <ng-container *ngTemplateOutlet=\"stageAlertTmpl\"></ng-container>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label class=\"asterix--after\">Body</mat-label>\r\n\r\n <textarea\r\n matInput\r\n rows=\"6\"\r\n cols=\"50\"\r\n cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"2\"\r\n cdkAutosizeMaxRows=\"15\"\r\n formControlName=\"text\"\r\n placeholder=\"Enter text\"\r\n #autosize=\"cdkTextareaAutosize\"\r\n ></textarea>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.text\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('text').touched && form.get('text').hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <app-input\r\n type=\"numeric\"\r\n formControlName=\"ttl\"\r\n label=\"TTL\"\r\n placeholder=\"Enter ttl\"\r\n [trimLeadingZeros]=\"true\"\r\n suffix=\"seconds\"\r\n hint=\"The default TTL is 30 days (2,592,000 seconds) if no value is provided.\"\r\n ></app-input>\r\n </div>\r\n\r\n <div *ngIf=\"!isReadOnlyMode\">\r\n <mat-checkbox formControlName=\"isNeedSave\">\r\n Save this message as future template\r\n </mat-checkbox>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #existingTmpl>\r\n <ng-container *ngTemplateOutlet=\"stageAlertTmpl\"></ng-container>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Template</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"template\"\r\n placeholder=\"Select template\"\r\n [complete]=\"isHaveNextTemplateOption === false\"\r\n [compareWith]=\"templateSelectedDisplay\"\r\n (infiniteScroll)=\"getNextTemplateBatch()\"\r\n (selectionChange)=\"updateTemplate($event.value)\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('template').value?.name\"\r\n (searchRes)=\"updateSearch($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of templateOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingTemplateOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.template\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('template')?.touched &&\r\n form.get('template')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <app-input\r\n type=\"numeric\"\r\n formControlName=\"ttl\"\r\n label=\"TTL\"\r\n placeholder=\"Enter ttl\"\r\n [trimLeadingZeros]=\"true\"\r\n suffix=\"Seconds\"\r\n hint=\"The default TTL is 30 days (2,592,000 seconds) if no value is provided.\"\r\n ></app-input>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n</form>\r\n\r\n<ng-template #stageAlertTmpl>\r\n <div\r\n role=\"alert\"\r\n class=\"alert alert-warning d-flex align-items-center\"\r\n style=\"margin-top: 8px; border: 1px solid rgb(243, 124, 44)\"\r\n *ngIf=\"form.get('from')?.value && form.get('from')?.value?.directSendRestrictionStage > 0\"\r\n >\r\n <mat-icon style=\"margin-right: 10px !important\">error_outline</mat-icon>\r\n\r\n <div *ngIf=\"form.get('from')?.value?.directSendRestrictionStage === 1\">\r\n Direct Send misuse detected. Please review your messaging practices.\r\n </div>\r\n <div *ngIf=\"form.get('from')?.value?.directSendRestrictionStage === 2\">\r\n Direct Send access restricted for 7 days due to continued misuse.\r\n </div>\r\n\r\n <div *ngIf=\"form.get('from')?.value?.directSendRestrictionStage === 3\">\r\n Direct Send access restricted for 30 days due to continued misuse. Final warning before\r\n permanent revocation.\r\n </div>\r\n\r\n <div *ngIf=\"form.get('from')?.value?.directSendRestrictionStage === 4\">\r\n Direct Send access has been permanently revoked.\r\n </div>\r\n </div>\r\n</ng-template>\r\n",
|
|
4939
|
-
styles: [".asterix--after:after{content:\"*\";color:red}"]
|
|
5086
|
+
template: "<form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Message Type</mat-label>\r\n <mat-select placeholder=\"Select message type\" formControlName=\"channel\">\r\n <mat-option\r\n *ngFor=\"let option of msgTypeWAOption\"\r\n [value]=\"option.code\"\r\n (click)=\"formReset()\"\r\n >\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.channel\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('channel')?.touched && form.get('channel')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n\r\n <div\r\n *ngIf=\"!getIsTemplate\"\r\n role=\"alert\"\r\n class=\"alert alert-warning d-flex align-items-center\"\r\n style=\"margin-top: 16px; border: 1px solid rgb(243, 124, 44)\"\r\n >\r\n <mat-icon style=\"margin-right: 10px !important\">error_outline</mat-icon>\r\n <div *ngIf=\"!getIsUtility\">\r\n If you select this channel, keep in mind that the message might not be delivered to\r\n all selected customers. This is because the customer must have had a conversation\r\n previously with BSP.\r\n </div>\r\n\r\n <div *ngIf=\"getIsUtility\">\r\n You can send directly a utility message. You can choose between existing utility\r\n templates or creating a new one. If you create a new template, the system may check\r\n whether the content already exists as a template.\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getIsText\">\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from').touched && form.get('from').hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label class=\"asterix--after\">Text</mat-label>\r\n\r\n <textarea\r\n matInput\r\n rows=\"6\"\r\n cols=\"50\"\r\n cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"2\"\r\n cdkAutosizeMaxRows=\"15\"\r\n formControlName=\"text\"\r\n placeholder=\"Enter text\"\r\n #autosize=\"cdkTextareaAutosize\"\r\n ></textarea>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.text\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('text')?.touched && form.get('text')?.hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getIsMedia\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Media Type</mat-label>\r\n\r\n <mat-select\r\n placeholder=\"Select media type\"\r\n formControlName=\"media\"\r\n (selectionChange)=\"updateMediaType($event.value)\"\r\n >\r\n <mat-option *ngFor=\"let option of mediaTypeOption\" [value]=\"option.code\">\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.media\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('media').touched && form.get('media').hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from').touched && form.get('from').hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <ng-container *ngIf=\"form.get('media').value?.toLowerCase() !== 'location'\">\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">File</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n (click)=\"filePicker.click()\"\r\n formControlName=\"fileName\"\r\n />\r\n\r\n <button\r\n mat-button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Choose File\"\r\n (click)=\"filePicker.click()\"\r\n >\r\n <mat-icon>attach_file</mat-icon>\r\n </button>\r\n\r\n <input\r\n #filePicker\r\n hidden\r\n type=\"file\"\r\n [accept]=\"extFileAccepted\"\r\n (change)=\"onFileSelected($event)\"\r\n />\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.fileName\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('fileName').touched &&\r\n form.get('fileName').hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"form.get('media').value?.toLowerCase() === 'location'\">\r\n <div class=\"w-100\">\r\n <h4 class=\"asterix--after\">Location</h4>\r\n\r\n <div class=\"w-100\">\r\n <agm-map\r\n style=\"width: 100%; height: 400px\"\r\n [latitude]=\"maps.latitude\"\r\n [longitude]=\"maps.longitude\"\r\n [disableDoubleClickZoom]=\"maps.isDoubleClickZoom\"\r\n [zoom]=\"maps.zoom\"\r\n >\r\n <agm-marker\r\n [latitude]=\"maps.latitude\"\r\n [longitude]=\"maps.longitude\"\r\n [markerDraggable]=\"maps.isDraggable\"\r\n (dragEnd)=\"markerDragEnd($event)\"\r\n ></agm-marker>\r\n </agm-map>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Location</mat-label>\r\n\r\n <input\r\n #mapSearch\r\n matInput\r\n type=\"text\"\r\n maxlength=\"100\"\r\n placeholder=\"Enter location here\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getIsTemplate\">\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n (selectionChange)=\"getTemplateOptionService($event.value)\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from')?.touched && form.get('from')?.hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Template</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"template\"\r\n placeholder=\"Select template\"\r\n [complete]=\"isHaveNextTemplateOption === false\"\r\n [compareWith]=\"templateSelectedDisplay\"\r\n (infiniteScroll)=\"getNextTemplateBatch()\"\r\n (selectionChange)=\"updateTemplate($event.value)\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('template').value?.name\"\r\n (searchRes)=\"updateSearch($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of templateOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingTemplateOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.template\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('template')?.touched &&\r\n form.get('template')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div\r\n class=\"button-parameter-section mt-4\"\r\n *ngIf=\"buttonParamsControls.length > 0 && !isUsingExcelBulk\"\r\n >\r\n <h5 class=\"mb-3 font-weight-bold\">Button Parameter</h5>\r\n\r\n <div formArrayName=\"buttonParams\">\r\n <div\r\n *ngFor=\"let btnControl of buttonParamsControls; let i = index\"\r\n [formGroupName]=\"i\"\r\n class=\"form-group\"\r\n >\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Button {{ i + 1 }}</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n formControlName=\"payload\"\r\n [placeholder]=\"'Parameter ' + (i + 1)\"\r\n maxlength=\"256\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"isHaveTemplateParam\" class=\"d-flex justify-content-end\">\r\n <mat-checkbox\r\n labelPosition=\"before\"\r\n formControlName=\"isUpload\"\r\n (change)=\"updateDownloadCSV($event.checked)\"\r\n >\r\n Using Download XLSX\r\n </mat-checkbox>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!form.get('isUpload')?.value\">\r\n <div\r\n *ngIf=\"form.get('template')?.value?.category === 'AUTHENTICATION'\"\r\n class=\"form-group\"\r\n >\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label> OTP Value </mat-label>\r\n\r\n <input matInput type=\"text\" formControlName=\"otpValue\" />\r\n </mat-form-field>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getParamHeader?.length > 0\">\r\n <p class=\"font-16px font-PoppinsBold\">Header Parameter</p>\r\n\r\n <div\r\n *ngFor=\"let param of getParamHeader; let paramHeaderIndex = index\"\r\n class=\"form-group\"\r\n >\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Parameter {{ paramHeaderIndex + 1 }}</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"'Parameter ' + (paramHeaderIndex + 1)\"\r\n [formControl]=\"param.get('name')\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getParamBody?.length > 0\">\r\n <p class=\"font-16px font-PoppinsBold mt-3\">Body Parameter</p>\r\n\r\n <div\r\n *ngFor=\"let param of getParamBody; let paramBodyIndex = index\"\r\n class=\"form-group\"\r\n >\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Parameter {{ paramBodyIndex + 1 }}</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"'Parameter ' + (paramBodyIndex + 1)\"\r\n [formControl]=\"param.get('name')\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"isShowParameter\">\r\n <p class=\"font-16px font-PoppinsBold mt-3\">Button Parameter</p>\r\n\r\n <ng-container *ngFor=\"let button of getButton; let buttonIndex = index\">\r\n <ng-container *ngIf=\"getParamButton(buttonIndex)?.length > 0\">\r\n <p class=\"font-14px font-PoppinsBold mt-3\">Button {{ buttonIndex + 1 }}</p>\r\n\r\n <div\r\n *ngFor=\"\r\n let param of getParamButton(buttonIndex);\r\n let paramIndex = index\r\n \"\r\n class=\"form-group\"\r\n >\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Parameter {{ paramIndex + 1 }}</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n [placeholder]=\"'Parameter ' + (paramIndex + 1)\"\r\n [formControl]=\"param.get('name')\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container\r\n *ngIf=\"\r\n ['image', 'video', 'document'].includes(\r\n form.get('template')?.value?.header?.type?.toLowerCase()\r\n )\r\n \"\r\n >\r\n <p class=\"font-16px font-PoppinsBold mt-3\">File</p>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">File</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n autocomplete=\"off\"\r\n (click)=\"filePicker.click()\"\r\n formControlName=\"fileName\"\r\n />\r\n\r\n <button\r\n mat-button\r\n matSuffix\r\n mat-icon-button\r\n aria-label=\"Choose File\"\r\n (click)=\"filePicker.click()\"\r\n >\r\n <mat-icon>attach_file</mat-icon>\r\n </button>\r\n\r\n <input\r\n #filePicker\r\n hidden\r\n type=\"file\"\r\n [accept]=\"extFileAccepted\"\r\n (change)=\"onFileSelected($event)\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getIsCatalogue\">\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from')?.touched && form.get('from')?.hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">Category</mat-label>\r\n\r\n <mat-select formControlName=\"category\" placeholder=\"Select category\">\r\n <mat-option *ngFor=\"let option of categoryOption\" [value]=\"option.value\">\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.category\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('category')?.touched &&\r\n form.get('category')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">Catalog</mat-label>\r\n\r\n <mat-select formControlName=\"catalogue\" placeholder=\"Select catalog\">\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.catalogue\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('catalogue')?.touched &&\r\n form.get('catalogue')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"form.get('category')?.value === 'product'\"\r\n style=\"padding: 8px; border-radius: 8px; border: 1px solid #6177c4\"\r\n >\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Product</mat-label>\r\n\r\n <mat-select formControlName=\"product\" placeholder=\"Select product\">\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.product\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('product')?.touched &&\r\n form.get('product')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label>Body</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n maxlength=\"100\"\r\n formControlName=\"body\"\r\n placeholder=\"Enter body\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"getIsUtility\">\r\n <div style=\"display: grid; gap: 0.5rem\">\r\n <mat-label class=\"asterix--after\">Template</mat-label>\r\n <mat-radio-group\r\n style=\"display: flex; gap: 0.5rem; flex-wrap: wrap\"\r\n formControlName=\"isUseExistingTemplate\"\r\n (change)=\"handleChangeTemplate($event.value)\"\r\n >\r\n <mat-radio-button\r\n [value]=\"option.value\"\r\n *ngFor=\"let option of templates\"\r\n color=\"primary\"\r\n >\r\n {{ option.label }}\r\n </mat-radio-button>\r\n </mat-radio-group>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100\"\r\n style=\"margin-bottom: 20\"\r\n >\r\n <mat-label class=\"asterix--after\">From</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"from\"\r\n placeholder=\"Select from\"\r\n [complete]=\"isHaveNextAccountOption === false\"\r\n [compareWith]=\"accountSelectedDisplay\"\r\n (infiniteScroll)=\"getNextAccountBatch()\"\r\n (selectionChange)=\"handleChangeFrom($event.value)\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('from').value?.name\"\r\n (searchRes)=\"updateSearchAccount($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of accountOption\" [value]=\"option\">\r\n {{ option.name + ' (' + option.accountNo + ')' }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingAccountOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.from\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"form.get('from')?.touched && form.get('from')?.hasError(validation.type)\"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <ng-container *ngIf=\"!form.get('isUseExistingTemplate')?.value; else existingTmpl\">\r\n <ng-container *ngTemplateOutlet=\"stageAlertTmpl\"></ng-container>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\">\r\n <mat-label class=\"asterix--after\">Body</mat-label>\r\n\r\n <textarea\r\n matInput\r\n rows=\"6\"\r\n cols=\"50\"\r\n cdkTextareaAutosize\r\n cdkAutosizeMinRows=\"2\"\r\n cdkAutosizeMaxRows=\"15\"\r\n formControlName=\"text\"\r\n placeholder=\"Enter text\"\r\n #autosize=\"cdkTextareaAutosize\"\r\n ></textarea>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.text\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('text').touched && form.get('text').hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <app-input\r\n type=\"numeric\"\r\n formControlName=\"ttl\"\r\n label=\"TTL\"\r\n placeholder=\"Enter ttl\"\r\n [trimLeadingZeros]=\"true\"\r\n suffix=\"seconds\"\r\n hint=\"The default TTL is 30 days (2,592,000 seconds) if no value is provided.\"\r\n ></app-input>\r\n </div>\r\n\r\n <div *ngIf=\"!isReadOnlyMode\">\r\n <mat-checkbox formControlName=\"isNeedSave\">\r\n Save this message as future template\r\n </mat-checkbox>\r\n </div>\r\n <div class=\"template-container mt-5\" *ngIf=\"!form.get('isDownloadVariableXLS')?.value\">\r\n <div class=\"add-variable-wrapper\">\r\n <button mat-button class=\"btn-add-variable\" (click)=\"addVariable()\">\r\n <mat-icon class=\"icon-small\">add</mat-icon> Add Variable\r\n </button>\r\n </div>\r\n\r\n <div class=\"body-content-wrapper\">\r\n <h3 class=\"body-content-title\">Body Content</h3>\r\n <p class=\"body-content-subtitle\">\r\n Input the parameter to show during the preview. You can use predefined\r\n variable, drag and drop to text field below\r\n </p>\r\n <div class=\"predefined-variable-wrapper\">\r\n <span class=\"btn-predefined\">\r\n <mat-icon class=\"icon-small\">attach_money</mat-icon>\r\n Unsubscribe Account\r\n </span>\r\n </div>\r\n <div class=\"variables-list\" formArrayName=\"variables\">\r\n <div\r\n class=\"variable-row d-flex align-items-start mb-3\"\r\n *ngFor=\"let variable of variables.controls; let i = index\"\r\n [formGroupName]=\"i\"\r\n >\r\n <div class=\"variable-sequence mr-3\">\r\n {{ '{' + '{' + (i + 1) + '}' + '}' }}\r\n </div>\r\n <div class=\"variable-input-wrapper flex-grow-1\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n class=\"w-100 custom-variable-field\"\r\n >\r\n <input\r\n matInput\r\n type=\"text\"\r\n formControlName=\"paramName\"\r\n placeholder=\"e.g. Name, Verification code\"\r\n />\r\n </mat-form-field>\r\n\r\n <ng-container\r\n *ngFor=\"let validation of validationMessages?.paramName\"\r\n >\r\n <div\r\n class=\"custom-error-text text-right\"\r\n *ngIf=\"\r\n variable.get('paramName')?.hasError(validation.type) &&\r\n (variable.get('paramName')?.touched ||\r\n variable.get('paramName')?.dirty)\r\n \"\r\n >\r\n <span class=\"font-12px m-0\">{{ validation.message }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <button\r\n type=\"button\"\r\n class=\"btn-delete ml-3\"\r\n (click)=\"removeVariable(i)\"\r\n >\r\n <mat-icon color=\"warn\">delete_outline</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <mat-checkbox\r\n labelPosition=\"before\"\r\n formControlName=\"isDownloadVariableXLS\"\r\n (change)=\"updateVariableDownloadXLS($event.checked)\"\r\n >\r\n Using Download XLSX\r\n </mat-checkbox>\r\n </div>\r\n </ng-container>\r\n\r\n <ng-template #existingTmpl>\r\n <ng-container *ngTemplateOutlet=\"stageAlertTmpl\"></ng-container>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Template</mat-label>\r\n\r\n <mat-select\r\n matSelectInfiniteScroll\r\n formControlName=\"template\"\r\n placeholder=\"Select template\"\r\n [complete]=\"isHaveNextTemplateOption === false\"\r\n [compareWith]=\"templateSelectedDisplay\"\r\n (infiniteScroll)=\"getNextTemplateBatch()\"\r\n (selectionChange)=\"updateTemplate($event.value)\"\r\n >\r\n <div style=\"margin: 20px\">\r\n <lib-search\r\n [placeholder]=\"'Search'\"\r\n [currentValue]=\"form?.get('template').value?.name\"\r\n (searchRes)=\"updateSearch($event)\"\r\n ></lib-search>\r\n </div>\r\n\r\n <mat-option *ngFor=\"let option of templateOption\" [value]=\"option\">\r\n {{ option.name }}\r\n </mat-option>\r\n <mat-option *ngIf=\"isLoadingTemplateOption\">Loading...</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.template\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('template')?.touched &&\r\n form.get('template')?.hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <app-input\r\n type=\"numeric\"\r\n formControlName=\"ttl\"\r\n label=\"TTL\"\r\n placeholder=\"Enter ttl\"\r\n [trimLeadingZeros]=\"true\"\r\n suffix=\"Seconds\"\r\n hint=\"The default TTL is 30 days (2,592,000 seconds) if no value is provided.\"\r\n ></app-input>\r\n </div>\r\n <div\r\n class=\"template-container mt-5\"\r\n *ngIf=\"!form.get('isDownloadVariableXLS')?.value\"\r\n formArrayName=\"variables\"\r\n >\r\n <div class=\"font-bold mb-3\">Variables</div>\r\n\r\n <div class=\"form-group mb-3\" [formGroupName]=\"0\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100 custom-variable-field\"\r\n >\r\n <mat-label>{{ '{' + '{' + 1 + '}' + '}' }}</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n formControlName=\"paramName\"\r\n placeholder=\"Name\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"form-group mb-3\" [formGroupName]=\"1\">\r\n <mat-form-field\r\n appearance=\"outline\"\r\n floatLabel=\"always\"\r\n class=\"w-100 custom-variable-field\"\r\n >\r\n <mat-label>{{ '{' + '{' + 2 + '}' + '}' }}</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n formControlName=\"paramName\"\r\n placeholder=\"Verification code\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-end\">\r\n <mat-checkbox\r\n labelPosition=\"before\"\r\n formControlName=\"isDownloadVariableXLS\"\r\n (change)=\"updateVariableDownloadXLS($event.checked)\"\r\n >\r\n Using Download XLSX\r\n </mat-checkbox>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n</form>\r\n\r\n<ng-template #stageAlertTmpl>\r\n <div\r\n role=\"alert\"\r\n class=\"alert alert-warning d-flex align-items-center\"\r\n style=\"margin-top: 8px; border: 1px solid rgb(243, 124, 44)\"\r\n *ngIf=\"form.get('from')?.value && form.get('from')?.value?.directSendRestrictionStage > 0\"\r\n >\r\n <mat-icon style=\"margin-right: 10px !important\">error_outline</mat-icon>\r\n\r\n <div *ngIf=\"form.get('from')?.value?.directSendRestrictionStage === 1\">\r\n Direct Send misuse detected. Please review your messaging practices.\r\n </div>\r\n <div *ngIf=\"form.get('from')?.value?.directSendRestrictionStage === 2\">\r\n Direct Send access restricted for 7 days due to continued misuse.\r\n </div>\r\n\r\n <div *ngIf=\"form.get('from')?.value?.directSendRestrictionStage === 3\">\r\n Direct Send access restricted for 30 days due to continued misuse. Final warning before\r\n permanent revocation.\r\n </div>\r\n\r\n <div *ngIf=\"form.get('from')?.value?.directSendRestrictionStage === 4\">\r\n Direct Send access has been permanently revoked.\r\n </div>\r\n </div>\r\n</ng-template>\r\n",
|
|
5087
|
+
styles: [".asterix--after:after{content:\"*\";color:red}.template-container{background-color:#fff;border-radius:.5rem;width:100%;max-width:56rem;box-sizing:border-box}.template-container .variable-wapper{margin-bottom:.5rem;display:flex;align-items:center}.template-container .add-variable-wrapper{display:flex;align-items:center;justify-content:flex-end;margin-bottom:.5rem}.template-container .add-variable-wrapper .btn-add-variable{color:#3b82f6!important}.template-container .body-content-wrapper{background-color:#d1e4fd;border-radius:.5rem;padding:1.5rem;margin-bottom:.5rem}.template-container .body-content-wrapper .body-content-title{color:#1e293b;font-size:1.125rem;font-weight:700;margin:0 0 .5rem}.template-container .body-content-wrapper .body-content-subtitle{color:#6b7280;font-size:.875rem;margin:0 0 1.25rem}.template-container .body-content-wrapper .predefined-variable-wrapper{margin-bottom:1.5rem}.template-container .body-content-wrapper .predefined-variable-wrapper .btn-predefined{display:inline-flex;align-items:center;background-color:#22c55e;color:#fff;font-size:.75rem;font-weight:600;padding:.375rem .75rem;border-radius:9999px;cursor:grab;transition:background-color .2s}.template-container .body-content-wrapper .predefined-variable-wrapper .btn-predefined:hover{background-color:#16a34a}.template-container .body-content-wrapper .predefined-variable-wrapper .btn-predefined .icon-small{font-size:16px;width:16px;height:16px;margin-right:.25rem;line-height:16px}.template-container .body-content-wrapper .custom-variable-field ::ng-deep .mat-form-field-wrapper{padding-bottom:0!important;margin-bottom:0!important}.template-container .body-content-wrapper .custom-variable-field ::ng-deep .mat-form-field-outline{background-color:#fff!important;border-radius:5px}.template-container .body-content-wrapper .custom-variable-field ::ng-deep .mat-form-field-flex{background-color:transparent!important}.template-container .body-content-wrapper .custom-variable-field ::ng-deep input.mat-input-element{margin-top:-8px!important}.template-container .body-content-wrapper .custom-error-text{color:#f44336;margin-top:4px;padding-right:12px}.template-container .body-content-wrapper .variable-sequence{background-color:#fff;border:1px solid #e2e8f0;color:#4b5563;border-radius:5px;font-weight:500;min-width:3.5rem;text-align:center;height:51px;display:flex;align-items:center;justify-content:center;margin-top:4px}.template-container .body-content-wrapper .btn-delete{background:0 0;border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;height:51px;margin-top:4px;transition:transform .2s}.template-container .body-content-wrapper .btn-delete:hover{transform:scale(1.1)}.template-container .checkbox-wrapper{display:flex;justify-content:flex-end;margin-top:.5rem}.template-container .checkbox-wrapper .checkbox-xlsx{font-size:.875rem;font-weight:500;color:#374151}"]
|
|
4940
5088
|
})
|
|
4941
5089
|
], GeneralInformationWAComponent);
|
|
4942
5090
|
return GeneralInformationWAComponent;
|
|
@@ -5366,10 +5514,7 @@
|
|
|
5366
5514
|
var _this = this;
|
|
5367
5515
|
this.form = new forms.FormGroup({
|
|
5368
5516
|
id: new forms.FormControl(null),
|
|
5369
|
-
campaignName: new forms.FormControl(null, [
|
|
5370
|
-
forms.Validators.required,
|
|
5371
|
-
forms.Validators.maxLength(100),
|
|
5372
|
-
]),
|
|
5517
|
+
campaignName: new forms.FormControl(null, [forms.Validators.required, forms.Validators.maxLength(100)]),
|
|
5373
5518
|
medium: new forms.FormControl(null, [forms.Validators.required]),
|
|
5374
5519
|
});
|
|
5375
5520
|
this.form.valueChanges.subscribe(function () {
|
|
@@ -5393,12 +5538,8 @@
|
|
|
5393
5538
|
if (Object.entries(campaign).length === 0)
|
|
5394
5539
|
return;
|
|
5395
5540
|
this.form.get('id').setValue((_b = (_a = campaign) === null || _a === void 0 ? void 0 : _a.generalInformation) === null || _b === void 0 ? void 0 : _b.id);
|
|
5396
|
-
this.form
|
|
5397
|
-
|
|
5398
|
-
.setValue((_d = (_c = campaign) === null || _c === void 0 ? void 0 : _c.generalInformation) === null || _d === void 0 ? void 0 : _d.form.campaignName);
|
|
5399
|
-
this.form
|
|
5400
|
-
.get('medium')
|
|
5401
|
-
.setValue((_f = (_e = campaign) === null || _e === void 0 ? void 0 : _e.generalInformation) === null || _f === void 0 ? void 0 : _f.form.medium);
|
|
5541
|
+
this.form.get('campaignName').setValue((_d = (_c = campaign) === null || _c === void 0 ? void 0 : _c.generalInformation) === null || _d === void 0 ? void 0 : _d.form.campaignName);
|
|
5542
|
+
this.form.get('medium').setValue((_f = (_e = campaign) === null || _e === void 0 ? void 0 : _e.generalInformation) === null || _f === void 0 ? void 0 : _f.form.medium);
|
|
5402
5543
|
};
|
|
5403
5544
|
GeneralInformationComponent.prototype.initDisable = function () {
|
|
5404
5545
|
if (!this.isReadOnlyMode) {
|
|
@@ -5407,6 +5548,7 @@
|
|
|
5407
5548
|
this.form.disable();
|
|
5408
5549
|
};
|
|
5409
5550
|
GeneralInformationComponent.prototype.updateGeneralInformationForm = function (form) {
|
|
5551
|
+
console.log(form, 'form');
|
|
5410
5552
|
this.generalInformationForm = form;
|
|
5411
5553
|
this.isShowMore = false;
|
|
5412
5554
|
this.generalInformation.emit({
|
|
@@ -5529,7 +5671,7 @@
|
|
|
5529
5671
|
core.Component({
|
|
5530
5672
|
selector: 'lib-new-campaign-general-information',
|
|
5531
5673
|
template: "<form autocomplete=\"off\" [formGroup]=\"form\">\r\n <div class=\"campaign-info\">\r\n <div class=\"campaign-info-child\">\r\n <mat-card>\r\n <mat-card-content>\r\n <h3 class=\"font-22px font-PoppinsBold mb-4\">General Information</h3>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Broadcast Name</mat-label>\r\n\r\n <input\r\n matInput\r\n type=\"text\"\r\n formControlName=\"campaignName\"\r\n placeholder=\"Enter Broadcast name\"\r\n />\r\n </mat-form-field>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center w-100\">\r\n <mat-hint align=\"start\">\r\n {{ form.get('campaignName').value?.length || 0 }}/100\r\n </mat-hint>\r\n\r\n <div>\r\n <mat-error\r\n align=\"end\"\r\n *ngFor=\"let validation of validationMessages.campaignName\"\r\n >\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('campaignName').touched &&\r\n form.get('campaignName').hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <mat-form-field appearance=\"outline\" floatLabel=\"always\" class=\"w-100\">\r\n <mat-label class=\"asterix--after\">Channel</mat-label>\r\n\r\n <mat-select placeholder=\"Select channel\" formControlName=\"medium\">\r\n <mat-option\r\n *ngFor=\"let option of channelOption\"\r\n [value]=\"option.value\"\r\n >\r\n {{ option.label }}\r\n </mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n\r\n <mat-error align=\"end\" *ngFor=\"let validation of validationMessages.medium\">\r\n <p\r\n class=\"font-12px mb-0\"\r\n *ngIf=\"\r\n form.get('medium').touched &&\r\n form.get('medium').hasError(validation.type)\r\n \"\r\n >\r\n {{ validation.message }}\r\n </p>\r\n </mat-error>\r\n </div>\r\n\r\n <ng-container *ngIf=\"form.get('medium').value === 'WA'\">\r\n <lib-general-information-wa\r\n [isTouchedForm]=\"isTouchedWAForm\"\r\n [isReadOnlyMode]=\"isReadOnlyMode\"\r\n (updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"\r\n ></lib-general-information-wa>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"form.get('medium').value === 'LINE'\">\r\n <lib-general-information-line\r\n [isTouchedForm]=\"isTouchedSMSForm\"\r\n [isReadOnlyMode]=\"isReadOnlyMode\"\r\n (updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"\r\n ></lib-general-information-line>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"form.get('medium').value === 'SMS'\">\r\n <lib-general-information-sms\r\n [isTouchedForm]=\"isTouchedSMSForm\"\r\n [isReadOnlyMode]=\"isReadOnlyMode\"\r\n (updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"\r\n ></lib-general-information-sms>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"form.get('medium').value === 'EMAIL'\">\r\n <lib-general-information-email\r\n [isTouchedForm]=\"isTouchedEmailForm\"\r\n [isReadOnlyMode]=\"isReadOnlyMode\"\r\n (updateGeneralInformationForm)=\"updateGeneralInformationForm($event)\"\r\n ></lib-general-information-email>\r\n </ng-container>\r\n </mat-card-content>\r\n </mat-card>\r\n </div>\r\n\r\n <div class=\"campaign-info-child pl-20px\">\r\n <h3 class=\"font-22px font-PoppinsBold\">Broadcast Content</h3>\r\n\r\n <div\r\n [ngClass]=\"\r\n form.get('medium').value === 'SMS' || form.get('medium').value === 'EMAIL'\r\n ? 'campaign-border-preview'\r\n : 'campaign-preview'\r\n \"\r\n >\r\n <section\r\n *ngIf=\"\r\n form.get('medium').value === 'SMS' || form.get('medium').value === 'EMAIL'\r\n \"\r\n >\r\n <p\r\n *ngIf=\"getBody\"\r\n class=\"body my-2\"\r\n style=\"max-width: 500px; word-wrap: break-word\"\r\n [innerHTML]=\"getBody\"\r\n ></p>\r\n </section>\r\n\r\n <section *ngIf=\"form.get('medium').value === 'WA'\" class=\"campaign-preview__wa\">\r\n <div class=\"header-preview\">\r\n <div class=\"heading\">\r\n {{ getHeader }}\r\n </div>\r\n </div>\r\n <div class=\"body-preview\">\r\n <section *ngIf=\"getBody || getMedia || displayFile\">\r\n <div\r\n class=\"chat\"\r\n [ngClass]=\"{ 'no-bottom-border': getTemplate?.buttons?.length > 0 }\"\r\n >\r\n <img\r\n *ngIf=\"\r\n (getMedia === 'IMAGE' ||\r\n getTemplate?.header?.type?.toLowerCase() === 'image') &&\r\n displayFile\r\n \"\r\n style=\"max-width: 100%\"\r\n alt=\"image\"\r\n [src]=\"displayFile\"\r\n />\r\n\r\n <video\r\n *ngIf=\"\r\n (getMedia === 'VIDEO' ||\r\n getTemplate?.header?.type?.toLowerCase() === 'video') &&\r\n displayFile\r\n \"\r\n id=\"video\"\r\n style=\"width: 100%\"\r\n [src]=\"displayFile\"\r\n controls\r\n ></video>\r\n\r\n <div *ngIf=\"getMedia === 'DOCUMENT'\" style=\"display: flex\">\r\n <img\r\n style=\"width: 13px; height: 18px\"\r\n alt=\"document\"\r\n src=\"../../../../../assets/images/icon-file.png\"\r\n />\r\n\r\n <span style=\"margin-left: 10px\">Document</span>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getMedia === 'LOCATION'\">\r\n <agm-map\r\n style=\"width: 100%; height: 200px\"\r\n [disableDefaultUI]=\"true\"\r\n [latitude]=\"maps.latitude\"\r\n [longitude]=\"maps.longitude\"\r\n [zoom]=\"maps.zoom\"\r\n >\r\n <agm-marker\r\n [latitude]=\"maps.latitude\"\r\n [longitude]=\"maps.longitude\"\r\n [markerDraggable]=\"false\"\r\n ></agm-marker>\r\n </agm-map>\r\n <a\r\n [href]=\"\r\n 'https://www.google.com/maps/search/?api=1&query=' +\r\n maps.latitude +\r\n ',' +\r\n maps.longitude\r\n \"\r\n >\r\n https://www.google.com/maps/search/?api=1&query={{\r\n maps.latitude\r\n }},{{ maps.longitude }}\r\n </a>\r\n </ng-container>\r\n\r\n <p *ngIf=\"getBody\" class=\"body my-2\" [innerHTML]=\"getBody\"></p>\r\n\r\n <p\r\n *ngIf=\"getTemplate?.footer\"\r\n class=\"mb-2\"\r\n style=\"color: rgb(160, 160, 160)\"\r\n >\r\n {{ getTemplate.footer }}\r\n </p>\r\n </div>\r\n </section>\r\n <section *ngIf=\"getTemplate?.buttons?.length > 0\">\r\n <div\r\n *ngFor=\"let button of getTemplateButton\"\r\n class=\"params-btn pb-0 pointer\"\r\n >\r\n <p class=\"mb-0\">\r\n {{ button?.text || button?.type }}\r\n </p>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"getTemplate?.buttons?.length > 3\"\r\n class=\"params-btn pb-0 pointer\"\r\n (click)=\"isShowMore = !isShowMore\"\r\n >\r\n <p class=\"mb-0\"><mat-icon>list</mat-icon> See all options</p>\r\n </div>\r\n </section>\r\n </div>\r\n </section>\r\n\r\n <section *ngIf=\"form.get('medium').value === 'LINE'\" class=\"campaign-preview__line\">\r\n <div class=\"header-preview\">\r\n <div class=\"heading\">\r\n {{ getHeader }}\r\n </div>\r\n </div>\r\n <div class=\"body-preview\">\r\n <!-- Template Line Text -->\r\n <section *ngIf=\"isText || !isJSON\" class=\"chat\">\r\n <p class=\"body my-2\" [innerHTML]=\"getBody\"></p>\r\n </section>\r\n\r\n <!-- Template Line Button | Confirmation -->\r\n <section\r\n *ngIf=\"['buttons', 'confirm'].includes(getTemplateLine?.type)\"\r\n class=\"chat\"\r\n [ngClass]=\"{ 'no-bottom-border': getTemplateLine?.actions?.length > 0 }\"\r\n >\r\n <img\r\n *ngIf=\"getTemplateLine?.thumbnailImageUrl\"\r\n style=\"max-width: 100%\"\r\n class=\"mb-1\"\r\n [src]=\"getTemplateLine?.thumbnailImageUrl\"\r\n />\r\n\r\n <p\r\n *ngIf=\"getTemplateLine?.title\"\r\n class=\"font-PoppinsBold mb-1\"\r\n [innerHTML]=\"getTemplateLine?.title\"\r\n ></p>\r\n\r\n <p\r\n *ngIf=\"getTemplateLine?.text\"\r\n class=\"mb-0\"\r\n [innerHTML]=\"getTemplateLine?.text\"\r\n ></p>\r\n </section>\r\n\r\n <!-- Template Line Carousel -->\r\n <div\r\n *ngIf=\"['carousel'].includes(getTemplateLine?.type)\"\r\n class=\"d-flex gap-2 overflow-auto\"\r\n >\r\n <div *ngFor=\"let column of getTemplateLine?.columns\">\r\n <section\r\n class=\"chat w-100\"\r\n [ngClass]=\"{ 'no-bottom-border': column?.actions?.length > 0 }\"\r\n >\r\n <img\r\n *ngIf=\"column.thumbnailImageUrl\"\r\n style=\"max-width: 100%\"\r\n class=\"mb-1\"\r\n [src]=\"column.thumbnailImageUrl\"\r\n />\r\n\r\n <p\r\n *ngIf=\"column.title\"\r\n class=\"font-PoppinsBold mb-1\"\r\n [innerHTML]=\"column.title\"\r\n ></p>\r\n\r\n <p\r\n *ngIf=\"column.text\"\r\n class=\"mb-0\"\r\n [innerHTML]=\"column.text\"\r\n ></p>\r\n </section>\r\n <section *ngIf=\"column?.actions?.length > 0\">\r\n <div\r\n *ngFor=\"let button of column?.actions\"\r\n class=\"params-btn mw-100 pb-0 pointer\"\r\n >\r\n <p class=\"mb-0\">\r\n {{ button?.text }}\r\n </p>\r\n </div>\r\n </section>\r\n </div>\r\n </div>\r\n\r\n <!-- Template Line Image Carousel -->\r\n <div\r\n *ngIf=\"['image_carousel'].includes(getTemplateLine?.type)\"\r\n class=\"d-flex gap-2 overflow-auto\"\r\n >\r\n <div *ngFor=\"let column of getTemplateLine?.columns\">\r\n <div class=\"image-container\">\r\n <img [src]=\"column.imageUrl\" alt=\"image\" />\r\n\r\n <div class=\"d-flex justify-content-center\">\r\n <p class=\"font-13px overlay-text\">\r\n {{ column.action.label }}\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Button Line -->\r\n <section\r\n *ngIf=\"\r\n getTemplateLine?.type !== 'confirm' &&\r\n getTemplateLine?.actions?.length > 0\r\n \"\r\n >\r\n <div\r\n *ngFor=\"let button of getTemplateLine?.actions\"\r\n class=\"params-btn pb-0 pointer\"\r\n >\r\n <p class=\"mb-0\">\r\n {{ button?.text }}\r\n </p>\r\n </div>\r\n </section>\r\n <section\r\n *ngIf=\"\r\n getTemplateLine?.type === 'confirm' &&\r\n getTemplateLine?.actions?.length > 0\r\n \"\r\n class=\"d-flex justify-content-around mw-70 bg-white\"\r\n >\r\n <div\r\n *ngFor=\"let button of getTemplateLine?.actions\"\r\n class=\"params-btn flex pb-0 pointer\"\r\n >\r\n <p class=\"mb-0\">\r\n {{ button?.text }}\r\n </p>\r\n </div>\r\n </section>\r\n <!-- ./ Button Line -->\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"d-flex\" style=\"flex-direction: column\">\r\n <span\r\n *ngIf=\"form.get('medium').value === 'SMS'\"\r\n style=\"text-align: right; width: 100%\"\r\n >\r\n {{ twilioResultCounter.fulltext }}\r\n </span>\r\n <span\r\n style=\"text-align: right; width: 100%; color: red\"\r\n *ngIf=\"twilioResultCounter.segments > 10 && form.get('medium').value === 'SMS'\"\r\n >\r\n Maximum Segment is 10\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #isSpinner>\r\n <div class=\"text-center my-auto\">\r\n <img src=\"../../../../../assets/images/spinner.svg\" />\r\n </div>\r\n</ng-template>\r\n",
|
|
5532
|
-
styles: [".campaign-info{display:flex}.campaign-info-child{flex:1}.campaign-info .asterix--after:after{content:\"*\";color:red}.campaign-info .pl-20px{padding-left:20px}.campaign-info .mw-70{max-width:70%}.campaign-info .campaign-preview{width:75%}.campaign-info .campaign-preview .header-preview{padding:15px;min-height:60px;border-radius:10px 10px 0 0}.campaign-info .campaign-preview .header-preview .heading{width:100%;color:#e0e0e0;margin-left:5px;font-size:20px}.campaign-info .campaign-preview .body-preview{padding:15px;min-height:470px}.campaign-info .campaign-preview .body-preview .chat{width:70%;padding:11px;font-size:14px;line-height:22px;color:#494949;border-radius:8px;background:#fff;overflow-wrap:break-word;white-space:pre-line;box-shadow:12px 12px 20px rgba(44,59,113,.04)}.campaign-info .campaign-preview .body-preview .chat .body{max-height:400px;overflow-y:auto;overscroll-behavior-y:contain}.campaign-info .campaign-preview .body-preview .chat.no-bottom-border{border-bottom-left-radius:0;border-bottom-right-radius:0}.campaign-info .campaign-preview__wa .header-preview{background:#065f54}.campaign-info .campaign-preview__wa .body-preview{border-bottom-left-radius:8px;border-bottom-right-radius:8px;background-image:url(
|
|
5674
|
+
styles: [".campaign-info{display:flex}.campaign-info-child{flex:1}.campaign-info .asterix--after:after{content:\"*\";color:red}.campaign-info .pl-20px{padding-left:20px}.campaign-info .mw-70{max-width:70%}.campaign-info .campaign-preview{width:75%}.campaign-info .campaign-preview .header-preview{padding:15px;min-height:60px;border-radius:10px 10px 0 0}.campaign-info .campaign-preview .header-preview .heading{width:100%;color:#e0e0e0;margin-left:5px;font-size:20px}.campaign-info .campaign-preview .body-preview{padding:15px;min-height:470px}.campaign-info .campaign-preview .body-preview .chat{width:70%;padding:11px;font-size:14px;line-height:22px;color:#494949;border-radius:8px;background:#fff;overflow-wrap:break-word;white-space:pre-line;box-shadow:12px 12px 20px rgba(44,59,113,.04)}.campaign-info .campaign-preview .body-preview .chat .body{max-height:400px;overflow-y:auto;overscroll-behavior-y:contain}.campaign-info .campaign-preview .body-preview .chat.no-bottom-border{border-bottom-left-radius:0;border-bottom-right-radius:0}.campaign-info .campaign-preview__wa .header-preview{background:#065f54}.campaign-info .campaign-preview__wa .body-preview{border-bottom-left-radius:8px;border-bottom-right-radius:8px;background-image:url(../../../../assets/svg/whatsapp-bg.svg);background-position:center;background-repeat:no-repeat;background-size:cover}.campaign-info .campaign-preview__wa .body-preview .params-btn{width:auto;max-width:70%;color:#34b7f1;background:#fff;box-shadow:12px 12px 20px rgba(44,59,113,.04);border-radius:0;font-size:16px;line-height:43px;padding:0;text-align:center;font-family:Poppins;overflow-wrap:break-word}.campaign-info .campaign-preview__wa .body-preview .params-btn b{font-family:PoppinsBold}.campaign-info .campaign-preview__line .header-preview{background:#273046}.campaign-info .campaign-preview__line .body-preview{background:#7692bf;border-bottom-left-radius:8px;border-bottom-right-radius:8px}.campaign-info .campaign-preview__line .body-preview .params-btn{width:auto;max-width:70%;color:#34b7f1;background:#fff;box-shadow:12px 12px 20px rgba(44,59,113,.04);border-radius:0;font-size:16px;line-height:43px;padding:0;text-align:center;font-family:Poppins;overflow-wrap:break-word}.campaign-info .campaign-preview__line .body-preview .params-btn b{font-family:PoppinsBold}.campaign-info .campaign-preview__line .body-preview .image-container{position:relative;width:200px;height:200px}.campaign-info .campaign-preview__line .body-preview .image-container img{display:block;width:100%;height:100%}.campaign-info .campaign-preview__line .body-preview .image-container .overlay-text{top:170px;position:absolute;padding:2px 5px;color:#fff;background-color:rgba(49,57,60,.62);border-radius:10px}.campaign-info .campaign-border-preview{width:100%;min-height:100px;padding:32px;border:1px solid #e2e2e2;border-radius:8px}"]
|
|
5533
5675
|
})
|
|
5534
5676
|
], GeneralInformationComponent);
|
|
5535
5677
|
return GeneralInformationComponent;
|
|
@@ -5590,15 +5732,16 @@
|
|
|
5590
5732
|
});
|
|
5591
5733
|
NewNumberBasesComponent.prototype.initEdit = function () {
|
|
5592
5734
|
var _this = this;
|
|
5593
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
5735
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
5594
5736
|
if (Object.entries(this.getCampaignStorage).length === 0)
|
|
5595
5737
|
return;
|
|
5596
|
-
|
|
5738
|
+
var genInfoForm = (_b = (_a = this.getCampaignStorage) === null || _a === void 0 ? void 0 : _a.generalInformation) === null || _b === void 0 ? void 0 : _b.form;
|
|
5739
|
+
this.isShowUploadCSV = ((_c = genInfoForm) === null || _c === void 0 ? void 0 : _c.isUpload) || ((_d = genInfoForm) === null || _d === void 0 ? void 0 : _d.isDownloadVariableXLS);
|
|
5597
5740
|
this.fileSelected = {
|
|
5598
|
-
name: (
|
|
5599
|
-
targetURL: (
|
|
5741
|
+
name: (_f = (_e = this.getCampaignStorage) === null || _e === void 0 ? void 0 : _e.targetAudienceFile) === null || _f === void 0 ? void 0 : _f.name,
|
|
5742
|
+
targetURL: (_h = (_g = this.getCampaignStorage) === null || _g === void 0 ? void 0 : _g.targetAudienceFile) === null || _h === void 0 ? void 0 : _h.targetURL,
|
|
5600
5743
|
};
|
|
5601
|
-
(
|
|
5744
|
+
(_j = this.table.dataSource.data) === null || _j === void 0 ? void 0 : _j.forEach(function (each) {
|
|
5602
5745
|
var _a, _b;
|
|
5603
5746
|
if ((_b = (_a = _this.getCampaignStorage) === null || _a === void 0 ? void 0 : _a.targetAudience) === null || _b === void 0 ? void 0 : _b.includes(each.id))
|
|
5604
5747
|
_this.onChecked(true, each);
|
|
@@ -5767,13 +5910,25 @@
|
|
|
5767
5910
|
return found ? true : false;
|
|
5768
5911
|
};
|
|
5769
5912
|
NewNumberBasesComponent.prototype.onDownloadSampleService = function () {
|
|
5770
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o
|
|
5913
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
5914
|
+
var genInfoForm = (_b = (_a = this.getCampaignStorage) === null || _a === void 0 ? void 0 : _a.generalInformation) === null || _b === void 0 ? void 0 : _b.form;
|
|
5915
|
+
var isNeedSave = (_c = genInfoForm) === null || _c === void 0 ? void 0 : _c.isNeedSave;
|
|
5771
5916
|
var parameterList = [
|
|
5772
|
-
this.initParam('platform', (
|
|
5773
|
-
this.initParam('templateName', (_h = (_g = (_f = (_e = this.getCampaignStorage) === null || _e === void 0 ? void 0 : _e.generalInformation) === null || _f === void 0 ? void 0 : _f.form) === null || _g === void 0 ? void 0 : _g.template) === null || _h === void 0 ? void 0 : _h.name, 'string'),
|
|
5774
|
-
this.initParam('templateLang', (_m = (_l = (_k = (_j = this.getCampaignStorage) === null || _j === void 0 ? void 0 : _j.generalInformation) === null || _k === void 0 ? void 0 : _k.form) === null || _l === void 0 ? void 0 : _l.template) === null || _m === void 0 ? void 0 : _m.lang, 'string'),
|
|
5775
|
-
this.initParam('category', (_p = (_o = this.categorySelected) === null || _o === void 0 ? void 0 : _o.map(function (t) { return t.id; }).join(), (_p !== null && _p !== void 0 ? _p : [])), 'string'),
|
|
5917
|
+
this.initParam('platform', ((_e = (_d = genInfoForm) === null || _d === void 0 ? void 0 : _d.template) === null || _e === void 0 ? void 0 : _e.platform) || 'WA', 'string'),
|
|
5776
5918
|
];
|
|
5919
|
+
if (isNeedSave) {
|
|
5920
|
+
// SKENARIO 1: USE EXISTING / TEMPLATE SUDAH DISAVE
|
|
5921
|
+
parameterList.push(this.initParam('templateName', (_g = (_f = genInfoForm) === null || _f === void 0 ? void 0 : _f.template) === null || _g === void 0 ? void 0 : _g.name, 'string'), this.initParam('templateLang', (_j = (_h = genInfoForm) === null || _h === void 0 ? void 0 : _h.template) === null || _j === void 0 ? void 0 : _j.lang, 'string'), this.initParam('category', (_l = (_k = this.categorySelected) === null || _k === void 0 ? void 0 : _k.map(function (t) { return t.id; }).join(), (_l !== null && _l !== void 0 ? _l : '')), 'string'));
|
|
5922
|
+
}
|
|
5923
|
+
else {
|
|
5924
|
+
// SKENARIO 2: CREATE NEW (Belum disave, butuh text & examples)
|
|
5925
|
+
parameterList.push(this.initParam('bodyText', (_m = genInfoForm) === null || _m === void 0 ? void 0 : _m.text, 'string'));
|
|
5926
|
+
var variables = (_o = genInfoForm) === null || _o === void 0 ? void 0 : _o.variables;
|
|
5927
|
+
if (variables && Array.isArray(variables) && variables.length > 0) {
|
|
5928
|
+
var bodyExamplesString = variables.map(function (v) { return v.paramName; }).join(',');
|
|
5929
|
+
parameterList.push(this.initParam('bodyExamples', bodyExamplesString, 'string'));
|
|
5930
|
+
}
|
|
5931
|
+
}
|
|
5777
5932
|
var subs = this.apiAdapterService
|
|
5778
5933
|
.executeApiRequest(parameterList, '/message/bulkupload/template', 'GET', true)
|
|
5779
5934
|
.subscribe(function (resp) {
|
|
@@ -6143,13 +6298,18 @@
|
|
|
6143
6298
|
|
|
6144
6299
|
exports.AdlCampaignManagementLibraryInternalComponent = AdlCampaignManagementLibraryInternalComponent;
|
|
6145
6300
|
exports.AdlCampaignManagementLibraryInternalModule = AdlCampaignManagementLibraryInternalModule;
|
|
6301
|
+
exports.CampaignIndexComponent = CampaignIndexComponent;
|
|
6146
6302
|
exports.CampaignIndexModule = CampaignIndexModule;
|
|
6147
6303
|
exports.CampaignManagementComponent = CampaignManagementComponent;
|
|
6148
6304
|
exports.CampaignManagementModule = CampaignManagementModule;
|
|
6149
6305
|
exports.ConfirmationComponent = ConfirmationComponent;
|
|
6150
6306
|
exports.ConfirmationModule = ConfirmationModule;
|
|
6307
|
+
exports.DashboardComponent = DashboardComponent;
|
|
6151
6308
|
exports.DashboardModule = DashboardModule;
|
|
6309
|
+
exports.MatSelectInfiniteScrollDirective = MatSelectInfiniteScrollDirective;
|
|
6310
|
+
exports.SearchComponent = SearchComponent;
|
|
6152
6311
|
exports.SearchModule = SearchModule;
|
|
6312
|
+
exports.SummaryComponent = SummaryComponent;
|
|
6153
6313
|
exports.ɵa = WizardComponent;
|
|
6154
6314
|
exports.ɵb = NewCampaignComponent;
|
|
6155
6315
|
exports.ɵc = GeneralInformationComponent;
|
|
@@ -6162,20 +6322,17 @@
|
|
|
6162
6322
|
exports.ɵj = GeneralInformationEmailComponent;
|
|
6163
6323
|
exports.ɵk = PendingApprovalDialogViewComponent;
|
|
6164
6324
|
exports.ɵl = FailoverMechanismComponent;
|
|
6165
|
-
exports.ɵm =
|
|
6166
|
-
exports.ɵn =
|
|
6167
|
-
exports.ɵo =
|
|
6168
|
-
exports.ɵp =
|
|
6169
|
-
exports.ɵq =
|
|
6170
|
-
exports.ɵr =
|
|
6171
|
-
exports.ɵs =
|
|
6172
|
-
exports.ɵt =
|
|
6173
|
-
exports.ɵu =
|
|
6174
|
-
exports.ɵv =
|
|
6175
|
-
exports.ɵw =
|
|
6176
|
-
exports.ɵx = ConfirmationComponent;
|
|
6177
|
-
exports.ɵy = ConfirmationModel;
|
|
6178
|
-
exports.ɵz = SharedServicesService;
|
|
6325
|
+
exports.ɵm = ApiAdapterServiceService;
|
|
6326
|
+
exports.ɵn = ViewingListOfCampaignTableComponent;
|
|
6327
|
+
exports.ɵo = FilterInListOfCampaignComponent;
|
|
6328
|
+
exports.ɵp = ApiAdapterServiceService;
|
|
6329
|
+
exports.ɵq = MatSelectInfiniteScrollDirective;
|
|
6330
|
+
exports.ɵr = InputNumericModule;
|
|
6331
|
+
exports.ɵs = InputNumericComponent;
|
|
6332
|
+
exports.ɵt = CustomPaginator;
|
|
6333
|
+
exports.ɵu = ConfirmationComponent;
|
|
6334
|
+
exports.ɵv = ConfirmationModel;
|
|
6335
|
+
exports.ɵw = SharedServicesService;
|
|
6179
6336
|
|
|
6180
6337
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
6181
6338
|
|