# Egyedi automatizálás-feltétel

> Saját feltételcsoport és feltétel regisztrálása PHP-ból, a hozzá tartozó kiértékelő logikával.

A feltételeket az automatizálás futás közben ellenőrzi. Ezek döntik el, hogy:

- mely kapcsolattartók haladnak tovább az automatizálás egy lépésén,
- melyeket szűri ki a saját szabályod.

A FluentCRM sok beépített feltételt ad, de a saját bővítményedből is megjeleníthetsz feltételeket (például „megvásárolt termékek”), és a kiértékelést te valósítod meg.

## Használt kampók

Két filter kell hozzá:

| Típus | Kampó neve | Mire való |
|---|---|---|
| Filter | `fluentcrm_automation_condition_groups` | Felveszi a feltételcsoportot és elemeit a feltételszerkesztőbe. |
| Filter | `fluentcrm_automation_conditions_assess_custom` | Kiértékeli az egyedi feltételeket egy adott kapcsolattartóra, és visszaadja az eredményt. |

A példában egy „Purchased Products” (megvásárolt termékek) feltételt vezetünk be az egyedi (Custom) csoportban.

## 1. lépés: a feltétel osztálya

Hozz létre egy PHP-osztályt (például `Custom\Conditions\CustomCondition`), amely regisztrálja és kiértékeli a feltételeket.

```php
<?php

namespace Custom\Conditions;

class CustomCondition
{
    public function __construct()
    {
        // 1) A feltételcsoport és elemei a felületen
        add_filter(
            'fluentcrm_automation_condition_groups',
            [$this, 'addAutomationConditions'],
            10,
            2
        );

        // 2) Az egyedi feltételek kiértékelése
        add_filter(
            'fluentcrm_automation_conditions_assess_custom',
            [$this, 'assessAutomationConditions'],
            10,
            3
        );
    }

    /**
     * Egy „Custom” csoport egy „Purchased Products” feltétellel.
     */
    public function addAutomationConditions($groups, $funnel)
    {
        $customerItems = [
            [
                'value'             => 'purchased_items',
                'label'             => 'Purchased Products',
                'type'              => 'selections',
                'component'         => 'product_selector',
                'is_singular_value' => true,
                'is_multiple'       => true,
                'disabled'          => false,
            ],
        ];

        $groups['custom'] = [
            'label'    => 'Custom',
            'value'    => 'custom',
            'children' => $customerItems,
        ];

        return $groups;
    }

    /**
     * Az egyedi feltételek kiértékelése az adott kapcsolattartóra.
     *
     * @param bool                                    $result     A korábbi feltételek eredménye.
     * @param \FluentCrm\Framework\Support\Arryable[] $conditions A feltételek leírásai.
     * @param \FluentCrm\App\Models\Subscriber        $subscriber Az aktuális kapcsolattartó.
     *
     * @return bool
     */
    public function assessAutomationConditions($result, $conditions, $subscriber)
    {
        // Vázlat: járd végig a feltételeket, és alkalmazd a saját logikádat.
        foreach ($conditions as $condition) {
            if ($condition['value'] === 'purchased_items') {
                // TEENDŐ: ide jön a saját vásárlásellenőrző logikád.
                // Ha a kapcsolattartó megfelel a szabálynak, maradjon $result = true,
                // különben állítsd $result = false értékre, és lépj ki a ciklusból.
            }
        }

        return $result;
    }
}
```

Az osztály betöltése után a FluentCRM:

- megjeleníti a **Custom → Purchased Products** feltételt az automatizálás feltételszerkesztőjében,
- minden használatkor meghívja az `assessAutomationConditions()` metódust, átadva a feltétel adatait és az aktuális kapcsolattartót, hogy te dönthess az egyezésről.

## 2. lépés: az osztály regisztrálása

Az osztályt akkor példányosítsd, amikor a FluentCRM Pro már betöltődött; szokásos hely a `plugins_loaded` kampó:

```php
add_action('plugins_loaded', function () {
    if (defined('FLUENTCAMPAIGN_DIR_FILE')) {
        new \Custom\Conditions\CustomCondition();
    }
});
```

Ezután:

1. A **Custom → Purchased Products** feltétel elérhető az automatizálás feltételszerkesztőjében.
2. A FluentCRM minden kiértékeléskor meghívja az `assessAutomationConditions()` metódusodat.
3. Ugyanezzel a mintával további egyedi feltételeket és összetettebb szűrési logikát is megvalósíthatsz.
