configuration = $configuration; } protected function getUsers(): array { $users = parent::getUsers(); // nafetchovat dodatecna data pro pompo if ($this->configuration->isPompo()) { $this->fetchUsersCards($users); $this->fetchUsersChildren($users); $this->fetchUserDRSId($users); } return $users; } protected function getCustomFields(array &$user) { $customFields = parent::getCustomFields($user); foreach ($user['cards'] ?? [] as $i => $card) { $customFields['card_code_'.$i] = ['key' => 'card', 'group' => 'card'.$i, 'value' => $card['code']]; $customFields['card_isActive_'.$i] = ['key' => 'isActive', 'group' => 'card'.$i, 'value' => $card['active']]; } foreach ($user['children'] ?? [] as $i => $child) { try { $birthdate = (new \DateTime($child['date_birth']))->format('Y-m-d'); } catch (\Throwable $e) { $birthdate = ''; } $customFields['child_name_'.$i] = ['key' => 'name', 'group' => 'child'.$i, 'value' => $child['name']]; $customFields['child_birthday_'.$i] = ['key' => 'birthday', 'group' => 'child'.$i, 'value' => $birthdate]; $customFields['child_gender_'.$i] = ['key' => 'gender', 'group' => 'child'.$i, 'value' => $child['gender']]; } $customFields['pompoId'] = ['key' => 'pompoId', 'value' => $user['pompoId'] ?? null]; unset($user['cards'], $user['children'], $user['pompoId']); return $customFields; } /** * Nafetchuje deti k uzivatelum. */ private function fetchUsersChildren(array &$users): void { $userIds = array_map(function ($x) { return $x['id']; }, $users); $qb = sqlQueryBuilder() ->select('id_user, name, gender, date_birth') ->from('users_family') ->where(Operator::inIntArray($userIds, 'id_user')); $children = []; foreach ($qb->execute() as $item) { $children[$item['id_user']][] = $item; } foreach ($users as &$user) { $user['children'] = $children[$user['id']] ?? []; } } /** * Nafetchuje zakaznicke karty k uzivatelum. */ private function fetchUsersCards(array &$users): void { $userIds = array_map(function ($x) { return $x['id']; }, $users); $qb = sqlQueryBuilder() ->select('id_user, code, active') ->from('user_cards') ->where(Operator::inIntArray($userIds, 'id_user')); $cards = []; foreach ($qb->execute() as $item) { $cards[$item['id_user']][] = $item; } foreach ($users as &$user) { $user['cards'] = $cards[$user['id']] ?? []; } } /** * Nafetchuje cislo zakaznika (id_drs). */ private function fetchUserDRSId(array &$users): void { $userIds = array_map(function ($x) { return $x['id']; }, $users); $qb = sqlQueryBuilder() ->select('id_drs, id_user') ->from('drs_users') ->where(Operator::inIntArray($userIds, 'id_user')); $pompoIds = []; foreach ($qb->execute() as $item) { $pompoIds[$item['id_user']] = $item['id_drs']; } foreach ($users as &$user) { $user['pompoId'] = $pompoIds[$user['id']] ?? null; } } }