# API: munkavállalók

> Munkavállalók létrehozása, módosítása, lekérése, törölhetőségének ellenőrzése és törlése az API-val, szolgáltatások, munkaidő és szabadnapok megadásával.

A munkavállalók végpontjaival profilokat hozhatsz létre és kezelhetsz, szolgáltatásokat rendelhetsz hozzájuk, megadhatod a munkaidejüket és az alapértelmezett helyszínüket, lekérdezheted és törölheted őket.

Az API az Elite licenchez tartozik, használatához programozási ismeret kell. A hitelesítés az **Amelia** fejlécben küldött API-kulccsal történik ([részletek](https://hub.hellowp.io/hu/plugins/ameliabooking/fejlesztoknek-api-attekintes/)). Az alap útvonal: `{{az_oldalad_URL-je}}/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1`.

| Művelet | Metódus | Útvonal |
|---|---|---|
| Munkavállaló létrehozása | `POST` | `/users/providers` |
| Munkavállaló módosítása | `POST` | `/users/providers/{{munkavallalo_id}}` |
| Egy munkavállaló lekérése | `GET` | `/users/providers/{{munkavallalo_id}}` |
| Törölhetőség ellenőrzése | `GET` | `/users/providers/effect/{{munkavallalo_id}}` |
| Munkavállalók listázása | `GET` | `/users/providers` |
| Munkavállaló törlése | `POST` | `/users/providers/delete/{{munkavallalo_id}}` |

## Munkavállaló létrehozása

Új munkavállalót hoz létre. Ahhoz, hogy a munkavállaló megjelenjen a foglalási űrlapon, a `serviceList` és a `weekDayList` mezőt is meg kell adnod. Ha a rendszerben vannak helyszínek, a `locationId` is kötelező, ez adja a munkavállaló alapértelmezett helyszínét.

**Kötelező tulajdonságok**

| Tulajdonság | Típus | Leírás |
|---|---|---|
| `firstName` | szöveg | Keresztnév. |
| `lastName` | szöveg | Vezetéknév. |
| `email` | szöveg | E-mail-cím, egyedinek kell lennie. |
| `locationId` | egész | Alapértelmezett helyszín azonosítója, kötelező, ha vannak helyszínek a rendszerben. |
| `serviceList` | tömb | A hozzárendelt szolgáltatások, a felületen való megjelenéshez kell. |
| `weekDayList` | tömb | A munkaidő, a felületen való megjelenéshez kell. |

**Opcionális tulajdonságok**

| Tulajdonság | Típus | Leírás |
|---|---|---|
| `status` | szöveg | `visible` (látható) vagy `hidden` (rejtett). Alapérték: `visible`. |
| `externalId` | egész | A munkavállalóhoz kötött WordPress-felhasználó azonosítója. |
| `countryPhoneIso` | szöveg | A telefonszámhoz tartozó országkód (ISO). |
| `phone` | szöveg | Telefonszám. |
| `zoomUserId` | szöveg | Zoom-felhasználó azonosítója. |
| `note` | szöveg | Belső megjegyzés. |
| `description` | szöveg | Leírás. |
| `pictureFullPath` | szöveg | A profilkép útvonala. |
| `pictureThumbPath` | szöveg | A profilkép bélyegképének útvonala. |
| `specialDayList` | tömb | Speciális napok munkaideje. |
| `dayOffList` | tömb | Szabadnapok. |
| `sendEmployeePanelAccessEmail` | logikai | Elküldje-e a munkavállalói panel hozzáférési e-mailjét a létrehozás után. |
| `descriptionHtml` | szöveg | A leírás HTML-ben. |
| `timeZone` | szöveg | A munkavállaló időzónája. Alapból a WordPress időzónája érvényes. |

Egy `serviceList` elem a szolgáltatás azonosítóját (`id`), az árat (`price`), a legkisebb és legnagyobb létszámot (`minCapacity`, `maxCapacity`) és az egyéni árazást (`customPricing`) tartalmazza. A `weekDayList` elemei a hét napját (`dayIndex`, 1 a hétfő), a munkaidő kezdetét és végét, a szüneteket (`timeOutList`) és az időszakokat (`periodList`, bennük helyszínekkel és szolgáltatásokkal) adják meg.

Kérés:

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/users/providers' \
--header 'Content-Type: application/json' \
--header 'Amelia: AZ_API_KULCSOD' \
--data-raw '{
  "status": "visible",
  "firstName": "Ana",
  "lastName": "Jovanović",
  "email": "ana.jovanovic@example.test",
  "externalId": "",
  "locationId": 1,
  "phone": "",
  "countryPhoneIso": "rs",
  "serviceList": [
    { "id": 4, "price": 45, "minCapacity": 1, "maxCapacity": 1,
      "customPricing": "{\"enabled\":false,\"durations\":{}}" },
    { "id": 2, "price": 20, "minCapacity": 1, "maxCapacity": 1,
      "customPricing": "{\"enabled\":false,\"durations\":{}}" }
  ],
  "weekDayList": [
    {
      "dayIndex": 1,
      "startTime": "09:00:00",
      "endTime": "17:00:00",
      "timeOutList": [],
      "periodList": [
        {
          "startTime": "09:00:00",
          "endTime": "17:00:00",
          "locationId": null,
          "periodLocationList": [ { "id": null, "locationId": 2 } ],
          "periodServiceList": []
        }
      ]
    }
  ],
  "specialDayList": [
    {
      "startDate": "2026-03-18",
      "endDate": "2026-03-18",
      "periodList": [
        {
          "startTime": "13:00:00",
          "endTime": "14:30:00",
          "periodLocationList": [ { "locationId": 2 }, { "locationId": 1 } ],
          "periodServiceList": [ { "serviceId": 2 } ]
        }
      ]
    }
  ],
  "dayOffList": [
    { "name": "Annual leave", "startDate": "2026-04-17", "endDate": "2026-04-17", "repeat": 0 }
  ],
  "sendEmployeePanelAccessEmail": true,
  "timeZone": "Europe/Belgrade"
}'
```

A példa csak a hétfőt adja meg; a többi napot ugyanilyen `weekDayList` elemekkel add hozzá (`dayIndex` 2-től 7-ig).

Válasz (rövidítve):

```json
{
  "message": "Successfully added new user.",
  "data": {
    "user": {
      "id": 88,
      "firstName": "Ana",
      "lastName": "Jovanović",
      "email": "ana.jovanovic@example.test",
      "type": "provider",
      "status": "visible",
      "timeZone": "Europe/Belgrade"
    },
    "sendEmployeePanelAccessEmail": false,
    "password": null
  }
}
```

## Munkavállaló módosítása

A munkavállaló adatait módosítja. Csak azokat a tulajdonságokat küldd el, amelyeket változtatni akarsz. Az elfogadott mezők megegyeznek a létrehozásnál felsoroltakkal, de mind opcionális.

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/users/providers/88' \
--header 'Content-Type: application/json' \
--header 'Amelia: AZ_API_KULCSOD' \
--data-raw '{
  "lastName": "Marković",
  "serviceList": [
    { "id": 4, "price": 45, "minCapacity": 1, "maxCapacity": 6,
      "customPricing": "{\"enabled\":false,\"durations\":{}}" },
    { "id": 2, "price": 20, "minCapacity": 1, "maxCapacity": 1,
      "customPricing": "{\"enabled\":false,\"durations\":{}}" }
  ]
}'
```

## Munkavállaló lekérése

Egy munkavállaló adatait adja vissza. Az azonosító az útvonalban áll, további paraméter nincs.

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/users/providers/88' \
--header 'Amelia: AZ_API_KULCSOD'
```

## Törölhetőség ellenőrzése

Megmondja, van-e a munkavállalónak jövőbeli időpontja, amely akadályozná a törlést. A válasz `valid` mezője jelzi, törölhető-e, a `message` pedig megadja az okot, ha nem.

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/users/providers/effect/88' \
--header 'Amelia: AZ_API_KULCSOD'
```

## Munkavállalók listázása

A listát oldalra, keresőszóra, szolgáltatásra és helyszínre szűrheted.

| Paraméter | Típus | Leírás |
|---|---|---|
| `page` | egész | Oldalszám. |
| `search` | szöveg | A keresztnévben, vezetéknévben, e-mail-címben és megjegyzésben keres. |
| `services` | tömb | Szolgáltatásszűrő, például `services[0]=2`. |
| `location` | tömb | Helyszínszűrő. |

```bash
curl --location 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/users/providers&page=1&search=ana&services[0]=2&location=1' \
--header 'Amelia: AZ_API_KULCSOD'
```

A válasz a `users` tömbben adja a munkavállalókat (köztük az `activity` mezőt), a `countFiltered` a szűrt, a `countTotal` az összes munkavállaló számát.

## Munkavállaló törlése

Töröl egy munkavállalót. A kérésnek nincs törzse.

```bash
curl --location --request POST 'https://pelda.hu/wp-admin/admin-ajax.php?action=wpamelia_api&call=/api/v1/users/providers/delete/88' \
--header 'Amelia: AZ_API_KULCSOD'
```
