public function _teams($from, $to, $action)
{
switch ($action) {
case static::ACT_CONVERT_TO_OBJECT:
/* @var $from Farm */
/* @var $team Team */
foreach ($from->getTeams() as $team) {
$to->teams[] = ['id' => $team->id];
}
break;
case static::ACT_CONVERT_TO_ENTITY:
/* @var $to Farm */
$newTeams = [];
$newTeamIds = [];
$user = $this->controller->getUser();
foreach ($from->teams as $teamFk) {
$team = new Team();
$team->id = ApiController::getBareId($teamFk);
$newTeams[] = $team;
$newTeamIds[] = $team->id;
}
$currentTeamIds = [];
foreach ($to->getTeams() as $team) {
$currentTeamIds[] = $team->id;
}
sort($newTeamIds);
sort($currentTeamIds);
if ($newTeamIds != $currentTeamIds) {
//filter out the Teams to which the User has no access
$teams = empty($newTeams) ? [] : Team::find([['id' => ['$in' => $newTeamIds]], ['accountId' => $user->getAccountId()]]);
if (count($teams) != count($newTeamIds)) {
throw new ApiErrorException(404, ErrorMessage::ERR_OBJECT_NOT_FOUND, "Requested Team(s) either does not exist or Farm has no access to it.");
}
$to->setTeams($newTeams);
}
break;
case static::ACT_GET_FILTER_CRITERIA:
$team = ApiController::getBareId($from, 'teams');
$farm = new Farm();
$farmTeam = new FarmTeam();
return [AbstractEntity::STMT_FROM => "\n JOIN {$farmTeam->table('ft')} ON {$farmTeam->columnFarmId('ft')} = {$farm->columnId()}\n AND {$farmTeam->columnTeamId('ft')} = " . $farmTeam->qstr('teamId', $team) . "\n "];
}
}