import { DEPUTY_ENUM } from './deputy';
import { TFunction } from 'i18next';
import { Trans } from 'react-i18next';
import { importAll } from './gallery';

export function generateDeputyNews(id = '', t: TFunction) {
  const componentConfig = {
    br: (
      <div data-component="br" className="h-16">
        <br />
      </div>
    ),
    ol: (
      <ol
        style={{
          listStyle: 'decimal',
          marginTop: '12px',
          padding: '0 0 0 48px',
        }}
      ></ol>
    ),
    li: <li className="pl-8 mt-8 [&>div[data-component='br']]:h-6"></li>,
  };

  const items = [];

  switch (id) {
    case DEPUTY_ENUM.SECRETARIAT:
      for (let i = 1; i <= 11; i++) {
        items.push({
          title: t(`news.secretariat.${i}.title`),
          content: (
            <Trans
              i18nKey={`news.secretariat.${i}.content`}
              components={componentConfig}
            />
          ),
        });
      }
      return items;

    case DEPUTY_ENUM.INSPECTORATE:
      for (let i = 1; i <= 5; i++) {
        items.push({
          title: t(`news.inspectorate.${i}.title`),
          content: (
            <Trans
              i18nKey={`news.inspectorate.${i}.content`}
              components={componentConfig}
            />
          ),
        });
      }
      return items;

    case DEPUTY_ENUM.REHAB:
      for (let i = 1; i <= 6; i++) {
        items.push({
          title: t(`news.rehab.${i}.title`),
          content: (
            <Trans
              i18nKey={`news.rehab.${i}.content`}
              components={componentConfig}
            />
          ),
        });
      }
      return items;

    case DEPUTY_ENUM.LABORATORY:
      for (let i = 1; i <= 5; i++) {
        items.push({
          title: t(`news.laboratory.${i}.title`),
          content: (
            <Trans
              i18nKey={`news.laboratory.${i}.content`}
              components={componentConfig}
            />
          ),
        });
      }
      return items;

    case DEPUTY_ENUM.ERADICATION: {
      for (let i = 1; i <= 9; i++) {
        items.push({
          title: t(`news.eradication.${i}.title`),
          content: (
            <Trans
              i18nKey={`news.eradication.${i}.content`}
              components={componentConfig}
            />
          ),
        });
      }
      return items;
    }

    case DEPUTY_ENUM.LEGAL:
      for (let i = 1; i <= 2; i++) {
        items.push({
          title: t(`news.legal.${i}.title`),
          content: (
            <Trans
              i18nKey={`news.legal.${i}.content`}
              components={componentConfig}
            />
          ),
        });
      }
      return items;

    case DEPUTY_ENUM.PREVENTION:
      for (let i = 1; i <= 10; i++) {
        items.push({
          title: t(`news.prevention.${i}.title`),
          content: (
            <Trans
              i18nKey={`news.prevention.${i}.content`}
              components={componentConfig}
            />
          ),
        });
      }
      return items;

    case DEPUTY_ENUM.PUBLIC: {
      for (let i = 1; i <= 7; i++) {
        items.push({
          title: t(`news.public.${i}.title`),
          content: (
            <Trans
              i18nKey={`news.public.${i}.content`}
              components={componentConfig}
            />
          ),
        });
      }
      return items;
    }

    case DEPUTY_ENUM.HRD:
      for (let i = 1; i <= 2; i++) {
        items.push({
          title: t(`news.hrd.${i}.title`),
          content: (
            <Trans
              i18nKey={`news.hrd.${i}.content`}
              components={componentConfig}
            />
          ),
        });
      }
      return items;

    case DEPUTY_ENUM.RESEARCH:
      for (let i = 1; i <= 3; i++) {
        items.push({
          title: t(`news.research.${i}.title`),
          content: (
            <Trans
              i18nKey={`news.research.${i}.content`}
              components={componentConfig}
            />
          ),
        });
      }
      return items;

    default:
      return [];
  }
}

export function generateNewsThumbnail(id = '') {
  const dummyContent = [
    require('../assets/news/thumbnail/1.png'),
    require('../assets/news/thumbnail/2.png'),
    require('../assets/news/thumbnail/3.png'),
    require('../assets/news/thumbnail/4.png'),
    require('../assets/news/thumbnail/5.png'),
    require('../assets/news/thumbnail/6.png'),
    require('../assets/news/thumbnail/1.png'),
    require('../assets/news/thumbnail/2.png'),
    require('../assets/news/thumbnail/3.png'),
  ];

  function sortImage(a: string, b: string) {
    const regex = /(\d+)/;
    const numberA = Number(a.match(regex)?.[0]);
    const numberB = Number(b.match(regex)?.[0]);
    return numberA > numberB ? 1 : -1;
  }

  switch (id) {
    case DEPUTY_ENUM.SECRETARIAT:
      return importAll(
        require.context(
          '../assets/news/thumbnail/secretariat',
          false,
          /\.(png|jpe?g|svg)$/
        )
      )
        .sort(sortImage)
        .map((image) => {
          const path: string = image.split('/')[1];
          return require(`../assets/news/thumbnail/secretariat/${path}`);
        });

    case DEPUTY_ENUM.INSPECTORATE:
      return importAll(
        require.context(
          '../assets/news/thumbnail/insputama',
          false,
          /\.(png|jpe?g|svg)$/
        )
      ).map((image) => {
        const path: string = image.split('/')[1];
        return require(`../assets/news/thumbnail/insputama/${path}`);
      });

    case DEPUTY_ENUM.REHAB:
      return importAll(
        require.context(
          '../assets/news/thumbnail/rehab',
          false,
          /\.(png|jpe?g|svg)$/
        )
      ).map((image) => {
        const path: string = image.split('/')[1];
        return require(`../assets/news/thumbnail/rehab/${path}`);
      });

    case DEPUTY_ENUM.LABORATORY:
      return importAll(
        require.context(
          '../assets/news/thumbnail/lab',
          false,
          /\.(png|jpe?g|svg)$/
        )
      ).map((image) => {
        const path: string = image.split('/')[1];
        return require(`../assets/news/thumbnail/lab/${path}`);
      });

    case DEPUTY_ENUM.ERADICATION:
      return importAll(
        require.context(
          '../assets/news/thumbnail/eradication',
          false,
          /\.(png|jpe?g|svg)$/
        )
      ).map((image) => {
        const path: string = image.split('/')[1];
        return require(`../assets/news/thumbnail/eradication/${path}`);
      });

    case DEPUTY_ENUM.LEGAL:
      return importAll(
        require.context(
          '../assets/news/thumbnail/legal',
          false,
          /\.(png|jpe?g|svg)$/
        )
      ).map((image) => {
        const path: string = image.split('/')[1];
        return require(`../assets/news/thumbnail/legal/${path}`);
      });

    case DEPUTY_ENUM.PREVENTION:
      return importAll(
        require.context(
          '../assets/news/thumbnail/prevention',
          false,
          /\.(png|jpe?g|svg)$/
        )
      )
        .sort(sortImage)
        .map((image) => {
          const path: string = image.split('/')[1];
          return require(`../assets/news/thumbnail/prevention/${path}`);
        });

    case DEPUTY_ENUM.PUBLIC:
      return importAll(
        require.context(
          '../assets/news/thumbnail/public',
          false,
          /\.(png|jpe?g|svg)$/
        )
      ).map((image) => {
        const path: string = image.split('/')[1];
        return require(`../assets/news/thumbnail/public/${path}`);
      });

    case DEPUTY_ENUM.HRD:
      return importAll(
        require.context(
          '../assets/news/thumbnail/hrd',
          false,
          /\.(png|jpe?g|svg)$/
        )
      ).map((image) => {
        const path: string = image.split('/')[1];
        return require(`../assets/news/thumbnail/hrd/${path}`);
      });

    case DEPUTY_ENUM.RESEARCH:
      return importAll(
        require.context(
          '../assets/news/thumbnail/research',
          false,
          /\.(png|jpe?g|svg)$/
        )
      ).map((image) => {
        const path: string = image.split('/')[1];
        return require(`../assets/news/thumbnail/research/${path}`);
      });

    default:
      return dummyContent;
  }
}
