import { defineStore } from 'pinia';
import api from '../services/api'; // Importa a instância do axios
import router from '../routes/router';
import { useAuthStore } from './auth'; // Importa o AuthStore

export const useCompanyStore = defineStore('company', {
    state: () => ({
      companys: [],
      total: 0,
      page: 1,
      perPage: 10,
      error: null,
      loading: false,
    }),
  
    getters: {
      currentPage(state) {
        return state.page;
      },
      totalPages(state) {
        return Math.ceil(state.total / state.perPage);
      },
    },

  actions: {


    async catchCompanys() {
      try {
        this.loading = true;
        const authStore = useAuthStore();
        const token = authStore.token;
        const userId = authStore.userId;
        console.log('userId: ', userId); // Exibe o userId no console
        const response = await api.get('/company/', {
          headers: {
            'Authorization': `Bearer ${token}`
          }
        });
        console.log('requisicao company.js: ',response.data);
        
        const filteredCompanys = response.data.filter(company => {
          console.log('Verificando company: ', company); // Exibe o objeto completo da empresa
          console.log('parent_id da empresa: ', company.parent_id); // Exibe apenas o valor do parent_id
          return String(company.parent_id) === String(userId);
        });
        console.log('filteredCompanys', filteredCompanys);
        // Retorna apenas os usuários não deletados
        this.companies = filteredCompanys;

        return filteredCompanys;
      } catch (error) {
        console.error('Erro ao buscar lista de empresas', error);
        throw error;
      } finally {
        this.loading = false;
      }
    },

    async createCompany(companyData) {
      const url = '/company/';
      this.loading = true;
      this.error = null;
      console.log('Dados da empresa:', companyData);
      try {
        const response = await api.post(url, companyData, {
          headers: {
            'Content-Type': 'application/json'
          }
        });
        //print('response.data', response.data);
        //print('compony', companyData);
        this.companys.push(response.data);
        return response.data;
      } catch (error) {
        this.error = error?.response?.data?.message || error.message || 'Erro ao criar empresa';
        console.error('Erro ao criar turno', error);
        throw error;
      } finally {
        this.loading = false;
      }
    
    },

   // Na função updateUser
    async updateCompany(companyId, company) {
      const url = `/company/${companyId}`;
      this.loading = true;
      this.error = null;

      try {
        const response = await api.put(url, {
          name: company.name,
          fantasy_name: company.fantasy_name,
          type: company.type,
          cnpj: company.cnpj,
          email: company.email,
          email: company.email,
          email_sec: company.email_sec,
          phone: company.phone,
          phone_sec: company.phone_sec,
          estado: company.estado,
          cidade: company.cidade,
          bairro: company.bairro,
          rua: company.rua,
          numero: company.numero,
          complemento: company.complemento,
          cep: company.cep,
        
        });

        const index = this.companys.findIndex((s) => s.id === id);
        if (index !== -1) {
          this.companys[index] = response.data;
        }

        return response.data;
      } catch (error) {
        this.error = error?.response?.data?.message || error.message || 'Erro ao atualizar empresa';
        console.error('Erro ao atualizar turno', error);
        throw error;
      } finally {
        this.loading = false;
      }
    },
    async deleteCompany(id) {
      const url = `/company/${id}`;
      this.loading = true;
      this.error = null;

      try {
        await api.delete(url);
        this.companys = this.companys.filter((company) => company.id !== id);
      } catch (error) {
        this.error = error?.response?.data?.message || error.message || 'Erro ao excluir empresa';
        console.error('Erro ao excluir empresa', error);
        throw error;
      } finally {
        this.loading = false;
      }
    },

    /*async fetchUserById(userId) {
      try {
        this.loading = true;
        const authStore = useAuthStore();
        const token = authStore.token; // Obtém o token de autenticação
        const response = await api.get(`/users/${userId}`, {
          headers: {
            'Authorization': `Bearer ${token}`
          }
        });
        this.user = response.data;
        return response.data;
      } catch (error) {
        console.error('Erro ao buscar dados do usuário', error);
        throw error;
      } finally {
        this.loading = false;
      }
    },*/

    async fetchCompanyById(company_id) {
      const url = `/company/${company_id}`;
      this.loading = true;
      this.error = null;

      try {
        const response = await api.get(url);
        console.log('requisicao: ',response.data);
        return response.data;
      } catch (error) {
        this.error = error?.response?.data?.message || error.message || 'Erro ao buscar empresa';
        console.error('Erro ao buscar turno', error);
        throw error;
      } finally {
        this.loading = false;
      }
    },
  },
});
