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', $request->getOrigin()); 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); /** @var Profile $isInDb */ $isInDb = ProfileMapper::getFor($account, 'account'); if ($isInDb->getId() !== 0) { $profiles[] = $isInDb; continue; } $profiles[] = new Profile(AccountMapper::get($account)); } return $profiles; } /** * Routing end-point for application behaviour. * * @param RequestAbstract $request Request * @param ResponseAbstract $response Response * @param mixed $data Generic data * * @return void * * @api * * @since 1.0.0 */ public function apiSettingsAccountImageSet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void { $uploadedFiles = $request->getFiles() ?? []; if (empty($uploadedFiles)) { return; } /** @var Profile $profile */ $profile = ProfileMapper::getFor($request->getHeader()->getAccount(), 'account'); $old = clone $profile; $uploaded = $this->app->moduleManager->get('Media')->uploadFiles( $request->getData('name') ?? '', $uploadedFiles, $request->getHeader()->getAccount(), 'Modules/Media/Files', '/Accounts/' . $request->getHeader()->getAccount() ); $profile->setImage(\reset($uploaded)); $this->updateModel($request->getHeader()->getAccount(), $old, $profile, ProfileMapper::class, 'profile', $request->getOrigin()); $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Profile', 'Profile successfully updated', $profile); } }