// Angular Core
import { Component, Input, OnInit, ViewChild } from '@angular/core';

// Interfaces
import { activeADRInterface } from 'src/app/interfaces/common-interfaces';
import { SuppliersMainSettingsInterface } from 'src/app/interfaces/supplier/suppliers-main-settings-interface';

// Components
import { ActiveAdrComponent } from '../active-adr/active-adr.component';
import { MainSettingsService } from 'src/app/services/mainSettings/main-settings.service';

@Component({
  standalone: false,
    selector: 'app-adr-settings',
    templateUrl: './adr-settings.component.html',
    styleUrls: ['./adr-settings.component.scss']
})
export class AdrSettingsComponent implements OnInit {

    @ViewChild('active_adr') active_adr!: ActiveAdrComponent;

    @Input() supplierData!: SuppliersMainSettingsInterface['data']['supplierData'];
    @Input() visibleAdr!: boolean;
    @Input() isSuccess!: boolean;
    @Input() isFail!: boolean;
    @Input() activeAdr!: activeADRInterface['data'];

    labeler_code!: any;
    results: Array<string> = [];

    constructor(private mainSettingsService: MainSettingsService) { }

    ngOnInit(): void {
    }

    /**
     * To use the parent component method here,
     * Using closeMsg method from the main settings component
     */
    callcloseMsgFunc() {
        this.active_adr.closeMsg();
    }

    /**
     * To use the parent component method here,
     * Using validateADRCode method from the main settings component
    */
    callvalidateADRCodeFunc() {
        this.active_adr.validateADRCode();
        if (this.activeAdr) {
            this.visibleAdr = true;
        }
    }

    /**
     * Get the emited data of isFail from the child components
     * 
    */
    getisFailedValue(event: boolean) {
        this.isFail = event;
    }

    /**
     * Get the emited data of isSuccess from the child components
     * 
    */
    getisSuccessValue(event: boolean) {
        this.isSuccess = event;
    }

    searchManufacturers(event: any) {
        this.mainSettingsService.getManufacturers(event.query).subscribe({
            next: (res: any) => {
                this.results = res.data;
            },
            error: (err: any) => {
                this.mainSettingsService.errorCallBack(err);
            }
        });
    }
    onLabelerSelect(event: any) {
        if (event && event.value.labeler_code) {
            this.labeler_code = event.value.labeler_code;
        }
    }

    onLabelerInput(event: any) {
        // event.target.value for native input event, or event for string value
        this.labeler_code = event && event.target ? event.target.value : event;
    }
}
