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

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

  @Input() shippingInfo!: any;
  @Input() shippingSettings!: any;
  @Input() shipType!: string;

  @Output() filterFloatValue = new EventEmitter();

  constructor() { }

  settingsTitle!: string;

  ngOnInit(): void {
    // setTimeout(() => {
    // }, 1500);
    const shipTypeArray = ["brand", "generic"];
    if(shipTypeArray.includes(this.shipType)){
      const shiptypeInfo = this.shipTypeObj();
      this.settingsTitle = shiptypeInfo[this.shipType]['settingsTitle'];
      this.shippingSettings.varName = shiptypeInfo[this.shipType]['varName'];
    }

    this.shippingSettings[this.shipType] = this.shippingInfo;
  }

  shipTypeObj(){
    const shipTypeObj: any = {
      "brand" : {
        settingsTitle : "Brands",
        varName : this.shippingSettings.brandPrefix
      },
      "generic" : {
        settingsTitle : "Generics / OTC's",
        varName : this.shippingSettings.genericPrefix
      } 
    }
    return shipTypeObj;
  }

  /**
  * Filter input value
  * @param elementEvent
  * @param {string} valueType  
  */
  filterValue(elementEvent: any, valueType: string){
    const regexPttrn: any = {
      integer : /^[0-9]\d{0,9}?%?$/,
      float : /^[0-9]\d{0,9}(\.\d{0,2})?%?$/
    }
    var eleValue = elementEvent.currentTarget.value;
    var eleValue = eleValue.toString();
    if(!regexPttrn[valueType].test(eleValue)){
        elementEvent.currentTarget.value = eleValue.substr(0,eleValue.length - 1);
    }
  };

  /**
   * Make available either 2day or overnight not both for refrigerated products
   * 
  */
  toggleRefrgShipOption(toggleShipMethod: string, refrg_enable_field: string){
    const toggleShipMethodValue = this.toggleShipMethodObj();

    if(toggleShipMethodValue[toggleShipMethod]['refrg_enable']){
      this.shippingInfo[refrg_enable_field] = false;
    }

  };

  toggleShipMethodObj() {
    const toggleShipMethodObj: any = {
      "overnight" : {
        refrg_enable: !this.shippingInfo.shop_shipping_2day_refrg_enable
      },
      "2day" : {
        refrg_enable: !this.shippingInfo.shop_shipping_overnight_refrg_enable
      }
    };
    return toggleShipMethodObj
  }

  getfilterFloatValue(event: any) {
    this.filterFloatValue.emit(event);
  }

}
