# Client Name Check API Documentation ## Overview API endpoint untuk mengecek apakah nama client sudah ada atau belum dalam sistem. Endpoint ini mengembalikan status exist/not exist dengan pesan yang sesuai. ## Endpoint ### Check Client Name Exists **GET** `/clients/check-name/{name}` #### Description Mengecek apakah nama client sudah ada dalam sistem atau belum. #### Parameters - **name** (path, required): Nama client yang akan dicek keberadaannya #### Headers - Tidak memerlukan authentication (public endpoint) #### Response ##### Success Response (200) - Name Available ```json { "success": true, "messages": ["Client name is available"], "data": { "name": "My Company", "exists": false } } ``` ##### Success Response (200) - Name Already Used ```json { "success": true, "messages": ["Name has been used"], "data": { "name": "My Company", "exists": true } } ``` ##### Response Fields - **name** (string): Nama client yang dicek - **exists** (boolean): Status apakah nama sudah ada (`true`) atau belum (`false`) #### Error Responses ##### 500 Internal Server Error ```json { "success": false, "messages": ["Database error message"] } ``` ## Usage Examples ### cURL Example ```bash # Check if client name exists curl -X GET "http://localhost:8080/clients/check-name/My%20Company" # Response if name exists { "success": true, "messages": ["Name has been used"], "data": { "name": "My Company", "exists": true } } # Response if name doesn't exist { "success": true, "messages": ["Client name is available"], "data": { "name": "My Company", "exists": false } } ``` ### JavaScript Example ```javascript const checkClientNameExists = async (name) => { try { const response = await fetch(`/clients/check-name/${encodeURIComponent(name)}`, { method: 'GET', headers: { 'Content-Type': 'application/json' } }); const data = await response.json(); if (data.success) { return { exists: data.data.exists, message: data.messages[0] }; } else { console.error('Check failed:', data.messages); return null; } } catch (error) { console.error('Error checking client name:', error); return null; } }; // Usage const result = await checkClientNameExists('My Company'); if (result) { if (result.exists) { console.log('Name is already used:', result.message); } else { console.log('Name is available:', result.message); } } ``` ### React Hook Example ```javascript import { useState, useEffect } from 'react'; const useClientNameCheck = (name) => { const [exists, setExists] = useState(null); const [message, setMessage] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); useEffect(() => { const checkName = async () => { if (!name || name.length < 2) { setExists(null); setMessage(''); return; } try { setLoading(true); setError(null); const response = await fetch(`/clients/check-name/${encodeURIComponent(name)}`); const data = await response.json(); if (data.success) { setExists(data.data.exists); setMessage(data.messages[0]); } else { setError(data.messages[0]); } } catch (err) { setError('Failed to check client name'); } finally { setLoading(false); } }; // Debounce the check const timeoutId = setTimeout(checkName, 500); return () => clearTimeout(timeoutId); }, [name]); return { exists, message, loading, error }; }; // Usage in component const ClientNameInput = () => { const [name, setName] = useState(''); const { exists, message, loading, error } = useClientNameCheck(name); return (