Skip to content

Commit

Permalink
single associations for organization
Browse files Browse the repository at this point in the history
  • Loading branch information
nateiler committed Feb 3, 2019
1 parent aae9cfc commit b0912fa
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions src/behaviors/UserOrganizationsBehavior.php
Expand Up @@ -326,6 +326,39 @@ public function saveOrganizations(): bool
return $success;
}

/**
* @param Organization $organization
* @param int|null $sortOrder
* @return bool
*/
public function associateOrganization(Organization $organization, int $sortOrder = null): bool
{
if (null === ($association = UserAssociation::find()
->userId($this->owner->getId() ?: false)
->organizationId($organization->getId() ?: false)
->one())
) {
$association = new UserAssociation([
'organization' => $organization,
'user' => $this->owner
]);
}

if (null !== $sortOrder) {
$association->organizationOrder = $sortOrder;
}

if (!$association->save()) {
$this->owner->addError('organizations', 'Unable to associate organization.');

return false;
}

$this->resetOrganizations();

return true;
}

/**
* @param OrganizationQuery $query
* @return bool
Expand Down Expand Up @@ -363,6 +396,33 @@ public function associateOrganizations(OrganizationQuery $query): bool
return $success;
}

/**
* @param Organization $organization
* @return bool
* @throws \Throwable
* @throws \yii\db\StaleObjectException
*/
public function dissociateOrganization(Organization $organization): bool
{
if (null === ($association = UserAssociation::find()
->userId($this->owner->getId() ?: false)
->organizationId($organization->getId() ?: false)
->one())
) {
return true;
}

if (!$association->delete()) {
$this->owner->addError('organizations', 'Unable to dissociate organization.');

return false;
}

$this->resetOrganizations();

return true;
}

/**
* @param OrganizationQuery $query
* @return bool
Expand Down

0 comments on commit b0912fa

Please sign in to comment.