Files
we_bstly-web/src/app/pages/admin/voucher-mappings/voucher-mappings.component.ts
T
2025-11-09 02:54:26 +01:00

114 lines
3.1 KiB
TypeScript

import { Component, OnInit, ViewChild } from '@angular/core';
import { MatPaginator, PageEvent } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
import { MatTableDataSource } from '@angular/material/table';
import { MatDialog } from '@angular/material/dialog';
import { I18nService } from 'src/app/services/i18n.service';
import { VoucherMappingManagementService } from 'src/app/services/admin/vouchermapping.management.service';
import { ConfirmDialog } from 'src/app/ui/confirm/confirm.component';
import { AdminVoucherMappingEditDialog } from './voucher-mapping.edit';
@Component({
standalone: false,
selector: 'app-admin-voucher-mappings',
templateUrl: './voucher-mappings.component.html',
styleUrls: ['../admin.scss']
})
export class AdminVoucherMappingsComponent implements OnInit {
displayedColumns: string[] = ['id', 'name', 'voucher', 'quota', 'free', 'actions'];
voucherMappings: any;
page: any = { page: 0, size: 10, sort: "id", desc: false };
pageSizeOptions: number[] = [5, 10, 25, 50];
@ViewChild(MatPaginator) paginator!: MatPaginator;
@ViewChild(MatSort) sort!: MatSort;
constructor(
private voucherMappingManagementService: VoucherMappingManagementService,
private i18n: I18nService,
private dialog: MatDialog
) {
}
ngOnInit(): void {
this.loadMappings();
}
loadMappings(): void {
this.voucherMappingManagementService.getVoucherMappings(this.page.page, this.page.size).subscribe(
(data: any) => {
this.voucherMappings = data;
},
error => {
console.error('Error loading voucher mappings:', error);
}
);
}
updatePages(event: PageEvent): void {
this.page.page = event.pageIndex;
this.page.size = event.pageSize;
this.loadMappings();
}
updateSort(sort: any): void {
if (sort.direction == "") {
this.page.sort = "id";
this.page.desc = false;
} else {
this.page.sort = sort.active;
this.page.desc = sort.direction == "desc";
}
this.loadMappings();
}
deleteMapping(mapping: any): void {
const dialogRef = this.dialog.open(ConfirmDialog, {
data: {
'label': 'admin.voucher_mappings.confirm_delete',
'args': [mapping.name]
}
});
dialogRef.afterClosed().subscribe(result => {
if (result) {
this.voucherMappingManagementService.delete(mapping).subscribe(
() => {
this.loadMappings();
},
error => {
console.error('Error deleting mapping:', error);
}
);
}
});
}
createMapping(): void {
const dialogRef = this.dialog.open(AdminVoucherMappingEditDialog, {
width: '600px',
data: {}
});
dialogRef.afterClosed().subscribe(result => {
if (result) {
this.loadMappings();
}
});
}
editMapping(mapping: any): void {
const dialogRef = this.dialog.open(AdminVoucherMappingEditDialog, {
width: '600px',
data: { voucherMapping: mapping }
});
dialogRef.afterClosed().subscribe(result => {
if (result) {
this.loadMappings();
}
});
}
}