Gitlab@Informatics

Skip to content
Snippets Groups Projects
Select Git revision
  • f4da665c707ded116361282fd6cb39bdaac3f0de
  • main default protected
2 results

employee.ts

Blame
  • employee.ts 3.13 KiB
    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