---
title: "Integrácie — Teams for Laravel | Roundly"
description: "Schvaľovanie žiadostí viacerými adminmi cez approvals, plus kontakty, adresy a prepojenia tímov zo sesterských balíkov Roundly."
url: https://roundly-consulting.com/sk/open-source/navody/teams-for-laravel/integracie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Teams for Laravel](https://roundly-consulting.com/sk/open-source/navody/teams-for-laravel.md)

# Integrácie

Teams integruje šesť sesterských balíkov Roundly. Sú to pevné závislosti, takže ich funkcie sú na dodanom modeli Team vždy k dispozícii:

| Balík | Čo pridáva tímu |
| --- | --- |
| `enums-for-laravel` | JoinRequestStatus a JoinPolicy získajú labels(), options(), validationRule(), values() a vyhľadávanie hodnôt. |
| `options-for-laravel` | Typované nastavenia tímu — pravidlá vstupu, limit miest, predvolená rola, povinné schválenie. |
| `contacts-for-laravel` | Kontaktné a fakturačné e-maily, telefóny a URL s primárnym kontaktom pre každý typ. |
| `addresses-for-laravel` | Adresár fakturačných, fyzických a korešpondenčných adries s typovaným vyhľadávaním. |
| `approvals-for-laravel` | Voliteľné schvaľovanie žiadostí o pripojenie viacerými adminmi, s výsledkom prepísaným späť do žiadosti. |
| `connections-for-laravel` | Prepojenia tím–tím a tím–používateľ s oprávneniami a expiráciou. |

Každý má vlastné tabuľky — migrácie options, contacts, addresses, connections a approvals, ktoré ste publikovali pri inštalácii.

## Schvaľovanie viacerými adminmi

Zapnite TEAMS\_APPROVALS=true a žiadosť o pripojenie pošlite cez schvaľovací engine namiesto jedného schvaľovateľa. Natívna cesta joinRequests()->approve() / deny() zostáva nedotknutá:

```php
use RoundlyConsulting\Approvals\Enums\ApprovalRule;
use RoundlyConsulting\Approvals\Facades\Approvals;
use RoundlyConsulting\Teams\Facades\Teams;

// .env → TEAMS_APPROVALS=true
$request = Teams::for($team)->joinRequests()
    ->requireApprovalFrom([$admin1, $admin2])
    ->rule(ApprovalRule::Quorum)
    ->quorum(2)
    ->open($user);   // opens pending; an ApprovalRequest is created

// Admins sign off through the approvals engine:
Approvals::for($request)->as($admin1)->approve();
Approvals::for($request)->as($admin2)->approve();   // quorum reached — the member is added
```

requireApprovalFrom(), rule() a quorum() vracajú nový handle, takže pripravený handle si môžete odložiť a použiť znova. Keď engine rozhodne, SyncJoinRequestStatusFromApproval prenesie výsledok do žiadosti cez Teams::for($team)->joinRequests() — takže ho Teams::fake() zaznamená: schválenie pridá člena a spustí JoinRequestApproved; zamietnutie označí žiadosť ako Denied a spustí JoinRequestDenied; zrušenie a expirácia nerobia nič. Žiadosť, ktorú už niekto vybavil ručne (alebo vypršala), si svoj výsledok ponechá — engine ho nikdy neprevráti. Listener koná, len kým je teams.approvals.enabled zapnuté. Bez rule() a quorum() platia teams.approvals.rule a .quorum; pri vypnutom schvaľovaní ide open() natívnou cestou.

## Kontakty

```php
use RoundlyConsulting\Contacts\Enums\ContactType;
use RoundlyConsulting\Teams\Facades\Teams;

// The team's ContactBook — the same as Contacts::for($team):
Teams::for($team)->contacts()->email('billing@example.com')->label('billing')->primary()->add();
Teams::for($team)->contacts()->phone('+441234567891')->label('billing')->add();
Teams::for($team)->contacts()->url('https://status.example.com')->label('status')->add();
Teams::for($team)->contacts()->primary(ContactType::Email);   // Contact|null

// The HasContacts trait on Team works too:
$team->addEmail('support@example.com', 'support', primary: true);
$team->addPhone('+441234567890', 'ops');
$team->addUrl('https://example.com', 'website');
$team->primaryEmail();                                        // Contact|null
```

## Adresy

```php
use RoundlyConsulting\Addresses\DataTransferObjects\AddressData;
use RoundlyConsulting\Addresses\Enums\AddressType;
use RoundlyConsulting\Teams\Facades\Teams;

// The team's AddressBook — the same as Addresses::for($team):
Teams::for($team)->addresses()->add(new AddressData(
    city: 'London', street: '1 King St', postalCode: 'EC1A 1AA',
    countryIso: 'GB', type: AddressType::Billing, isPrimary: true,
));
Teams::for($team)->addresses()->primary(AddressType::Billing);

// The HasAddresses trait on Team works too:
$team->createAddress(city: 'Berlin', street: 'Example Str. 1', postalCode: '10115', countryIsoCode: 'DE');
$team->getPrimaryAddressOfType(AddressType::Billing);
```

contacts() a addresses() vám dajú ContactBook a AddressBook tímu, takže platia fasády týchto balíkov — aj ich fakes. Oba balíky majú v traite metódu addAddress(); na modeli Team vyhráva štruktúrovaná verzia z addresses a voľnotextová verzia z contacts je dostupná ako addContactAddress().

## Prepojenia tímov

```php
use RoundlyConsulting\Teams\Facades\Teams;
use RoundlyConsulting\Teams\Models\Team;

// The connections facade scoped to the team — the same as Connections::from($team):
Teams::for($team)->connections()->to($partnerTeam)->withPermissions('share:roster')->connect();
Teams::for($team)->connections()->to($partnerTeam)->disconnect();

// The HasConnections trait on Team works too:
$team->connectTo($partnerTeam, ['share:roster']);   // team ↔ team
$team->inviteConnection($partnerTeam);              // a pending invitation
$partnerTeam->acceptConnectionFrom($team);

$team->isConnectedTo($partnerTeam);
$team->connectablesOfType(Team::class);             // partner teams
$team->hasPermissionThroughConnection($partnerTeam, 'share:roster');
```

Team implementuje Connectable, takže sa môže prepojiť s inými tímami alebo s akýmkoľvek modelom typu Connectable, napríklad s používateľom, ktorý používa trait z balíka connections.

## Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

[Ďalšie spôsoby podpory vrátane kryptomien](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/teams-for-laravel.md)
