# Horgok: foglalások

> A foglalások hozzáadásához, lemondásához, átütemezéséhez, mentéséhez és a foglalás utáni műveletekhez kapcsolódó horgok, valamint a webhookok adatait és fejlécét módosító szűrők.

A foglalások horgaival módosíthatod a foglalás adatait, vagy saját kódot futtathatsz, amikor egy foglalás létrejön, lemondásra kerül, átütemeződik, mentésre kerül, vagy a foglalás utáni műveletek (értesítések, naptáresemények, online megbeszélések) elindulnak. A bővítmény fájljaihoz nem kell nyúlnod. A horgokhoz programozási ismeret kell, a támogatás csak általános tanácsot ad. A szűrők és műveletek közötti különbséget a [WordPress-horgok áttekintése](https://hub.hellowp.io/hu/plugins/ameliabooking/fejlesztoknek-horgok-attekintes/) írja le.

## Foglalás hozzáadása

Ezek a horgok akkor futnak, amikor a vásárló a foglalási űrlapon foglal, vagy amikor csomagból időpontot vesznek fel a háttérfelületen vagy a vásárlói panelen.

| Horog | Típus | Mikor fut | Paraméterek |
|---|---|---|---|
| `amelia_before_booking_added_filter` | szűrő | a foglalás hozzáadása előtt, módosíthatod az adatokat | `$appointment` |
| `amelia_before_booking_added` | művelet | a foglalás hozzáadása előtt | `$appointment` |
| `amelia_after_booking_added` | művelet | a foglalás hozzáadása után | `$appointment` |

```php
function example($appointment)
{
    // az időpont módosítása
    return $appointment;
}

add_filter('amelia_before_booking_added_filter', 'example', 10, 1);
```

## Foglalás lemondása

Akkor futnak, amikor a foglalást a vásárlói panelről vagy e-mailből mondják le.

| Horog | Típus | Mikor fut | Paraméterek |
|---|---|---|---|
| `amelia_before_booking_canceled` | művelet | a lemondás előtt | `$booking` |
| `amelia_after_booking_canceled` | művelet | a lemondás után | `$booking` |

```php
function example($booking)
{
    // saját művelet
}

add_action('amelia_before_booking_canceled', 'example', 10, 1);
```

## Foglalás átütemezése

Akkor futnak, amikor a foglalást a vásárlói panelről vagy a háttérfelület naptárnézetéből ütemezik át.

| Horog | Típus | Mikor fut | Paraméterek |
|---|---|---|---|
| `amelia_before_booking_rescheduled` | művelet | az átütemezés előtt | `$oldAppointment`, `$booking`, `$bookingStart` |
| `amelia_after_booking_rescheduled` | művelet | az átütemezés után | `$oldAppointment`, `$booking`, `$bookingStart` |

A `$booking` értéke a vásárlói panelről átütemezve az aktuális felhasználó foglalása az időponton belül. A háttérfelület naptárnézetéből átütemezve `null`, mert egy időpontban több foglalás is lehet.

```php
function example($oldAppointment, $booking, $bookingStart)
{
    // saját művelet
}

add_action('amelia_after_booking_rescheduled', 'example', 10, 3);
```

## Foglalás utáni műveletek

A foglalás utáni műveletek közé tartozik az értesítések küldése, a naptáresemények létrehozása és az online megbeszélések létrehozása. Ezek elindulása előtt módosíthatod az adatokat, vagy saját kódot futtathatsz.

| Horog | Típus | Mikor fut | Paraméterek |
|---|---|---|---|
| `amelia_before_post_booking_actions_filter` | szűrő | a foglalás utáni műveletek előtt, módosíthatod az adatokat | `$resultData` |
| `amelia_before_post_booking_actions` | művelet | a foglalás utáni műveletek előtt | `$resultData` |

```php
function example($resultData)
{
    // az adatok módosítása
    return $resultData;
}

add_filter('amelia_before_post_booking_actions_filter', 'example', 10, 1);
```

## A webhookoknak küldött adatok módosítása

Ezek a szűrők a foglalás utáni műveletek után, a webhook elküldése előtt futnak, és az elküldött adatot módosíthatják vagy bővíthetik. A szűrőnek mindig vissza kell adnia az adatot.

| Típus | Szűrő neve |
|---|---|
| időpont foglalás lemondva | `AmeliaAppointmentBookingCanceledFilter` |
| időpont foglalás hozzáadva | `AmeliaAppointmentBookingAddedFilter` |
| időpont foglalás státusza módosítva | `AmeliaAppointmentBookingStatusUpdatedFilter` |
| eseményfoglalás lemondva | `AmeliaEventBookingCanceledFilter` |
| eseményfoglalás hozzáadva | `AmeliaEventBookingAddedFilter` |
| eseményfoglalás státusza módosítva | `AmeliaEventBookingStatusUpdatedFilter` |

```php
function example($data)
{
    return $data;
}

add_filter('AmeliaAppointmentBookingAddedFilter', 'example', 10, 1);
```

## Saját kód futtatása a webhook elküldése előtt

Ezek a műveletek szintén a foglalás utáni műveletek után, a webhook elküldése előtt futnak. Három paramétert kapnak: `$reservation`, `$bookings`, `$container`.

| Típus | Művelet neve |
|---|---|
| időpont foglalás lemondva | `AmeliaAppointmentBookingCanceled` |
| időpont foglalás hozzáadva | `AmeliaAppointmentBookingAdded` |
| időpont foglalás státusza módosítva | `AmeliaAppointmentBookingStatusUpdated` |
| eseményfoglalás lemondva | `AmeliaEventBookingCanceled` |
| eseményfoglalás hozzáadva | `AmeliaEventBookingAdded` |
| eseményfoglalás státusza módosítva | `AmeliaEventBookingStatusUpdated` |

```php
function example($reservation, $bookings, $container)
{
    // saját művelet
}

add_action('AmeliaAppointmentBookingCanceled', 'example', 10, 3);
```

## A webhook fejléceinek módosítása

Ezekkel a szűrőkkel a webhook fejlécében küldött adatot módosíthatod a küldés előtt. Két paramétert kapnak (`$headers`, `$data`), és a `$headers` értékét kell visszaadniuk.

| Típus | Szűrő neve |
|---|---|
| időpont foglalás lemondva | `AmeliaAppointmentBookingCanceledFilterHeader` |
| időpont foglalás hozzáadva | `AmeliaAppointmentBookingAddedFilterHeader` |
| időpont foglalás státusza módosítva | `AmeliaAppointmentBookingStatusUpdatedFilterHeader` |
| eseményfoglalás lemondva | `AmeliaEventBookingCanceledFilterHeader` |
| eseményfoglalás hozzáadva | `AmeliaEventBookingAddedFilterHeader` |
| eseményfoglalás státusza módosítva | `AmeliaEventBookingStatusUpdatedFilterHeader` |

```php
function example_callback($headers, $data)
{
    return $headers;
}

add_filter('AmeliaAppointmentBookingAddedFilterHeader', 'example_callback', 10, 2);
```

## Foglalás mentése

| Horog | Típus | Mikor fut | Paraméterek |
|---|---|---|---|
| `amelia_before_appointment_booking_saved_filter` | szűrő | az adatbázisba mentés előtt, módosíthatod a foglalást | `$booking`, `$service`, `$appointment` |
| `amelia_before_appointment_booking_saved` | művelet | az adatbázisba mentés előtt | `$booking`, `$service`, `$appointment` |
| `amelia_after_appointment_booking_saved` | művelet | az adatbázisba mentés után | `$booking`, `$service`, `$appointment` |

```php
function example($booking, $service, $appointment)
{
    // a foglalás módosítása
    return $booking;
}

add_filter('amelia_before_appointment_booking_saved_filter', 'example', 10, 3);
```
