import { IDetailsControl } from '../../../../shared/models/details-control'; import { DialogService } from '../../../../shared/services/dialog.service'; import { Component, OnInit, inject } from '@angular/core'; import { MOCK_DATA_SUB } from '../mocked-data'; import { IFooterButtonOptions } from 'fas-services'; @Component({ selector: 'lib-subscriptions-list', templateUrl: './subscriptions-list.component.html', styleUrl: './subscriptions-list.component.scss', }) export class SubscriptionsListComponent implements OnInit { private _dialogService = inject(DialogService); public subscriptionsDetailsDialogID = 'subscriptionsDetails'; public subscriptionsAddDialogID = 'subscriptionsAdd' public selectedUsers: any[] = []; public isLoading = false; public selectedUser: any; public usersList: any; public subList: any; public subIndex = 0; public sub!: any; public detailsControl: IDetailsControl = { isOpen: false, isEditing: false, }; public addSubscriptionsControl: any = { isEditing: false, isOpen: false, }; public activeFooterBtn: IFooterButtonOptions ={ buttonLabel:'Dezaktywuj zaznaczone', buttonIcon: 'pi pi-power-off', buttonFunction: this.test.bind(this) } public deactiveFooterBtn: IFooterButtonOptions ={ buttonLabel:'Dezaktywuj zaznaczone', buttonIcon: 'pi pi-play', buttonFunction: this.test.bind(this) } public allFooterBtn: IFooterButtonOptions ={ buttonLabel:'Usuń zaznaczone', buttonIcon: 'pi pi-trash', buttonFunction: this.test.bind(this) } ngOnInit(): void { this.subList = MOCK_DATA_SUB; this.usersList = MOCK_DATA_SUB; } activeSub = [ { field: 'subName', header: 'Nazwa abonamentu', sortable: true, columnClass: 'flex justify-content-between align-items-center', actions: [ { label: 'Szczegóły', callback: this.openDetails.bind(this), buttonClass: 'white-button appear', icoSuffix: 'pi pi-arrow-right', }, ], }, { field: 'subActivDate', header: 'Data aktywacji', sortable: true, }, { field: 'subUserNumb', header: 'Liczba użytkowników', sortable: true, }, { field: 'subsPrice', header: 'Koszt abonamentu (brutto)', sortable: true, }, { field: 'actions', header: 'Akcje', sortable: false, columnClass: 'flex justify-content-center align-items-center gap-2', actions: [ { label: '', tooltip: 'Edytuj', callback: this.customRowAction.bind(this), buttonClass: 'pi pi-pencil cursor-pointer text-center appear transparent-button', }, { label: '', tooltip: 'Wyłącz', callback: this.customRowAction.bind(this), buttonClass: 'pi pi-power-off cursor-pointer text-center appear transparent-button', }, ], }, ]; deactiveSub = [ { field: 'subName', header: 'Nazwa abonamentu', sortable: true, columnClass: 'flex justify-content-between align-items-center', actions: [ { label: 'Szczegóły', callback: this.openDetails.bind(this), buttonClass: 'white-button appear', icoSuffix: 'pi pi-arrow-right', }, ], }, { field: 'subActivDate', header: 'Data ostatniej aktywacji', sortable: true, }, { field: 'subsPrice', header: 'Koszt abonamentu (brutto)', sortable: true, columnClass: 'subscription-status-column', }, { field: 'actions', header: 'Akcje', sortable: false, columnClass: 'flex justify-content-center align-items-center gap-2', actions: [ { label: '', tooltip: 'Edytuj', callback: this.customRowAction.bind(this), buttonClass: 'pi pi-pencil cursor-pointer text-center appear transparent-button', }, { label: '', tooltip: 'Wyłącz', callback: this.customRowAction.bind(this), buttonClass: 'pi pi-power-off cursor-pointer text-center appear transparent-button', }, ], }, ]; allSub = [ { field: 'subName', header: 'Nazwa abonamentu', sortable: true, columnClass: 'flex justify-content-between align-items-center', actions: [ { label: 'Szczegóły', callback: this.openDetails.bind(this), buttonClass: 'white-button appear', icoSuffix: 'pi pi-arrow-right', }, ], }, { valueFunction: this.getStatus.bind(this), header: 'Status', sortable: true, contentClass: 'subscription-type', styleBackgroundFunction: this.getStatusColor.bind(this), }, { field: 'subActivDate', header: 'Data aktywacji', sortable: true, }, { field: 'subUserNumb', header: 'Liczba użytkowników', sortable: true, }, { field: 'subsPrice', header: 'Koszt abonamentu (brutto)', sortable: true, }, { field: 'actions', header: 'Akcje', sortable: false, columnClass: 'flex justify-content-center align-items-center gap-2', actions: [ { label: '', tooltip: 'Edytuj', callback: this.customRowAction.bind(this), buttonClass: 'pi pi-pencil cursor-pointer text-center appear transparent-button', }, { label: '', tooltip: 'Wyłącz', callback: this.customRowAction.bind(this), buttonClass: 'pi pi-power-off cursor-pointer text-center appear transparent-button', }, ], }, ]; userColumns = [ { field: 'subName', header: 'Data rejestracji', sortable: true, columnClass: 'flex justify-content-between align-items-center', }, { field: 'subActivDate', header: 'Adres email', sortable: true, }, { field: 'subUserNumb', header: 'Nazwa uzytkosnika', sortable: true, }, { field: 'subsPrice', header: 'Rodzaj konta', sortable: true, }, ]; customRowAction(rowData: any, rowIndex: number): void { console.log('Custom action on row:', rowData, rowIndex); } getStatus(rowData: any): string { if (rowData.subActivDate) { return 'Aktywny'; } else { return 'Nieaktywny'; } } getStatusColor(rowData: any): string { if (rowData.subActivDate) { return '#16A34A'; } else { return '#D1D5DB'; } } openDetails(sub: any, subIndex: number) { this.sub = { ...sub }; this.subIndex = subIndex; this.openDialog(this.subscriptionsDetailsDialogID) } openDialog(id: string): void { this._dialogService.openDialog(id); } test(){ } }