object_type); $object = $objectType->modelBuilderAllowed($request->object_id)->findOrFail($request->object_id); $objectFields = [ 'object_type' => ShareFileObjectType::CONTAINER->value, 'object_id' => $object->id, ]; // $shareFile = ShareFile::query()->where($objectFields)->first(); // if ($shareFile) { // return $this->badRequest("Please do not re-share"); // } $files = File::query()->where($objectFields)->whereIn("id", $request->file_ids)->pluck("id"); if (! $files) { return $this->badRequest("Please select the file you want to share"); } $expirationTime = match ($request->expiration_time) { 0 => null, 1 => Carbon::now()->addDay(), 2 => Carbon::now()->addWeek(), 3 => Carbon::now()->addMonth(), }; $createShareFile=ShareFile::query()->create([ ...$request->all(), 'created_by' => Auth::id(), 'uuid' => Uuid::uuid4(), 'files' => $files->toArray(), 'expiration_time' => $expirationTime, ]); return $this->created([ 'share_uuid' => $createShareFile->uuid ]); } public function byObject(string $objectType, string $objectId) { $objectType = ShareFileObjectType::from($objectType); $object = $objectType->modelBuilderAllowed($objectId)->findOrFail($objectId); $objectFields = [ 'object_type' => ShareFileObjectType::CONTAINER->value, 'object_id' => $object->id, ]; $shareFile = ShareFile::query()->where($objectFields)->first(); return new ShareFileByObjectResource($shareFile); } public function destroy(string $id) { $shareFile = ShareFile::query()->findOrFail($id); $objectType = ShareFileObjectType::from($shareFile->object_type); $objectType->modelBuilderAllowed($shareFile->object_id)->findOrFail($shareFile->object_id); $shareFile->delete(); return $this->noContent(); } }