create( $data->toArray() ); $this->permissionService->add(ConnectedAppData::from($connectedApp), ConnectedAppPermissonEnum::Use); } ); } /** * @throws InvalidArgumentException when id is invalid * @throws Throwable when an error occurs during the update. */ public function update(int $id, ConnectAppRequest $data): void { if ($id <= 0) { throw new InvalidArgumentException('Invalid id'); } DB::transaction( function () use ($id, $data): void { $app = ConnectedApp::query()->findOrFail($id); $app->update($data->toArray()); } ); } /** * @throws Throwable when an error occurs during the deletion. * @throws InvalidArgumentException when id is invalid */ public function delete(int $id): void { if ($id <= 0) { throw new InvalidArgumentException('Invalid id'); } DB::transaction( function () use ($id): void { $app = ConnectedApp::query()->findOrFail($id); $app->delete(); } ); } /** * @return PaginatedDataCollection */ public function getAll(): PaginatedDataCollection { $data = ConnectedApp::with('provider:name,id', 'protocol:id,name', 'status:id,name') ->paginate(); return UiConnectedAppData::collect($data, PaginatedDataCollection::class); } /** * @throws ModelNotFoundException when the connected app is not found. * @throws InvalidArgumentException when id is invalid. */ public function getConnectedApp(int $id): ConnectedAppData { if ($id <= 0) { throw new InvalidArgumentException('Invalid id'); } $data = ConnectedApp::with('provider:id', 'protocol:id', 'status:id') ->findOrFail($id); return ConnectedAppData::from($data); } }