114 lines
3.1 KiB
TypeScript
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();
|
|
}
|
|
});
|
|
}
|
|
}
|