import { defineStore } from 'pinia' import { ref } from 'vue' import type { Employee } from '@/types/Employee' import * as employeeService from '@/services/employee' export const useEmployeeStore = defineStore('employee', () => { const employees = ref<Employee[]>([]) const loading = ref<boolean>(false) const error = ref<string | null>(null) const IMAGE_BASE_URL = import.meta.env.VITE_EMP_IMAGE_BASE || '' const FALLBACK_IMAGE = '/images/noimage.jpg' // ✅ ดึงรายการ Employee ทั้งหมดจาก backend และแปะ path รูป async function fetchEmployees() { loading.value = true error.value = null try { const res = await employeeService.listEmployees() employees.value = res.map((e) => ({ ...e, image: e.image ? IMAGE_BASE_URL + e.image : FALLBACK_IMAGE })) } catch (err: any) { error.value = err.message || 'Unknown Error' } finally { loading.value = false } } // ✅ ดึง Employee รายการเดียว พร้อมแปะ path รูป async function fetchEmployee(id: number): Promise<Employee | null> { loading.value = true error.value = null try { const res = await employeeService.getEmployee(id) return { ...res, image: res.image ? IMAGE_BASE_URL + res.image : FALLBACK_IMAGE } } catch (err: any) { error.value = err.message || 'Unknown Error' return null } finally { loading.value = false } } // ✅ สร้าง Employee ใหม่ async function addEmployee(payload: Partial<Employee>) { loading.value = true error.value = null try { const newEmployee = await employeeService.createEmployee(payload) newEmployee.image = newEmployee.image ? IMAGE_BASE_URL + newEmployee.image : FALLBACK_IMAGE employees.value.push(newEmployee) } catch (err: any) { error.value = err.message || 'Unknown Error' } finally { loading.value = false } } // ✅ อัปเดตข้อมูล Employee async function editEmployee(id: number, payload: Partial<Employee>) { loading.value = true error.value = null try { const updated = await employeeService.updateEmployee(id, payload) updated.image = updated.image ? IMAGE_BASE_URL + updated.image : FALLBACK_IMAGE const index = employees.value.findIndex((e) => e.EmployeeID === id) if (index !== -1) { employees.value[index] = updated } } catch (err: any) { error.value = err.message || 'Unknown Error' } finally { loading.value = false } } // ✅ ลบ Employee async function removeEmployee(id: number) { loading.value = true error.value = null try { await employeeService.deleteEmployee(id) employees.value = employees.value.filter((e) => e.EmployeeID !== id) } catch (err: any) { error.value = err.message || 'Unknown Error' } finally { loading.value = false } } return { employees, loading, error, fetchEmployees, fetchEmployee, addEmployee, editEmployee, removeEmployee } })