'use client'

import { create } from 'zustand'
import { persist } from 'zustand/middleware'

export type UserRole = 'CUSTOMER' | 'SUPERVISOR' | 'MANAGER' | 'ADMIN'

export interface AuthUser {
  id: string
  email: string
  name: string
  company?: string | null
  role: UserRole
  phone?: string | null
}

interface AuthState {
  user: AuthUser | null
  token: string | null
  isAuthenticated: boolean
  login: (user: AuthUser, token: string) => void
  logout: () => void
  updateUser: (user: Partial<AuthUser>) => void
}

export const useAuthStore = create<AuthState>()(
  persist(
    (set) => ({
      user: null,
      token: null,
      isAuthenticated: false,
      login: (user, token) => set({ user, token, isAuthenticated: true }),
      logout: () => set({ user: null, token: null, isAuthenticated: false }),
      updateUser: (userData) => set((state) => ({
        user: state.user ? { ...state.user, ...userData } : null,
      })),
    }),
    {
      name: 'customer-service-auth',
    }
  )
)
