// Angular Core
import { Component, OnInit, Input } from '@angular/core';
import { NgbActiveModal, NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap';

// Models
import { pharmacyMessageModel } from './pharmacyMesasageModel.model';
import { ModalInterface } from 'src/app/interfaces/modal-interface';
import { ModalConfig } from 'src/app/interfaces/common-interfaces';
import { ContentService } from 'src/app/services/content/content.service';

@Component({
  standalone: false,
  selector: 'app-pharmacy-pop-up-message',
  templateUrl: './pharmacy-pop-up-message.component.html',
  styleUrls: ['./pharmacy-pop-up-message.component.scss']
})
export class PharmacyPopUpMessageComponent implements OnInit, ModalInterface {

  /**
  * Header for pharmacy Message Modal
  */
 pharmacyPopUpMessageConfig: ModalConfig = {
     showHeader: true,
     title: 'Message From PRIMERX MARKET'
 };
  @Input() pharmacyMessage:pharmacyMessageModel = {html:''}
  @Input() pharmacyContentLoading:any
  @Input() pharmacyPopUpModalShowClose:any
  @Input() pharmacyPopUpMessageClose!: () => void;
  modalComponent!: NgbModalRef;

  constructor(public activeModal: NgbActiveModal, public modalService: NgbModal, public contentService: ContentService) {
    
  }

  /**
   * Open current pop up.
   */
  openModal(): void {
    this.getPharmacyMessageHtml();
    this.modalComponent = this.modalService.open(PharmacyPopUpMessageComponent, { size: 'sm' });
    localStorage.setItem('pharmacyMessageShown', 'shown');
  }

  /**
   * Close current pop up
   */
  closeModal(): void {
    this.modalService.dismissAll();
  }

  /**
   * Sets data required to display the modal if any.
   * @param data
   */
  setData(data: any): void {
    this.modalComponent.componentInstance.pharmacyContentLoading = this.pharmacyContentLoading;
    this.modalComponent.componentInstance.pharmacyPopUpModalShowClose = this.pharmacyPopUpModalShowClose;
    this.modalComponent.componentInstance.pharmacyMessage = this.pharmacyMessage;
  }

  ngOnInit(): void {
  }

  /**
   * Get Pharmacy message Html
   * @returns void
   */
  getPharmacyMessageHtml(): void {
    this.contentService.getContent('pharmacy_msg')
      .subscribe({
        next: (res: any) => {
            var pageHandle = res.data[0];
            let pageContent = pageHandle['Page Handle'].pharmacy_msg;
            Object.values(pageContent).forEach((content: any, key: any) => {
                this.pharmacyMessage.html += content.topic_content;
            });
            this.pharmacyMessage.html = this.pharmacyMessage.html;
            this.pharmacyPopUpModalShowClose = true;
            this.pharmacyContentLoading = false;
        },
        error: (err) => {
            this.contentService.errorCallBack(err);
        },
        complete: () => { },
    });
  }

}
