import dayjs from 'dayjs';
import _ from 'lodash';

export default {
  filesFormatter(arr) {
    if (!arr || !arr.length) return [];
    return arr.map((item) => item);
  },
  imageFormatter(arr) {
    if (!arr || !arr.length) return [];
    return arr.map((item) => ({
      publicUrl: item.publicUrl || '',
    }));
  },
  oneImageFormatter(arr) {
    if (!arr || !arr.length) return '';
    return arr[0].publicUrl || '';
  },
  dateFormatter(date) {
    if (!date) return '';
    return dayjs(date).format('YYYY-MM-DD');
  },
  dateTimeFormatter(date) {
    if (!date) return '';
    return dayjs(date).format('YYYY-MM-DD HH:mm');
  },
  booleanFormatter(val) {
    return val ? 'Yes' : 'No';
  },
  dataGridEditFormatter(obj) {
    return _.transform(obj, (result, value, key) => {
      if (_.isArray(value)) {
        result[key] = _.map(value, 'id');
      } else if (_.isObject(value)) {
        result[key] = value.id;
      } else {
        result[key] = value;
      }
    });
  },

  equipes_trabalhoManyListFormatter(val) {
    if (!val || !val.length) return [];
    return val.map((item) => item.nome_equipe);
  },
  equipes_trabalhoOneListFormatter(val) {
    if (!val) return '';
    return val.nome_equipe;
  },
  equipes_trabalhoManyListFormatterEdit(val) {
    if (!val || !val.length) return [];
    return val.map((item) => {
      return { id: item.id, label: item.nome_equipe };
    });
  },
  equipes_trabalhoOneListFormatterEdit(val) {
    if (!val) return '';
    return { label: val.nome_equipe, id: val.id };
  },

  estrutura_projetoManyListFormatter(val) {
    if (!val || !val.length) return [];
    return val.map((item) => item.etapa);
  },
  estrutura_projetoOneListFormatter(val) {
    if (!val) return '';
    return val.etapa;
  },
  estrutura_projetoManyListFormatterEdit(val) {
    if (!val || !val.length) return [];
    return val.map((item) => {
      return { id: item.id, label: item.etapa };
    });
  },
  estrutura_projetoOneListFormatterEdit(val) {
    if (!val) return '';
    return { label: val.etapa, id: val.id };
  },

  frames_imagemManyListFormatter(val) {
    if (!val || !val.length) return [];
    return val.map((item) => item.imagem_url);
  },
  frames_imagemOneListFormatter(val) {
    if (!val) return '';
    return val.imagem_url;
  },
  frames_imagemManyListFormatterEdit(val) {
    if (!val || !val.length) return [];
    return val.map((item) => {
      return { id: item.id, label: item.imagem_url };
    });
  },
  frames_imagemOneListFormatterEdit(val) {
    if (!val) return '';
    return { label: val.imagem_url, id: val.id };
  },

  inspecao_aereaManyListFormatter(val) {
    if (!val || !val.length) return [];
    return val.map((item) => item.tipo_inspecao);
  },
  inspecao_aereaOneListFormatter(val) {
    if (!val) return '';
    return val.tipo_inspecao;
  },
  inspecao_aereaManyListFormatterEdit(val) {
    if (!val || !val.length) return [];
    return val.map((item) => {
      return { id: item.id, label: item.tipo_inspecao };
    });
  },
  inspecao_aereaOneListFormatterEdit(val) {
    if (!val) return '';
    return { label: val.tipo_inspecao, id: val.id };
  },

  membros_equipeManyListFormatter(val) {
    if (!val || !val.length) return [];
    return val.map((item) => item.nome);
  },
  membros_equipeOneListFormatter(val) {
    if (!val) return '';
    return val.nome;
  },
  membros_equipeManyListFormatterEdit(val) {
    if (!val || !val.length) return [];
    return val.map((item) => {
      return { id: item.id, label: item.nome };
    });
  },
  membros_equipeOneListFormatterEdit(val) {
    if (!val) return '';
    return { label: val.nome, id: val.id };
  },

  obrasManyListFormatter(val) {
    if (!val || !val.length) return [];
    return val.map((item) => item.nome_obra);
  },
  obrasOneListFormatter(val) {
    if (!val) return '';
    return val.nome_obra;
  },
  obrasManyListFormatterEdit(val) {
    if (!val || !val.length) return [];
    return val.map((item) => {
      return { id: item.id, label: item.nome_obra };
    });
  },
  obrasOneListFormatterEdit(val) {
    if (!val) return '';
    return { label: val.nome_obra, id: val.id };
  },

  relatorios_analiticos_videoManyListFormatter(val) {
    if (!val || !val.length) return [];
    return val.map((item) => item.json_analise);
  },
  relatorios_analiticos_videoOneListFormatter(val) {
    if (!val) return '';
    return val.json_analise;
  },
  relatorios_analiticos_videoManyListFormatterEdit(val) {
    if (!val || !val.length) return [];
    return val.map((item) => {
      return { id: item.id, label: item.json_analise };
    });
  },
  relatorios_analiticos_videoOneListFormatterEdit(val) {
    if (!val) return '';
    return { label: val.json_analise, id: val.id };
  },

  rolesManyListFormatter(val) {
    if (!val || !val.length) return [];
    return val.map((item) => item.name);
  },
  rolesOneListFormatter(val) {
    if (!val) return '';
    return val.name;
  },
  rolesManyListFormatterEdit(val) {
    if (!val || !val.length) return [];
    return val.map((item) => {
      return { id: item.id, label: item.name };
    });
  },
  rolesOneListFormatterEdit(val) {
    if (!val) return '';
    return { label: val.name, id: val.id };
  },

  permissionsManyListFormatter(val) {
    if (!val || !val.length) return [];
    return val.map((item) => item.name);
  },
  permissionsOneListFormatter(val) {
    if (!val) return '';
    return val.name;
  },
  permissionsManyListFormatterEdit(val) {
    if (!val || !val.length) return [];
    return val.map((item) => {
      return { id: item.id, label: item.name };
    });
  },
  permissionsOneListFormatterEdit(val) {
    if (!val) return '';
    return { label: val.name, id: val.id };
  },

  clientesManyListFormatter(val) {
    if (!val || !val.length) return [];
    return val.map((item) => item.name);
  },
  clientesOneListFormatter(val) {
    if (!val) return '';
    return val.name;
  },
  clientesManyListFormatterEdit(val) {
    if (!val || !val.length) return [];
    return val.map((item) => {
      return { id: item.id, label: item.name };
    });
  },
  clientesOneListFormatterEdit(val) {
    if (!val) return '';
    return { label: val.name, id: val.id };
  },
};
