all(), 'company_id' => Auth::user()->company_id, 'created_by' => Auth::id(), 'whitelist' => $request->whitelist ? sprintf(",%s,", implode(',', $request->whitelist)) : null, ]; if ($request->has("naming_rule_id") && $request->get("naming_rule_id") > 0) { $keys = $customFieldRepo->keysByGroup($request->get("naming_rule_id")); $formData['naming_rules'] = $request->only($keys); } $container = new Container(); $container->mergeFillable(['company_id']); $container->fill($formData); $container->save(); ActionRepository::createByContainer($container, ObjectAction::CREATED); $service->association( $request->get("file_ids", []), $container->id, FileObjectType::CONTAINER ); $files = File::query()->where('object_id', $container->id) ->where('object_type', ActionObjectType::CONTAINER) ->where('source', 1) ->pluck("id"); $contentFormData = [ 'description' => $imageUrlService->interceptImageUrl($request->description), 'container_id' => $container->id, 'created_by' => Auth::id(), 'name' => $request->name, 'files' => $files->implode(",") ?: null ]; ContainerContent::query()->create($contentFormData); return $this->created(); } /** * Display the specified resource. */ public function show(string $id) { $container = Container::query()->allowed() ->when(\request("version") > 0, fn($query) => $query->where("version", ">=", \request("version"))) ->findOrFail($id); return new ContainerDetailResource($container); } /** * Update the specified resource in storage. */ public function update( CreateOrUpdateRequest $request, ImageUrlService $imageUrlService, FileAssociationService $service, CustomFieldRepository $customFieldRepo, string $id ) { $container = Container::query()->allowed()->findOrFail($id); $formData = [ ...$request->all(), 'whitelist' => $request->whitelist ? sprintf(",%s,", implode(',', $request->whitelist)) : null, 'description' => $imageUrlService->interceptImageUrl($request->description) , ]; if ($request->has("naming_rule_id") && $request->get("naming_rule_id") > 0) { $keys = $customFieldRepo->keysByGroup($request->get("naming_rule_id")); $formData['naming_rules'] = $request->only($keys); } $container->fill($formData); $changes = ModelChangeDetector::detector(ActionObjectType::CONTAINER, $container); $container->save(); ActionRepository::createByContainer($container, ObjectAction::EDITED, objectChanges: $changes); return $this->noContent(); } /** * Remove the specified resource from storage. */ public function destroy(string $id) { $container = Container::query()->allowed()->findOrFail($id); $container->delete(); ActionRepository::createByContainer($container, ObjectAction::DELETED); return $this->noContent(); } }