import { Component, Input, OnDestroy, OnInit, SimpleChanges, inject } from '@angular/core'; import { Subscription } from 'rxjs'; import { DialogService } from '../../../../shared/services/dialog.service'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { IDetailsControl } from '../../../../shared/models/details-control'; @Component({ selector: 'lib-operators-details', templateUrl: './operators-details.component.html', styleUrl: './operators-details.component.scss', }) export class OperatorsDetailsComponent implements OnInit, OnDestroy { @Input() operatorsDetailsDialogID!: string; @Input() subIndex!: number; @Input() subList!: any; @Input() sub!: any; private dialogStateSubscription!: Subscription; private _dialogService = inject(DialogService); private _fb = inject(FormBuilder); public permisions: string[] = []; public dialogState!: IDetailsControl; public operatorUpdateForm!: FormGroup; ngOnInit(): void { this.setFormStructure(); this.dialogStateSubscription = this._dialogService .getDialogState(this.operatorsDetailsDialogID) .subscribe((state) => { this.dialogState = state; }); } ngOnDestroy(): void { this.dialogStateSubscription.unsubscribe(); } ngOnChanges(changes: SimpleChanges) { if (this.sub) { if (changes['sub']) { this.setFormStructure(); } } } setFormStructure(): void { this.operatorUpdateForm = this._fb.group({ userNick: [this.sub?.userName ?? null, [Validators.required]], userCreationDate: [ this.sub?.subscriptionStatus ?? null, [Validators.required], ], userFirstName: [this.sub?.userName ?? null, [Validators.required]], userLastName: [this.sub?.userName ?? null, [Validators.required]], userField: ['Polee', [Validators.required]], userPesel: ['123456789', [Validators.required]], userEmail: ['adresemail@adres.pl', [Validators.required]], userPassword: ['cokolwiek', [Validators.required]], }); } closeDialog(): void { this._dialogService.closeDialog(this.operatorsDetailsDialogID); } setEditMode(id: string, isEditing: boolean): void { this._dialogService.setEditingState(id, isEditing); } editOn() { this.setEditMode(this.operatorsDetailsDialogID, true); } getStatus(status: any): string { if (status) { return 'Aktywny'; } else { return 'Nieaktywny'; } } getStatusColor(status: any): string { if (status) { return '#16A34A'; } else { return '#D1D5DB'; } } moveUp() { this.subIndex = (this.subIndex + 1) % this.subList.length; this.sub = this.subList[this.subIndex]; this.setFormStructure(); this.setEditMode(this.operatorsDetailsDialogID, false); } moveDown() { this.subIndex = (this.subIndex - 1 + this.subList.length) % this.subList.length; this.sub = this.subList[this.subIndex]; this.setFormStructure(); this.setEditMode(this.operatorsDetailsDialogID, false); } }