trash api update

This commit is contained in:
Čarodej
2022-05-03 07:47:54 +02:00
parent 4f9fb3991c
commit 0f42704980
6 changed files with 111 additions and 94 deletions

View File

@@ -2,57 +2,54 @@
namespace Domain\Trash\Controllers;
use Domain\Files\Models\File;
use Illuminate\Http\Response;
use Illuminate\Http\JsonResponse;
use Domain\Folders\Models\Folder;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
class DumpTrashController extends Controller
{
public function __invoke(): Response
public function __invoke(): JsonResponse
{
abort_if(
is_demo_account(),
204,
'Done.'
);
$successMessage = [
'type' => 'success',
'message' => 'The trash was successfully dumped.',
];
$user_id = Auth::id();
// Get files and folders
$folders = Folder::onlyTrashed()
->where('user_id', $user_id)
->get();
$files = File::onlyTrashed()
->where('user_id', $user_id)
->get();
// Force delete folder
$folders->each->forceDelete();
// Force delete files
foreach ($files as $file) {
// Delete file
Storage::delete("/files/$user_id/{$file->basename}");
// Delete thumbnail if exist
if ($file->thumbnail) {
collect([
config('vuefilemanager.image_sizes.later'),
config('vuefilemanager.image_sizes.immediately'),
])->collapse()
->each(function ($size) use ($file) {
Storage::delete("/files/$file->user_id/{$size['name']}-{$file->basename}");
});
}
// Delete file permanently
$file->forceDelete();
if (is_demo_account()) {
return response()->json($successMessage);
}
// Delete folders
Folder::onlyTrashed()
->where('user_id', auth()->id())
->cursor()
->each(fn($folder) => $folder->forceDelete());
// Delete files
File::onlyTrashed()
->where('user_id', auth()->id())
->cursor()
->each(function ($file) {
// Delete file
Storage::delete("/files/$file->user_id/$file->basename");
// Delete thumbnail if exist
if ($file->thumbnail) {
collect([
config('vuefilemanager.image_sizes.later'),
config('vuefilemanager.image_sizes.immediately'),
])->collapse()
->each(function ($size) use ($file) {
Storage::delete("/files/$file->user_id/{$size['name']}-$file->basename");
});
}
// Delete file permanently
$file->forceDelete();
});
// Return response
return response('Done.', 204);
return response()->json($successMessage);
}
}