Add date range filtering to transaction logs

Introduces a date filter section with quick-select buttons (last 7 days, last 30 days, this month), clear filter, and active filter badge to the transaction logs component. Implements debounced search, date range validation, and updates export to include date filters. Enhances UI/UX with new SCSS styles and adds relevant i18n keys for both English and Arabic.
mazdak/UX-2367
Naeem Ullah 5 days ago
parent 0929acd502
commit 9821ed4d9e

@ -21,6 +21,16 @@
{{ "transactionLogs" | translate }}
<div class="d-flex align-items-center gap-2">
<!-- Date Filter Toggle Button -->
<button
class="btn btn-sm btn-outline-info"
(click)="toggleDateFilters()"
[title]="(showDateFilters ? 'hideDateFilters' : 'showDateFilters') | translate"
>
<i class="fas fa-calendar-alt"></i>
<span class="d-none d-md-inline ms-1">{{ "dateFilter" | translate }}</span>
</button>
<div class="search-box">
<input
type="text"
@ -55,6 +65,83 @@
</div>
</div>
<!-- Date Filter Section -->
<div class="card-body border-bottom bg-light" *ngIf="showDateFilters">
<div class="row g-3">
<div class="col-md-3">
<label class="form-label small">{{ "fromDate" | translate }}</label>
<input
type="date"
class="form-control form-control-sm"
[(ngModel)]="fromDate"
[max]="maxDate"
(change)="onDateFilterChange()"
[disabled]="isLoading"
/>
</div>
<div class="col-md-3">
<label class="form-label small">{{ "toDate" | translate }}</label>
<input
type="date"
class="form-control form-control-sm"
[(ngModel)]="toDate"
[max]="maxDate"
(change)="onDateFilterChange()"
[disabled]="isLoading"
/>
</div>
<div class="col-md-6">
<div class="d-flex flex-wrap gap-2 align-items-end h-100">
<!-- Quick Date Filters -->
<div class="btn-group btn-group-sm">
<button
class="btn btn-outline-primary"
(click)="applyLast7Days()"
[disabled]="isLoading"
>
{{ "last7Days" | translate }}
</button>
<button
class="btn btn-outline-primary"
(click)="applyLast30Days()"
[disabled]="isLoading"
>
{{ "last30Days" | translate }}
</button>
<button
class="btn btn-outline-primary"
(click)="applyThisMonth()"
[disabled]="isLoading"
>
{{ "thisMonth" | translate }}
</button>
</div>
<!-- Clear Filter Button -->
<button
class="btn btn-sm btn-outline-danger"
(click)="clearDateFilters()"
[disabled]="isLoading || (!fromDate && !toDate)"
>
<i class="fas fa-times"></i>
{{ "clearFilter" | translate }}
</button>
</div>
</div>
</div>
<!-- Active Filter Badge -->
<div class="mt-2" *ngIf="fromDate || toDate">
<span class="badge bg-info">
<i class="fas fa-filter me-1"></i>
{{ "activeFilter" | translate }}:
<span *ngIf="fromDate">{{ "from" | translate }} {{ fromDate | date }}</span>
<span *ngIf="fromDate && toDate"> {{ "to" | translate }} </span>
<span *ngIf="toDate">{{ toDate | date }}</span>
</span>
</div>
</div>
<div
class="card-body"
*ngIf="transactionDataExpanded; else collapsedTable"
@ -65,6 +152,9 @@
<span class="visually-hidden">Loading...</span>
</div>
<p class="text-muted mt-2">{{ "loadingTransactionLogs" | translate }}</p>
<small *ngIf="fromDate || toDate" class="text-info">
{{ "filteringByDate" | translate }}
</small>
</div>
<!-- Error Message -->
@ -77,6 +167,9 @@
<div *ngIf="!isLoading && !errorMessage && transactionLog.length === 0" class="text-center py-5 text-muted">
<i class="fas fa-database fa-3x mb-3 opacity-50"></i>
<h5>{{ "noTransactionLogsFound" | translate }}</h5>
<p *ngIf="fromDate || toDate" class="small">
{{ "tryAdjustingFilters" | translate }}
</p>
</div>
<!-- Data Table -->
@ -167,6 +260,9 @@
<span class="d-none d-md-inline">
({{ totalCount }} {{ "totalItems" | translate }})
</span>
<span *ngIf="fromDate || toDate" class="badge bg-info ms-2">
<i class="fas fa-filter"></i>
</span>
</div>
<!-- Pagination buttons -->

@ -1,125 +1,139 @@
:host {
display: block;
}
// Date filter section
.date-filter-section {
transition: all 0.3s ease;
.card-header {
background-color: #f8f9fa;
border-bottom: 1px solid rgba(0, 0, 0, 0.125);
}
.date-input-group {
position: relative;
.search-box {
position: relative;
min-width: 200px;
.form-control {
padding-right: 2.5rem;
}
.form-control {
padding-left: 2.5rem;
padding-right: 1rem;
.date-icon {
position: absolute;
right: 0.75rem;
top: 50%;
transform: translateY(-50%);
color: #6c757d;
}
}
.search-icon {
position: absolute;
left: 1rem;
top: 50%;
transform: translateY(-50%);
color: #6c757d;
pointer-events: none;
.quick-filter-btn {
&.active {
background-color: var(--bs-primary);
color: white;
border-color: var(--bs-primary);
}
}
}
.table {
th {
font-weight: 600;
background-color: #f8f9fa;
border-bottom: 2px solid #dee2e6;
white-space: nowrap;
}
// Table styling
.table-responsive {
min-height: 400px;
td {
vertical-align: middle;
}
}
table {
font-size: 0.875rem;
.btn-group-sm > .btn {
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
}
th {
font-weight: 600;
white-space: nowrap;
background-color: #f8f9fa;
}
.badge {
font-size: 0.75em;
}
td {
vertical-align: middle;
.alert-info {
background-color: #e7f3ff;
border-color: #b3d7ff;
color: #004085;
code {
font-size: 0.75rem;
background-color: #f8f9fa;
padding: 0.2rem 0.4rem;
border-radius: 0.25rem;
}
.btn-close {
padding: 0.5rem;
.badge {
font-size: 0.7rem;
padding: 0.25rem 0.5rem;
}
}
}
}
// Loading spinner
.spinner-border {
width: 3rem;
height: 3rem;
}
// Responsive adjustments
@media (max-width: 768px) {
.card-header .d-flex {
flex-direction: column;
align-items: stretch !important;
gap: 0.75rem !important;
}
// Search box
.search-box {
position: relative;
min-width: 200px;
.search-box {
min-width: 100%;
.search-icon {
position: absolute;
right: 0.75rem;
top: 50%;
transform: translateY(-50%);
color: #6c757d;
pointer-events: none;
}
.table-responsive {
font-size: 0.875rem;
.form-control {
padding-right: 2.5rem;
}
}
.d-flex.justify-content-between {
flex-direction: column;
gap: 1rem;
// Active filter badge
.active-filter-badge {
animation: fadeIn 0.3s ease;
}
> div {
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
// Mobile responsive adjustments
@media (max-width: 768px) {
.date-filter-section {
.btn-group {
width: 100%;
justify-content: center !important;
.btn {
flex: 1;
font-size: 0.75rem;
padding: 0.375rem 0.5rem;
}
}
}
.btn-group {
width: 100%;
.table-responsive {
overflow-x: auto;
.btn {
flex: 1;
table {
min-width: 1200px;
}
}
}
// Loading overlay
.text-center.py-5 {
min-height: 200px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
// Hover effects
.table-hover tbody tr:hover {
background-color: rgba(0, 123, 255, 0.05);
.search-box {
min-width: 150px;
}
}
// Date filter styles
.form-control-sm {
min-width: 120px;
}
// Dark mode support (if needed)
[data-bs-theme="dark"] {
.table-light {
background-color: #2d333b !important;
color: #adb5bd;
}
// Active state for filter buttons
.btn-outline-primary.active {
background-color: #0d6efd;
color: white;
border-color: #0d6efd;
.search-box .search-icon {
color: #adb5bd;
}
}

@ -1,4 +1,4 @@
import { Component, OnInit } from '@angular/core';
import { Component, OnInit, OnDestroy } from '@angular/core';
import { CommonModule } from '@angular/common';
import { TranslateModule } from '@ngx-translate/core';
import { ExcelExportService } from '../shared/services/excel-export.service';
@ -12,6 +12,8 @@ import { URIKey } from '../utils/uri-enums';
import { HttpParams } from '@angular/common/http';
import { HttpURIService } from '../app.http.uri.service';
import { formatDate } from '@angular/common';
import { Subject } from 'rxjs';
import { takeUntil, debounceTime } from 'rxjs/operators';
@Component({
selector: 'app-transaction-logs',
@ -19,7 +21,7 @@ import { formatDate } from '@angular/common';
styleUrls: ['./transaction-logs.component.scss'],
imports: [CommonModule, TranslateModule, NgSelectModule, FormsModule, ReactiveFormsModule, TableFilterPipe]
})
export class TransactionLogsComponent implements OnInit {
export class TransactionLogsComponent implements OnInit, OnDestroy {
currentPage: number = 1;
totalCount: number = 0;
renewalDataExpanded: boolean = true;
@ -39,6 +41,10 @@ export class TransactionLogsComponent implements OnInit {
maxDate: string = '';
showDateFilters: boolean = false;
// Search subject for debouncing
private searchSubject = new Subject<string>();
private destroy$ = new Subject<void>();
constructor(
private excelExportService: ExcelExportService,
private httpService: HttpURIService,
@ -48,21 +54,47 @@ export class TransactionLogsComponent implements OnInit {
// Set max date to today
this.maxDate = formatDate(new Date(), 'yyyy-MM-dd', 'en-US');
// Optionally set default date range (last 30 days)
// Set default date range (last 7 days)
const today = new Date();
const lastMonth = new Date();
lastMonth.setDate(today.getDate() - 30);
const lastWeek = new Date();
lastWeek.setDate(today.getDate() - 7);
this.fromDate = formatDate(lastMonth, 'yyyy-MM-dd', 'en-US');
this.fromDate = formatDate(lastWeek, 'yyyy-MM-dd', 'en-US');
this.toDate = formatDate(today, 'yyyy-MM-dd', 'en-US');
// Set up search debouncing
this.setupSearchDebounce();
this.loadTransactionLogs();
}
ngOnDestroy(): void {
this.destroy$.next();
this.destroy$.complete();
this.searchSubject.complete();
}
private setupSearchDebounce(): void {
this.searchSubject.pipe(
takeUntil(this.destroy$),
debounceTime(300)
).subscribe((searchValue: string) => {
this.searchText = searchValue;
this.currentPage = 1;
this.loadTransactionLogs();
});
}
loadTransactionLogs(): void {
this.isLoading = true;
this.errorMessage = '';
// Validate date range before making API call
if (!this.validateDateRange()) {
this.isLoading = false;
return;
}
// Build query parameters
let params = new HttpParams();
@ -121,20 +153,31 @@ export class TransactionLogsComponent implements OnInit {
});
}
// Date filter change handler
onDateFilterChange(): void {
// Validate date range
private validateDateRange(): boolean {
if (this.fromDate && this.toDate) {
const from = new Date(this.fromDate);
const to = new Date(this.toDate);
if (from > to) {
this.errorMessage = 'From date cannot be after To date';
return;
return false;
}
// Optional: Validate date range is not too wide
const diffTime = Math.abs(to.getTime() - from.getTime());
const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));
if (diffDays > 365) {
this.errorMessage = 'Date range cannot exceed 1 year';
return false;
}
}
// Reset to first page and reload
return true;
}
// Date filter change handler
onDateFilterChange(): void {
this.currentPage = 1;
this.loadTransactionLogs();
}
@ -184,6 +227,17 @@ export class TransactionLogsComponent implements OnInit {
this.onDateFilterChange();
}
// Apply date range (Last 3 months)
applyLast3Months(): void {
const today = new Date();
const threeMonthsAgo = new Date();
threeMonthsAgo.setMonth(today.getMonth() - 3);
this.fromDate = formatDate(threeMonthsAgo, 'yyyy-MM-dd', 'en-US');
this.toDate = formatDate(today, 'yyyy-MM-dd', 'en-US');
this.onDateFilterChange();
}
toggleTableCard(): void {
this.transactionDataExpanded = !this.transactionDataExpanded;
}
@ -194,14 +248,7 @@ export class TransactionLogsComponent implements OnInit {
}
onSearch(value: string): void {
this.searchText = value;
this.currentPage = 1;
// Debounce search to avoid too many API calls
clearTimeout((this as any).searchTimeout);
(this as any).searchTimeout = setTimeout(() => {
this.loadTransactionLogs();
}, 300);
this.searchSubject.next(value);
}
totalPages(): number {
@ -220,8 +267,6 @@ export class TransactionLogsComponent implements OnInit {
const startIndex = (this.currentPage - 1) * this.itemsPerPage;
const endIndex = startIndex + this.itemsPerPage;
// If using server-side pagination, use transactionLog directly
// If using client-side filtering with tableFilter pipe, this might not be needed
this.pagedItems = this.allItems.slice(startIndex, endIndex);
}
@ -233,13 +278,67 @@ export class TransactionLogsComponent implements OnInit {
}
exportDataInExcel(): void {
// Export filtered data
const dataToExport = this.allItems.length > 0 ? this.allItems : this.transactionLog;
this.excelExportService.exportExcel(dataToExport, TRANSACTION_LOGS_FILE_NAME);
// Build export parameters
let params = new HttpParams();
// Include date filters in export if they are set
if (this.fromDate) {
params = params.set('fromDate', this.fromDate);
}
if (this.toDate) {
params = params.set('toDate', this.toDate);
}
if (this.searchText && this.searchText.trim() !== '') {
params = params.set('search', this.searchText.trim());
}
// For large exports, you might want to fetch all data without pagination
params = params.set('limit', '10000'); // Adjust as needed
this.httpService
.requestGET<any>(URIKey.TRANSACTION_LOGS, params)
.subscribe({
next: (res) => {
const logs = Array.isArray(res) ? res : res?.data;
const dataToExport = logs ?? [];
if (dataToExport.length === 0) {
this.errorMessage = 'No data to export';
return;
}
// Generate filename with date range if applicable
let fileName = TRANSACTION_LOGS_FILE_NAME;
if (this.fromDate || this.toDate) {
const from = this.fromDate ? formatDate(new Date(this.fromDate), 'dd-MMM-yyyy', 'en-US') : 'All';
const to = this.toDate ? formatDate(new Date(this.toDate), 'dd-MMM-yyyy', 'en-US') : 'All';
fileName = `TransactionLogs_${from}_to_${to}`;
}
this.excelExportService.exportExcel(dataToExport, fileName);
},
error: (err) => {
console.error('Error exporting data:', err);
this.errorMessage = 'Failed to export data. Please try again.';
}
});
}
// Get filtered items for display (used in template)
get filteredItems(): TransactionLog[] {
return this.allItems;
}
// Format date for display
formatDateDisplay(dateString: string): string {
if (!dateString) return '';
return formatDate(new Date(dateString), 'MMM dd, yyyy', 'en-US');
}
// Check if date filter is active
get isDateFilterActive(): boolean {
return !!this.fromDate || !!this.toDate;
}
}

@ -295,5 +295,23 @@
"showTable": "عرض الجدول",
"collapse": "يطوي",
"expand": "توسيع",
"entries": "إدخالات"
"entries": "إدخالات",
"dateFilter": "تصفية التاريخ",
"fromDate": "من تاريخ",
"toDate": "إلى تاريخ",
"clearFilter": "مسح التصفية",
"activeFilter": "التصفية نشطة",
"from": "من",
"to": "إلى",
"last7Days": "آخر 7 أيام",
"last30Days": "آخر 30 يومًا",
"thisMonth": "هذا الشهر",
"last3Months": "آخر 3 أشهر",
"hideDateFilters": "إخفاء تصفية التاريخ",
"showDateFilters": "عرض تصفية التاريخ",
"filteringByDate": "جاري التصفية حسب نطاق التاريخ...",
"tryAdjustingFilters": "حاول تعديل تصفية التاريخ أو مصطلحات البحث",
"noDataInRange": "لم يتم العثور على معاملات في نطاق التاريخ المحدد",
"dateRangeError": "الرجاء تحديد نطاق تاريخ صالح",
"exportAllData": "تصدير جميع البيانات"
}

@ -1,301 +1,316 @@
{
"logintoAccount":"Login to your account",
"userName":"Username",
"userNamePlaceHolder":"Enter Username",
"password":"Password",
"passwordPlaceHolder":"Enter Password",
"defaultPassword":"Default Password",
"rememberMe":"Remember me",
"forgotPassword":"Forgot password?",
"login":"Login",
"dashboardTitle":"Dashboard",
"monthlyReqTitle":"Monthly Requests",
"monthlySmsTitle":"Monthly SMS",
"dashboard":"Dashboard",
"UserManagement":"User Management",
"thirdPartyRegistration":"Third Party Registration",
"setupUser":"Setup User",
"resetPassword":"Reset User Password",
"changePassword":"Change Password",
"Logging":"Logging",
"loggerManager":"Logger Manager",
"loggerManagerDetails":"Logger Manager Details",
"SMSBanking":"SMS Banking",
"smsLogger":"SMS Logger",
"smsLoggerDetails": "SMS Logger Details",
"smsGateway":"SMS Gateway",
"ibUnblockUser": "UnBlock IB User",
"ibSupport": "IB Support",
"Permissions":"Permissions",
"permissions":"Permission Manager",
"TodayTotalRequests":"Today Total Requests",
"TodayTotalSms":"Today Total Sms",
"DescriptionUserPermission":"Description",
"PermissionsUserPermission":"Permissions",
"SaveUserPermission":"Save",
"UpdateUserPermission":"Update",
"DeleteUserPermission":"Delete",
"ViewUserPermission":"View",
"SelectUser":"Select User",
"SelectAUser":"Select a User",
"loggingTitle":"Logging",
"IBChildTitle":"UnBlock User",
"unblockUserDetails": "Unblock User Details",
"IBTitle":"Internet Banking Support",
"loggingChildTitle":"Logger Manager",
"fromDate":"From Date",
"custId":"Customer Identity Value",
"toDate":"To Date",
"findLogs":"Find Logs",
"unBlockCustomer":"UnBlock Customer",
"fetchCustomer":"Find Customer",
"loggingID":"Id",
"firstName":"First Name",
"lastName": "Last Name",
"cmpCuststatus":"Customer Status",
"cmpCustlastlogin": "Last Login",
"accountNonLocked":"Account Locked",
"lockTime":"Lock Time",
"accountno":"Account No",
"phoneno":"Phone No",
"loggingRequestUri":"Request Uri",
"loggingResponseCode":"Response code",
"loggingRemoteIP":"Remote IP",
"loggingTimeTaken":"Time Taken",
"loggingDate":"Date",
"loggingDateTime":"Date and Time",
"loggingMethod":"Method",
"DataAnalysis":"Data Analysis",
"Analysis":"Analysis",
"smsBankingTitle":"SMS Banking",
"smsBankingChildTitle":"SMS Logger",
"smsTrackingID":"Tracking ID",
"smsMessage":"Message",
"message": "Message",
"template": "Template",
"smsNo":"Phone Number",
"smsOrgaCode":"Organization Code",
"smsDate":"Date",
"smsStatus":"Status",
"language":"Language",
"viewThirdPartyAccounts":"View Accounts",
"ThirdPartyID":"Third Party ID",
"name":"Name",
"EnterThirdPartyName":"Enter Third Party Name",
"email":"Email",
"Address":"Address",
"phoneNumber":"Phone Number",
"PhoneNumberPlaceHolder":"Enter Phone Number",
"regPhoneNo": "Phone number must be 10 digits",
"NewNoOfAccounts":"New No of Accounts",
"EnterNewNumberOfAccounts":"Enter New Number of Accounts",
"TotalNoOfAccounts":"Total No of Accounts",
"gridSearch":"Search:",
"gridShow":"Show",
"gridEntries":"entries",
"gridFilter":"Filter",
"gridNum10":"10",
"gridNum25":"25",
"gridNum50":"50",
"gridNum100":"100",
"userID":"User ID",
"userId":"User ID",
"userContactNumber":"Enter User Contact Number",
"SelectHomeBranch":"Select Home Branch",
"SelectRole":"Select Role",
"HomeBranch":"Home Branch",
"Role":"Role",
"ResetPassword":"Reset Password",
"enterNewPassword":"Enter New Password",
"oldPassword":"Old Password",
"newPasswordStatic":"New Password",
"savePassword":"Save",
"passwordPattern":"Password must be 820 characters and include uppercase, lowercase, number, and special character",
"SMSGatewaySelect":"Select Gateway",
"selectIdentValueType": "Select Type",
"IdTypeSelect":"Select Select Type",
"SMSGatewaySyriatel":"Syriatel",
"SMSGatewayTwillio":"Twilio",
"SMSGatewayJazz":"Jazz",
"syriatelCredentials":"Syriatel Credentials",
"twilioCredentials":"Twilio Credentials",
"jazzCredentials":"Jazz Credentials",
"accountSID":"Account SID",
"authToken":"Auth Token",
"fromNumber":"From Number",
"notificationType":"Notification Type",
"sinceLastDay":"Since last day",
"TodayTotalErrorRequest":"Today Total Error Request",
"TodayTotalPendingSms":"Today Total Pending Sms",
"selectTheDates":"Please Select the Dates",
"selectIdentValue":"Please Select the Identity No",
"selectIdentityValue":"Identity No is Required",
"noLogsFound":"No Logs Found Between these Dates",
"loginSuccess":"Successfully Logged In",
"passwordNotMatched":"Password Does Not Match",
"passwordPatternNotMatched":"Password Pattern Not Matched",
"successDeleted":"Successfully Deleted",
"passwordNotSame":"Password Cannot be same as Old Password",
"passwordTooShort": "Password is too short.",
"passwordsDoNotMatch": "Passwords do not match.",
"SuccessSave":"Successfully Saved",
"SuccessFind":"Successfully Find",
"customerAlreadyUnblocked": "Customer Already UnBlocked",
"SuccessUpdate":"Successfully Updated",
"UpdateFailed":"Unable to update",
"formInvalid":"Form is Invalid",
"ServerError":"Server Error",
"fieldsMissing":"Required Fields are missing or invalid",
"selectAll":"Select All ",
"logoutSuccess":"Successfully Logout",
"smsGateWayChanged":"SMS Gateway Successfully Changed",
"cnic_scnic": "CNIC/SCNIC",
"poc": "POC",
"nicop": "S/NICOP",
"passport": "PASSPORT",
"senderNamePlaceHolder":"Enter Sender Name",
"enterIdentityValue":"Enter Identity Value",
"senderName":"Sender Name",
"passwordChangeRequired": "Password Change Required",
"Next": "Next",
"ERR_APP_B_0001":"Internal Server Error",
"ERR_APP_B_0002":"Possible connection error with {{value1}} module",
"ERR_APP_B_0003":"Bad Request on {{value1}} module",
"ERR_APP_B_0004":"Session timed out",
"ERR_APP_B_0005":"Unauthorized: {{value1}}.",
"ERR_MDL_B_0001": "Purpose Code already exists",
"feedbackSetup": "Feedback Setup",
"credentials": "Credentials",
"credentialsTitle": "Feedback Credentials Setup",
"passwordPlaceholder": "Enter Password",
"confirmPasswordPlaceholder": "Enter confirm password",
"newPasswordPlaceholder": "Enter new password",
"confirmPassword": "Confirm Password",
"fieldRequired": "Field Required",
"emailLabel": "Email",
"emailRequiredError": "Email is required.",
"invalidEmailFormatError": "Invalid email format.",
"invalidEmail": "Enter a valid email with @",
"passNotMatch": "Password does not match",
"POR_ORGACODE": "Organization ID",
"purposeSetup": "Configure Transaction Purpose",
"purpcodeLabel": "Purpose Code",
"purpdescLabel": "Purpose Description",
"purpcodePlaceholder": "Enter Purpose Code",
"purpdescPlaceholder": "Enter Purpose Description",
"transactionDetails": "Transaction Details",
"invalidField": "Invalid Input",
"lengthExceed": "Length exceeded",
"transactionLogs": "Transaction Logs",
"loadingTransactionLogs": "Loading transaction logs...",
"noTransactionLogsFound": "No transaction logs found.",
"logID": "Log ID",
"organization": "Organization",
"transactionID": "Transaction ID",
"drAccount": "DR Account",
"crAccount": "CR Account",
"crPcaglacode": "CR GL Account",
"drPcaGlacode": "DR GL Account",
"paymentMode": "Payment Mode",
"channel": "Channel",
"createdAt": "Created At",
"refresh": "Refresh",
"loading": "Loading",
"action": "Action",
"recordNotFound": "Record not found",
"confirmDelete":"Are you sure you want to delete?",
"confirmSave":"Are you sure you want to save?",
"2-stepAppPassword": "Enter 2-step verification Generated - App Password",
"english": "English",
"arabic": "Arabic",
"userNameRequired" : "User name is required",
"userNamePattterenError": "Only lower case alphabets and numbers are allowed",
"PasswordRequired": "Password is required",
"copyRightsReserved": "Copyright © {{currentYearLong}} MFSYS Technologies. All rights reserved.",
"versionAndBuildNumber": "Version {{versionNumber}} Build {{buildNumber}}",
"versionBuildDate": "+ Build Date {{date}}",
"date" : "Date",
"logout": "Log Out",
"save": "Save",
"update": "Update",
"cancel": "Cancel",
"thirdPartyRegistrationDetails": "Third Party Registration Details",
"SetupUserDetails":"Setup User Details",
"search": "Search",
"thirdPartyNamePlaceholder": "Enter Third Party Name",
"phoneNumberPlaceholder": "Enter Phone Number",
"newNoOfAccountsPlaceholder": "Enter New Number of Accounts",
"page": "Page",
"of": "of",
"totalItems": "Records",
"record": "Record",
"previous": "Previous",
"next": "Next",
"LOGIN_SUCCESSFULLY":"Login SucessFully",
"RESET_PASSWORD_SUCCESS":"Password Reset Successfully",
"CHANGE_PASSWORD_SUCCESS":"Password Changed Successfully",
"ALREADY_LOGGED_IN": "User Already Logged In",
"ACCESS_DENIED" : "Access Denied",
"INTERNAL_SERVER_ERROR": "Internal Server Error",
"CONNECTION_ERROR": "Connection Error",
"BAD_REQUEST": "Bad Request",
"FORBIDDEN_REQUEST": "Forbidden Request",
"UNAUTHORIZED_REQUEST": "Unauthorized Request",
"edit": "Edit",
"delete": "Delete",
"deleteUser": "Delete User",
"permissionManagement": "Permission Managment",
"userCode": "User",
"choose" : "Choose",
"allow": "Allow",
"toDateInvalidError": "To Date must be greater than or equal to From Date",
"noLoggingDetailsFound": "No Activity Log Details found",
"noUserDetailsFound":"No User Details found",
"noThirdPartyRegFound":"No Third Party Registration Details Found",
"ERR_SEC_0001": "Email already exists",
"ERR_SEC_0007": "New password cannot be same as old password",
"ERR_SEC_0002": "User ID already exists",
"ERR_SEC_0003": "Old Password is not correct",
"ERR_SEC_0004":"Invalid credentials",
"ERR_SEC_0005": "User not found",
"ERR_SEC_0006": "Incorrect password",
"toDateGreaterThanToday": "To Date must be less than Current Date",
"fromDateGreaterThanToday": "From Date must be less than Current Date",
"userIdMinLength" : "User ID must be at least 5 characters",
"nameMinLength" : "Name must be at least 5 characters",
"emptySpaceRestriction" : "Empty spaces & capital letters are not allowed",
"USER_CREATED_SUCCESS": "User Created",
"USER_UPDATE_SUCCESS": "User Updated",
"USER_DELETE_SUCCESS": "User Deleted",
"SAVED_SUCCESSFULLY" :"Saved Successfully",
"oldAndNewPass":"Old password and new password cannot be the same",
"activityLogs": "Activity Logs",
"activityLogDetails": "Activity Log Details",
"transactionCode": "Transaction Code",
"transactionUri": "Transaction URI",
"resetPasswordButton": "Reset Password",
"dateTime": "Date Time",
"responseCode": "Response Code",
"remoteIp": "Remote IP",
"requestBody": "Request Body",
"requestUri": "Request URI",
"method": "Method",
"id": "Id",
"logId": "Log ID",
"porOrgacode": "Organization Code",
"drMbmbkmsnumber": "Debit Account Number",
"crMbmbkmsnumber": "Credit Account Number",
"ppmPymdcode": "Payment Code",
"sgtGntrdate": "Transaction Date",
"sgtGntrcreateat": "Creation Date",
"updatedAt": "Updated At",
"channelCode": "Channel Code",
"userFullname" : "Full Name",
"show": "Show",
"entries": "entries",
"tableCollapsed": "Table collapsed",
"showTable": "Show Table",
"collapse": "Collapse",
"expand": "Expand"
"logintoAccount": "Login to your account",
"userName": "Username",
"userNamePlaceHolder": "Enter Username",
"password": "Password",
"passwordPlaceHolder": "Enter Password",
"defaultPassword": "Default Password",
"rememberMe": "Remember me",
"forgotPassword": "Forgot password?",
"login": "Login",
"dashboardTitle": "Dashboard",
"monthlyReqTitle": "Monthly Requests",
"monthlySmsTitle": "Monthly SMS",
"dashboard": "Dashboard",
"UserManagement": "User Management",
"thirdPartyRegistration": "Third Party Registration",
"setupUser": "Setup User",
"resetPassword": "Reset User Password",
"changePassword": "Change Password",
"Logging": "Logging",
"loggerManager": "Logger Manager",
"loggerManagerDetails": "Logger Manager Details",
"SMSBanking": "SMS Banking",
"smsLogger": "SMS Logger",
"smsLoggerDetails": "SMS Logger Details",
"smsGateway": "SMS Gateway",
"ibUnblockUser": "UnBlock IB User",
"ibSupport": "IB Support",
"Permissions": "Permissions",
"permissions": "Permission Manager",
"TodayTotalRequests": "Today Total Requests",
"TodayTotalSms": "Today Total Sms",
"DescriptionUserPermission": "Description",
"PermissionsUserPermission": "Permissions",
"SaveUserPermission": "Save",
"UpdateUserPermission": "Update",
"DeleteUserPermission": "Delete",
"ViewUserPermission": "View",
"SelectUser": "Select User",
"SelectAUser": "Select a User",
"loggingTitle": "Logging",
"IBChildTitle": "UnBlock User",
"unblockUserDetails": "Unblock User Details",
"IBTitle": "Internet Banking Support",
"loggingChildTitle": "Logger Manager",
"fromDate": "From Date",
"custId": "Customer Identity Value",
"toDate": "To Date",
"findLogs": "Find Logs",
"unBlockCustomer": "UnBlock Customer",
"fetchCustomer": "Find Customer",
"loggingID": "Id",
"firstName": "First Name",
"lastName": "Last Name",
"cmpCuststatus": "Customer Status",
"cmpCustlastlogin": "Last Login",
"accountNonLocked": "Account Locked",
"lockTime": "Lock Time",
"accountno": "Account No",
"phoneno": "Phone No",
"loggingRequestUri": "Request Uri",
"loggingResponseCode": "Response code",
"loggingRemoteIP": "Remote IP",
"loggingTimeTaken": "Time Taken",
"loggingDate": "Date",
"loggingDateTime": "Date and Time",
"loggingMethod": "Method",
"DataAnalysis": "Data Analysis",
"Analysis": "Analysis",
"smsBankingTitle": "SMS Banking",
"smsBankingChildTitle": "SMS Logger",
"smsTrackingID": "Tracking ID",
"smsMessage": "Message",
"message": "Message",
"template": "Template",
"smsNo": "Phone Number",
"smsOrgaCode": "Organization Code",
"smsDate": "Date",
"smsStatus": "Status",
"language": "Language",
"viewThirdPartyAccounts": "View Accounts",
"ThirdPartyID": "Third Party ID",
"name": "Name",
"EnterThirdPartyName": "Enter Third Party Name",
"email": "Email",
"Address": "Address",
"phoneNumber": "Phone Number",
"PhoneNumberPlaceHolder": "Enter Phone Number",
"regPhoneNo": "Phone number must be 10 digits",
"NewNoOfAccounts": "New No of Accounts",
"EnterNewNumberOfAccounts": "Enter New Number of Accounts",
"TotalNoOfAccounts": "Total No of Accounts",
"gridSearch": "Search:",
"gridShow": "Show",
"gridEntries": "entries",
"gridFilter": "Filter",
"gridNum10": "10",
"gridNum25": "25",
"gridNum50": "50",
"gridNum100": "100",
"userID": "User ID",
"userId": "User ID",
"userContactNumber": "Enter User Contact Number",
"SelectHomeBranch": "Select Home Branch",
"SelectRole": "Select Role",
"HomeBranch": "Home Branch",
"Role": "Role",
"ResetPassword": "Reset Password",
"enterNewPassword": "Enter New Password",
"oldPassword": "Old Password",
"newPasswordStatic": "New Password",
"savePassword": "Save",
"passwordPattern": "Password must be 820 characters and include uppercase, lowercase, number, and special character",
"SMSGatewaySelect": "Select Gateway",
"selectIdentValueType": "Select Type",
"IdTypeSelect": "Select Select Type",
"SMSGatewaySyriatel": "Syriatel",
"SMSGatewayTwillio": "Twilio",
"SMSGatewayJazz": "Jazz",
"syriatelCredentials": "Syriatel Credentials",
"twilioCredentials": "Twilio Credentials",
"jazzCredentials": "Jazz Credentials",
"accountSID": "Account SID",
"authToken": "Auth Token",
"fromNumber": "From Number",
"notificationType": "Notification Type",
"sinceLastDay": "Since last day",
"TodayTotalErrorRequest": "Today Total Error Request",
"TodayTotalPendingSms": "Today Total Pending Sms",
"selectTheDates": "Please Select the Dates",
"selectIdentValue": "Please Select the Identity No",
"selectIdentityValue": "Identity No is Required",
"noLogsFound": "No Logs Found Between these Dates",
"loginSuccess": "Successfully Logged In",
"passwordNotMatched": "Password Does Not Match",
"passwordPatternNotMatched": "Password Pattern Not Matched",
"successDeleted": "Successfully Deleted",
"passwordNotSame": "Password Cannot be same as Old Password",
"passwordTooShort": "Password is too short.",
"passwordsDoNotMatch": "Passwords do not match.",
"SuccessSave": "Successfully Saved",
"SuccessFind": "Successfully Find",
"customerAlreadyUnblocked": "Customer Already UnBlocked",
"SuccessUpdate": "Successfully Updated",
"UpdateFailed": "Unable to update",
"formInvalid": "Form is Invalid",
"ServerError": "Server Error",
"fieldsMissing": "Required Fields are missing or invalid",
"selectAll": "Select All ",
"logoutSuccess": "Successfully Logout",
"smsGateWayChanged": "SMS Gateway Successfully Changed",
"cnic_scnic": "CNIC/SCNIC",
"poc": "POC",
"nicop": "S/NICOP",
"passport": "PASSPORT",
"senderNamePlaceHolder": "Enter Sender Name",
"enterIdentityValue": "Enter Identity Value",
"senderName": "Sender Name",
"passwordChangeRequired": "Password Change Required",
"Next": "Next",
"ERR_APP_B_0001": "Internal Server Error",
"ERR_APP_B_0002": "Possible connection error with {{value1}} module",
"ERR_APP_B_0003": "Bad Request on {{value1}} module",
"ERR_APP_B_0004": "Session timed out",
"ERR_APP_B_0005": "Unauthorized: {{value1}}.",
"ERR_MDL_B_0001": "Purpose Code already exists",
"feedbackSetup": "Feedback Setup",
"credentials": "Credentials",
"credentialsTitle": "Feedback Credentials Setup",
"passwordPlaceholder": "Enter Password",
"confirmPasswordPlaceholder": "Enter confirm password",
"newPasswordPlaceholder": "Enter new password",
"confirmPassword": "Confirm Password",
"fieldRequired": "Field Required",
"emailLabel": "Email",
"emailRequiredError": "Email is required.",
"invalidEmailFormatError": "Invalid email format.",
"invalidEmail": "Enter a valid email with @",
"passNotMatch": "Password does not match",
"POR_ORGACODE": "Organization ID",
"purposeSetup": "Configure Transaction Purpose",
"purpcodeLabel": "Purpose Code",
"purpdescLabel": "Purpose Description",
"purpcodePlaceholder": "Enter Purpose Code",
"purpdescPlaceholder": "Enter Purpose Description",
"transactionDetails": "Transaction Details",
"invalidField": "Invalid Input",
"lengthExceed": "Length exceeded",
"transactionLogs": "Transaction Logs",
"loadingTransactionLogs": "Loading transaction logs...",
"noTransactionLogsFound": "No transaction logs found.",
"logID": "Log ID",
"organization": "Organization",
"transactionID": "Transaction ID",
"drAccount": "DR Account",
"crAccount": "CR Account",
"crPcaglacode": "CR GL Account",
"drPcaGlacode": "DR GL Account",
"paymentMode": "Payment Mode",
"channel": "Channel",
"createdAt": "Created At",
"refresh": "Refresh",
"loading": "Loading",
"action": "Action",
"recordNotFound": "Record not found",
"confirmDelete": "Are you sure you want to delete?",
"confirmSave": "Are you sure you want to save?",
"2-stepAppPassword": "Enter 2-step verification Generated - App Password",
"english": "English",
"arabic": "Arabic",
"userNameRequired": "User name is required",
"userNamePattterenError": "Only lower case alphabets and numbers are allowed",
"PasswordRequired": "Password is required",
"copyRightsReserved": "Copyright © {{currentYearLong}} MFSYS Technologies. All rights reserved.",
"versionAndBuildNumber": "Version {{versionNumber}} Build {{buildNumber}}",
"versionBuildDate": "+ Build Date {{date}}",
"date": "Date",
"logout": "Log Out",
"save": "Save",
"update": "Update",
"cancel": "Cancel",
"thirdPartyRegistrationDetails": "Third Party Registration Details",
"SetupUserDetails": "Setup User Details",
"search": "Search",
"thirdPartyNamePlaceholder": "Enter Third Party Name",
"phoneNumberPlaceholder": "Enter Phone Number",
"newNoOfAccountsPlaceholder": "Enter New Number of Accounts",
"page": "Page",
"of": "of",
"totalItems": "Records",
"record": "Record",
"previous": "Previous",
"next": "Next",
"LOGIN_SUCCESSFULLY": "Login SucessFully",
"RESET_PASSWORD_SUCCESS": "Password Reset Successfully",
"CHANGE_PASSWORD_SUCCESS": "Password Changed Successfully",
"ALREADY_LOGGED_IN": "User Already Logged In",
"ACCESS_DENIED": "Access Denied",
"INTERNAL_SERVER_ERROR": "Internal Server Error",
"CONNECTION_ERROR": "Connection Error",
"BAD_REQUEST": "Bad Request",
"FORBIDDEN_REQUEST": "Forbidden Request",
"UNAUTHORIZED_REQUEST": "Unauthorized Request",
"edit": "Edit",
"delete": "Delete",
"deleteUser": "Delete User",
"permissionManagement": "Permission Managment",
"userCode": "User",
"choose": "Choose",
"allow": "Allow",
"toDateInvalidError": "To Date must be greater than or equal to From Date",
"noLoggingDetailsFound": "No Activity Log Details found",
"noUserDetailsFound": "No User Details found",
"noThirdPartyRegFound": "No Third Party Registration Details Found",
"ERR_SEC_0001": "Email already exists",
"ERR_SEC_0007": "New password cannot be same as old password",
"ERR_SEC_0002": "User ID already exists",
"ERR_SEC_0003": "Old Password is not correct",
"ERR_SEC_0004": "Invalid credentials",
"ERR_SEC_0005": "User not found",
"ERR_SEC_0006": "Incorrect password",
"toDateGreaterThanToday": "To Date must be less than Current Date",
"fromDateGreaterThanToday": "From Date must be less than Current Date",
"userIdMinLength": "User ID must be at least 5 characters",
"nameMinLength": "Name must be at least 5 characters",
"emptySpaceRestriction": "Empty spaces & capital letters are not allowed",
"USER_CREATED_SUCCESS": "User Created",
"USER_UPDATE_SUCCESS": "User Updated",
"USER_DELETE_SUCCESS": "User Deleted",
"SAVED_SUCCESSFULLY": "Saved Successfully",
"oldAndNewPass": "Old password and new password cannot be the same",
"activityLogs": "Activity Logs",
"activityLogDetails": "Activity Log Details",
"transactionCode": "Transaction Code",
"transactionUri": "Transaction URI",
"resetPasswordButton": "Reset Password",
"dateTime": "Date Time",
"responseCode": "Response Code",
"remoteIp": "Remote IP",
"requestBody": "Request Body",
"requestUri": "Request URI",
"method": "Method",
"id": "Id",
"logId": "Log ID",
"porOrgacode": "Organization Code",
"drMbmbkmsnumber": "Debit Account Number",
"crMbmbkmsnumber": "Credit Account Number",
"ppmPymdcode": "Payment Code",
"sgtGntrdate": "Transaction Date",
"sgtGntrcreateat": "Creation Date",
"updatedAt": "Updated At",
"channelCode": "Channel Code",
"userFullname": "Full Name",
"show": "Show",
"entries": "entries",
"tableCollapsed": "Table collapsed",
"showTable": "Show Table",
"collapse": "Collapse",
"expand": "Expand",
"dateFilter": "Date Filter",
"clearFilter": "Clear Filter",
"activeFilter": "Active Filter",
"from": "From",
"to": "to",
"last7Days": "Last 7 Days",
"last30Days": "Last 30 Days",
"thisMonth": "This Month",
"last3Months": "Last 3 Months",
"hideDateFilters": "Hide Date Filters",
"showDateFilters": "Show Date Filters",
"filteringByDate": "Filtering by date range...",
"tryAdjustingFilters": "Try adjusting your date filters or search terms",
"noDataInRange": "No transactions found in the selected date range",
"dateRangeError": "Please select a valid date range",
"exportAllData": "Export All Data"
}
Loading…
Cancel
Save