repository = $repository; } /** * Handles updating the state of a backup. * * @param \Pterodactyl\Http\Requests\Api\Remote\ReportBackupCompleteRequest $request * @param string $backup * @return \Illuminate\Http\JsonResponse * * @throws \Pterodactyl\Exceptions\Repository\RecordNotFoundException */ public function __invoke(ReportBackupCompleteRequest $request, string $backup) { /** @var \Pterodactyl\Models\Backup $model */ $model = $this->repository->findFirstWhere([[ 'uuid', '=', $backup ]]); if (!is_null($model->completed_at)) { throw new BadRequestHttpException( 'Cannot update the status of a backup that is already marked as completed.' ); } $model->update([ 'is_successful' => $request->input('successful') ? true : false, 'checksum' => $request->input('checksum_type') . ':' . $request->input('checksum'), 'bytes' => $request->input('size'), 'completed_at' => CarbonImmutable::now(), ]); return new JsonResponse([], JsonResponse::HTTP_NO_CONTENT); } }