Přeskočit na hlavní obsah

Možnosti vytváření úkolů v Mattermost

Tento dokument popisuje funkci, která poskytuje potřebná data pro vytváření úkolů v systému Mattermost integrovaném s EspoCRM. Slouží jako pomocný mechanismus pro získání seznamů uživatelů, projektů a priorit úkolů, které jsou potřebné pro správné vytvoření nového úkolu z Mattermostu.

Popis funkce

Funkce MattermostCreateTaskOptions je speciální vstupní bod (entry point) v EspoCRM, který je navržen pro komunikaci s integrací Mattermost. Jeho hlavním účelem je poskytnout klientovi (Mattermost) všechny potřebné informace pro vytvoření nového úkolu v EspoCRM. To zahrnuje:

  • Seznam aktivních uživatelů - Umožňuje přiřadit úkol konkrétnímu uživateli.
  • Seznam aktivních projektů - Umožňuje přiřadit úkol k existujícímu projektu (pokud je modul Projektů v EspoCRM aktivní).
  • Seznam priorit úkolů - Poskytuje dostupné možnosti priorit pro nový úkol, přeložené do aktuálního jazyka uživatele.

Jak to funguje

Když uživatel v Mattermostu iniciuje vytvoření nového úkolu, integrace pošle požadavek na tento vstupní bod. Systém nejprve zkontroluje, zda má uživatel potřebná oprávnění (čtení uživatelů, projektů a vytváření úkolů). Pokud ano, připraví a vrátí požadovaná data ve formátu JSON.

Důležitou funkcí je také podpora lokalizace - pokud je v URL parametru locale, systém se pokusí najít odpovídající jazyk a vrátit překlady (např. názvy priorit) v požadovaném jazyce.

Závislosti

Tato funkce spoléhá na několik klíčových komponent EspoCRM:

  • Systém oprávnění (Acl) pro kontrolu přístupových práv
  • Správce entit (EntityManager) pro práci s databází
  • Jazykový systém (Language) pro překlady
  • Metadata systému (Metadata) pro konfiguraci

Technické informace

Třída MattermostCreateTaskOptions

Namespace: Espo\Modules\Mattermost\EntryPoints

Implementuje rozhraní EntryPoint.

Konstruktor

public function __construct(
private readonly Acl $acl,
private readonly EntityManager $entityManager,
private readonly Language $language,
private readonly Metadata $metadata,
) {}

Metoda run

Hlavní metoda, která zpracovává požadavek:

  • Kontrola oprávnění pomocí Acl:
if (
!$this->acl->checkScope('User', Acl\Table::ACTION_READ)
|| !$this->acl->checkScope('Project', Acl\Table::ACTION_READ)
|| !$this->acl->checkScope('Task', Acl\Table::ACTION_CREATE)
) {
throw new ForbiddenSilent('Not enough permissions to get task create data.');
}
  • Lokalizace:
$locale = $request->getQueryParam('locale');
if ($locale) {
// Logika pro nalezení a nastavení jazyka
}
  • Získání dat:

  • Seznam uživatelů (aktivní, typ regular/admin, seřazeno podle jména)

  • Seznam projektů (pokud existuje entita Project)

  • Seznam priorit úkolů s překlady

  • Vrácení odpovědi jako JSON:

$response
->setHeader('Content-Type', 'application/json')
->writeBody(
Json::encode([
'userList' => $userList->getValueMapList(),
'projectList' => $projectList->getValueMapList(),
'taskPriorityList' => $taskPriorityList,
])
);

Výjimky

  • ForbiddenSilent - Pokud uživatel nemá potřebná oprávnění
  • JsonException - Pokud dojde k chybě při kódování JSON

Použité konstanty

Z Acl\Table:

  • ACTION_READ
  • ACTION_CREATE