|
@@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
|
|
|
use App\Http\Requests\API\Folder\CreateRequest;
|
|
|
use App\Http\Requests\API\Folder\UpdateRequest;
|
|
|
use App\Http\Resources\API\FolderDetailResource;
|
|
|
+use App\Models\Enums\FolderObjectType;
|
|
|
use App\Models\Folder;
|
|
|
use App\Models\Library;
|
|
|
use Illuminate\Http\Request;
|
|
@@ -41,10 +42,16 @@ class FolderController extends Controller
|
|
|
*/
|
|
|
public function store(CreateRequest $request)
|
|
|
{
|
|
|
- $library = Library::query()->findOrFail($request->library_id);
|
|
|
+ $folderObjectType = FolderObjectType::from($request->object_type);
|
|
|
+
|
|
|
+ $object = $folderObjectType->modelBuilderAllowed()->findOrFail($request->object_id);
|
|
|
+
|
|
|
+ $objectWhere = [
|
|
|
+ 'object_type' => $folderObjectType->value, 'object_id' => $object->id
|
|
|
+ ];
|
|
|
|
|
|
$parentFolder = $request->parent_id > 0
|
|
|
- ? Folder::query()->where("library_id", $library->id)->findOrFail($request->parent_id)
|
|
|
+ ? Folder::query()->where($objectWhere)->findOrFail($request->parent_id)
|
|
|
: null;
|
|
|
|
|
|
$names = [];
|
|
@@ -63,7 +70,7 @@ class FolderController extends Controller
|
|
|
$isUpdate = isset($item['id']) && $item['id'];
|
|
|
|
|
|
$count = Folder::query()
|
|
|
- ->where("library_id", $library->id)
|
|
|
+ ->where($objectWhere)
|
|
|
->where("parent_id", $request->parent_id)
|
|
|
->when($isUpdate, function ($query) use ($item) {
|
|
|
return $query->where("id", "!=", $item['id']);
|
|
@@ -71,12 +78,12 @@ class FolderController extends Controller
|
|
|
->where("name", $item['name'])
|
|
|
->count();
|
|
|
if ($count > 0) {
|
|
|
- return $this->badRequest("Folder names must be unique");
|
|
|
+ return $this->badRequest(sprintf("Folder '%s' must be unique", $item['name']));
|
|
|
}
|
|
|
|
|
|
if ($isUpdate) {
|
|
|
$folder = Folder::query()
|
|
|
- ->where("library_id", $library->id)
|
|
|
+ ->where($objectWhere)
|
|
|
->where("parent_id", $request->parent_id)
|
|
|
->find($item['id']);
|
|
|
if (! $folder) {
|
|
@@ -101,7 +108,7 @@ class FolderController extends Controller
|
|
|
} else {
|
|
|
$folder = Folder::query()->create([
|
|
|
'company_id' => Auth::user()->company_id,
|
|
|
- 'library_id' => $library->id,
|
|
|
+ ...$objectWhere,
|
|
|
'parent_id' => $request->parent_id,
|
|
|
...$data
|
|
|
]);
|