# Mobile API pentru Insurance CRM

## 1. Fișiere de urcat pe host
Urcă exact aceste fișiere/foldere:
- `models/ApiToken.php`
- `controllers/ApiController.php`
- `public/api/index.php`
- `public/api/.htaccess`

## 2. SQL de rulat
Rulează o singură dată:
- `database/patch_mobile_api.sql`

## 3. Base URL API
```text
https://dobreanurares.com/insurance_crm_project/public/api
```

## 4. Endpoint-uri disponibile

### POST `/login`
Body JSON:
```json
{
  "email": "admin@site.ro",
  "password": "parola",
  "device_name": "react_native_app"
}
```

### POST `/logout`
Header:
```text
Authorization: Bearer TOKEN
```

### GET `/me`

### GET `/dashboard`

### GET `/vehicles?page=1&per_page=20`

### GET `/vehicles/{id}`

### GET `/alerts?page=1&per_page=20`
Filtre utile:
- `vehicle_id`
- `bucket` = `expired`, `0`, `1`, `7`, `15`, `30`, `60`

### GET `/interests?page=1&per_page=20`

### GET `/documents?page=1&per_page=20`
Filtru util:
- `vehicle_id`

### POST `/documents/upload`
`multipart/form-data`
Câmpuri:
- `file`
- `document_type`
- `title` optional
- `notes` optional
- `vehicle_id` optional
- `client_id` obligatoriu doar pentru admin/manager

### GET `/documents/{id}/download`

## 5. Ce să pui în aplicația mobilă
În aplicația ta pune fișierul:
- `mobile_app/apiClient.js`

Acolo ai deja:
- login
- logout
- getMe
- getDashboard
- getVehicles
- getVehicle
- getAlerts
- getInterests
- getDocuments
- uploadDocument

## 6. Flux recomandat în aplicația mobilă
1. utilizatorul face login
2. salvezi token-ul local în AsyncStorage / SecureStore
3. la fiecare request trimiți:
```text
Authorization: Bearer TOKEN
```
4. dacă primești 401, scoți token-ul și îl trimiți din nou la login

## 7. Ce vede fiecare rol
- `admin` -> tot
- `manager` -> datele lui CRM
- `user` -> doar clientul asociat în `users.linked_client_id`

## 8. Important
Pentru conturile de tip `user`, trebuie să existe legătura:
- `users.linked_client_id` -> `clients.id`

Altfel login-ul merge, dar endpoint-urile de client vor răspunde cu 403.
