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(); } }); } }