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

// Third Party
import { NgbActiveModal, NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';
import { Subscription } from 'rxjs';
import { ModalConfig } from 'src/app/interfaces/common-interfaces';
import { ModalInterface } from 'src/app/interfaces/modal-interface';
import { DataTransmitterService } from 'src/app/services/dataTransmitter/data-transmitter.service';
import { SessionService } from 'src/app/services/session/session.service';
import { environment } from 'src/environments/environment';

@Component({
  standalone: false,
  selector: 'app-account-suspended',
  templateUrl: './account-suspended.component.html',
  styleUrls: ['./account-suspended.component.scss']
})

export class AccountSuspendedComponent implements OnInit, ModalInterface, OnDestroy {

  /**
   * Private property to store base-modal config
   * @type Object
   */
  accountSuspendedConfig: ModalConfig = {
    showHeader: true,
    title: 'Your Account Has Been Suspended'
  };
  imgUrl: string = environment.imageUrl;
  modalComponent!: NgbModalRef;
  sitename!: string;
  sitenameListener!: Subscription;

  constructor(
    public activeModal: NgbActiveModal,
    public modalService: NgbModal,
    private dataTransmitter: DataTransmitterService,
    private sessionService: SessionService) { }

  /**
   * Open current modal.
   * @returns void
   */
  openModal(): void {
    this.modalComponent = this.modalService?.open(AccountSuspendedComponent, {size: 'sm'});
  }
  
  /**
   * Close current modal.
   * @returns void
   */
  closeModal(): void {
    this.modalService.dismissAll()
  }

  /**
   * Sets data required to display the modal if any.
   * @param data
   * @returns void
   */
  setData(data: any): void { }


  ngOnDestroy(): void {
    this.sitenameListener.unsubscribe();
  }

  ngOnInit(): void {
    this.sitenameListener = this.dataTransmitter.sitename.subscribe((sitename) => {
      this.sitename = sitename;
    });
  }

  logoutUser() {
    this.closeModal();
    this.sessionService.logOut();
  };

}
