import get from 'lodash/get'
import { Relation } from 'models'
import { FluidType } from '../enum/fluid.enum'
import { KonnectorUpdate } from '../enum/konnectorUpdate.enum'

export function getFluidType(type: string) {
  switch (type.toUpperCase()) {
    case 'ELECTRICITY':
      return FluidType.ELECTRICITY
    case 'WATER':
      return FluidType.WATER
    case 'GAS':
      return FluidType.GAS
    default:
      return FluidType.ELECTRICITY
  }
}
export function getKonnectorUpdateError(type: string) {
  switch (type.toUpperCase()) {
    case 'USER_ACTION_NEEDED.OAUTH_OUTDATED':
      return KonnectorUpdate.ERROR_UPDATE_OAUTH
    default:
      return KonnectorUpdate.ERROR_UPDATE
  }
}
export function formatNumberValues(
  value: number | null,
  fluidStyle?: string,
  toBeCompared = false
) {
  if (value || value === 0) {
    const localeValue = value.toLocaleString('fr-FR', {
      minimumFractionDigits: 2,
      maximumFractionDigits: 2,
    })
    const noSpaceValue = parseInt(localeValue.replace(/\s/g, ''))
    if (toBeCompared) return noSpaceValue
    if (fluidStyle && noSpaceValue >= 1000) {
      const convertedValue = (noSpaceValue / 1000).toFixed(2).replace('.', ',')
      return convertedValue
    } else return localeValue
  } else {
    return '--,--'
  }
}

/**
 * Get one relation in doc
 *
 * @param {object} doc - DocumentEntity
 * @param {string} relName - Name of the relation
 */
export function getRelationship<D>(doc: D, relName: string): Relation {
  return get(doc, `relationships.${relName}.data`, [])
}

//TODO Improve this function, pathName as argument (ecogeesture/season/boss) ?
export const importIconbyId = async (id: string) => {
  // Les svg doivent ĂȘtre au format id.svg
  let importedSeasonIcon
  try {
    importedSeasonIcon = await import(
      /* webpackMode: "eager" */ `assets/icons/visu/boss/${id}.svg`
    )
  } catch (e) {}
  if (importedSeasonIcon) {
    return importedSeasonIcon.default
  }
}