Merge pull request 'mazdak/UX-1387' (#10) from mazdak/UX-1387 into dev-pending-09-12-2025
Reviewed-on: https://ct.mfsys.com.pk/aConnect/aConnect-UX/pulls/10mazdak/UX-1381
commit
f93372a5ca
@ -1 +1,280 @@
|
|||||||
<p>sms-gateway works!</p>
|
<div id="layout-wrapper">
|
||||||
|
<div class="inner-pg-sp">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="d-sm-flex align-items-center justify-content-between navbar-header p-0">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="col-xl-12 mt-4">
|
||||||
|
<div class="card border">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="table-section">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<div class="card-body mt-2 p-0">
|
||||||
|
<div class="card mb-0 mt-2">
|
||||||
|
<div
|
||||||
|
class="card-header font-edit-13-child d-flex justify-content-between align-items-center">
|
||||||
|
<span *ngIf="!selectedGateway"></span>
|
||||||
|
<span *ngIf="selectedGateway">{{(selectedGateway === selectedGatewayType.SYRIATEL ? 'syriatelCredentials' : (selectedGateway === selectedGatewayType.TWILIO ? 'twilioCredentials' : (selectedGateway === selectedGatewayType.JAZZ ? 'jazzCredentials' : ''))) | translate}}</span>
|
||||||
|
<select class="form-select"style="min-width: 200px; width: auto;" [(ngModel)]="selectedGateway">
|
||||||
|
<option value="">{{'SMSGatewaySelect' | translate}}</option>
|
||||||
|
<option [value]="selectedGatewayType.SYRIATEL">{{'SMSGatewaySyriatel' | translate}}</option>
|
||||||
|
<option [value]="selectedGatewayType.TWILIO">{{'SMSGatewayTwillio' | translate}}</option>
|
||||||
|
<option [value]="selectedGatewayType.JAZZ">{{'SMSGatewayJazz' | translate}}</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<form *ngIf="selectedGateway==='Jazz' || selectedGateway==='Twilio'">
|
||||||
|
<div class="row g-3 mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="d-flex align-items-center gap-2">
|
||||||
|
<label for="accountSID" class="text-nowrap">
|
||||||
|
{{ 'accountSID' | translate }}<span
|
||||||
|
class="mandatory">*</span>
|
||||||
|
</label>
|
||||||
|
<div class="password-wrapper position-relative w-100">
|
||||||
|
<div class="d-flex flex-row align-items-stretch">
|
||||||
|
<input type="text" id="accountSID"
|
||||||
|
class="form-control"
|
||||||
|
|
||||||
|
placeholder="{{ 'accountSID' | translate }}" appNoWhitespaces
|
||||||
|
/>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- <div class="text-danger">
|
||||||
|
{{ 'requiredField' | translate }}
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="d-flex align-items-start gap-2">
|
||||||
|
<label for="authToken"
|
||||||
|
class="text-nowrap mt-2">
|
||||||
|
{{ 'authToken' | translate }}<span
|
||||||
|
class="mandatory">*</span>
|
||||||
|
</label>
|
||||||
|
<div class="password-wrapper position-relative w-100">
|
||||||
|
|
||||||
|
<input id="authToken" class="form-control" autocomplete="new-password" maxlength="500"
|
||||||
|
placeholder="{{ 'authToken' | translate }}" appNoWhitespaces rows="3" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="row g-3 mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="d-flex align-items-center gap-2">
|
||||||
|
<label for="fromNumber" class="text-nowrap">
|
||||||
|
{{ 'fromNumber' | translate }}<span
|
||||||
|
class="mandatory">*</span>
|
||||||
|
</label>
|
||||||
|
<div class="password-wrapper position-relative w-100">
|
||||||
|
<input id="fromNumber" class="form-control"
|
||||||
|
placeholder="{{ 'fromNumber' | translate }}" appNoWhitespaces />
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <div class="text-danger">
|
||||||
|
<div>
|
||||||
|
{{ 'requiredField' | translate }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
{{ 'expiryBeforeRenewal' | translate }}
|
||||||
|
</div> -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row g-3 mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="d-flex align-items-center gap-2">
|
||||||
|
<label class="text-nowrap">
|
||||||
|
{{ 'notificationType' | translate }}<span
|
||||||
|
class="mandatory">*</span>
|
||||||
|
</label>
|
||||||
|
<div class="w-100 d-flex gap-3">
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="radio" name="notificationType" id="message" value="Message">
|
||||||
|
<label class="form-check-label" for="message">
|
||||||
|
{{ 'message' | translate }}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="radio" name="notificationType" id="template" value="Template">
|
||||||
|
<label class="form-check-label" for="template">
|
||||||
|
{{ 'template' | translate }}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="d-flex align-items-center gap-2">
|
||||||
|
<label class="text-nowrap">
|
||||||
|
{{ 'language' | translate }}<span
|
||||||
|
class="mandatory">*</span>
|
||||||
|
</label>
|
||||||
|
<div class="w-100 d-flex gap-3">
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="radio" name="language" id="languageArabic" value="Arabic">
|
||||||
|
<label class="form-check-label" for="languageArabic">
|
||||||
|
{{ 'arabic' | translate }}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="radio" name="language" id="languageEnglish" value="English">
|
||||||
|
<label class="form-check-label" for="languageEnglish">
|
||||||
|
{{ 'english' | translate }}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row g-3 mb-3">
|
||||||
|
<div class="col-md-6 ms-auto text-end">
|
||||||
|
<button
|
||||||
|
class="btn btn-primary waves-effect waves-light"
|
||||||
|
|
||||||
|
>{{'save' | translate}}</button>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<form *ngIf="selectedGateway==='Syriatel'">
|
||||||
|
<div class="row g-3 mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="d-flex align-items-center gap-2">
|
||||||
|
<label for="userName" class="text-nowrap">
|
||||||
|
{{ 'userName' | translate }}<span class="mandatory">*</span>
|
||||||
|
</label>
|
||||||
|
<div class="password-wrapper position-relative w-100">
|
||||||
|
<div class="d-flex flex-row align-items-stretch">
|
||||||
|
<input type="text" id="userName" class="form-control" placeholder="{{ 'userNamePlaceHolder' | translate }}"
|
||||||
|
appNoWhitespaces />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="d-flex align-items-center gap-2">
|
||||||
|
<label for="senderName" class="text-nowrap">
|
||||||
|
{{ 'senderName' | translate }}<span class="mandatory">*</span>
|
||||||
|
</label>
|
||||||
|
<div class="password-wrapper position-relative w-100">
|
||||||
|
<input type="text" id="senderName" class="form-control" placeholder="{{ 'senderNamePlaceHolder' | translate }}"
|
||||||
|
appNoWhitespaces />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row g-3 mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="d-flex align-items-start gap-2">
|
||||||
|
<label for="password" class="text-nowrap mt-2">
|
||||||
|
{{ 'password' | translate }}<span class="mandatory">*</span>
|
||||||
|
</label>
|
||||||
|
<div class="password-wrapper position-relative w-100">
|
||||||
|
<input type="password" id="password" class="form-control" autocomplete="new-password"
|
||||||
|
maxlength="500" placeholder="{{ 'passwordPlaceholder' | translate }}" appNoWhitespaces />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row g-3 mb-3">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="d-flex align-items-center gap-2">
|
||||||
|
<label class="text-nowrap">
|
||||||
|
{{ 'notificationType' | translate }}<span class="mandatory">*</span>
|
||||||
|
</label>
|
||||||
|
<div class="w-100 d-flex gap-3">
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="radio" name="notificationType" id="message"
|
||||||
|
value="Message">
|
||||||
|
<label class="form-check-label" for="message">
|
||||||
|
{{ 'message' | translate }}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="radio" name="notificationType" id="template"
|
||||||
|
value="Template">
|
||||||
|
<label class="form-check-label" for="template">
|
||||||
|
{{ 'template' | translate }}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="d-flex align-items-center gap-2">
|
||||||
|
<label class="text-nowrap">
|
||||||
|
{{ 'language' | translate }}<span class="mandatory">*</span>
|
||||||
|
</label>
|
||||||
|
<div class="w-100 d-flex gap-3">
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="radio" name="language" id="languageArabic" value="Arabic">
|
||||||
|
<label class="form-check-label" for="languageArabic">
|
||||||
|
{{ 'arabic' | translate }}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-check">
|
||||||
|
<input class="form-check-input" type="radio" name="language" id="languageEnglish"
|
||||||
|
value="English">
|
||||||
|
<label class="form-check-label" for="languageEnglish">
|
||||||
|
{{ 'english' | translate }}
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row g-3 mb-3">
|
||||||
|
<div class="col-md-6 ms-auto text-end">
|
||||||
|
<button class="btn btn-primary waves-effect waves-light">
|
||||||
|
{{'save' | translate}}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@ -1,11 +1,18 @@
|
|||||||
|
import { CommonModule } from '@angular/common';
|
||||||
import { Component } from '@angular/core';
|
import { Component } from '@angular/core';
|
||||||
|
import { FormsModule } from '@angular/forms';
|
||||||
|
import { NgSelectComponent } from '@ng-select/ng-select';
|
||||||
|
import { TranslateModule } from '@ngx-translate/core';
|
||||||
|
import { selectedGatewayType } from '../utils/enums';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-sms-gateway',
|
selector: 'app-sms-gateway',
|
||||||
imports: [],
|
imports: [TranslateModule, FormsModule, CommonModule],
|
||||||
templateUrl: './sms-gateway.component.html',
|
templateUrl: './sms-gateway.component.html',
|
||||||
styleUrl: './sms-gateway.component.scss'
|
styleUrl: './sms-gateway.component.scss'
|
||||||
})
|
})
|
||||||
export class SmsGatewayComponent {
|
export class SmsGatewayComponent {
|
||||||
|
selectedGateway: string = '';
|
||||||
|
selectedGatewayType = selectedGatewayType
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue