createProfilesFromRequest($request); $created = []; $status = true; foreach ($profiles as $profile) { $status = $status && $this->apiProfileCreateDbEntry($profile, $request); $created[] = $profile; } $this->fillJsonResponse( $request, $response, $status ? NotificationLevel::OK : NotificationLevel::WARNING, 'Profil', $status ? 'Profil successfully created.' : 'Profile already existing.', $created ); } /** * @param Profile $profile Profile to create in the database * @param RequestAbstract $request Request * * @return bool * * @since 1.0.0 */ public function apiProfileCreateDbEntry(Profile $profile, RequestAbstract $request) : bool { if ($profile->getId() !== 0) { return false; } $this->createModel($request->getHeader()->getAccount(), $profile, ProfileMapper::class, 'profile'); return true; } /** * Method to create profile from request. * * @param RequestAbstract $request Request * * @return array * * @since 1.0.0 */ private function createProfilesFromRequest(RequestAbstract $request) : array { $profiles = []; $accounts = $request->getDataList('iaccount-idlist'); foreach ($accounts as $account) { $account = (int) \trim($account); $isInDb = ProfileMapper::getFor($account, 'account'); if ($isInDb->getId() !== 0) { $profiles[] = $isInDb; continue; } $profiles[] = new Profile(AccountMapper::get($account)); } return $profiles; } }