From 80bcdfe9ea8baa2ef7004c5ea57cdb93982ec81c Mon Sep 17 00:00:00 2001 From: mahdi purHosseini Date: Sat, 9 Dec 2023 19:23:17 +0330 Subject: [PATCH] fix migrations --- app/Services/Media/MediaHelper.php | 108 ++++++++++++++++++----------- 1 file changed, 68 insertions(+), 40 deletions(-) diff --git a/app/Services/Media/MediaHelper.php b/app/Services/Media/MediaHelper.php index 3cd5b49e..1db75fff 100644 --- a/app/Services/Media/MediaHelper.php +++ b/app/Services/Media/MediaHelper.php @@ -3,56 +3,84 @@ namespace App\Services\Media; use App\FakeModel; +use Illuminate\Database\Eloquent\Model; class MediaHelper { - public static function moveMediaTo($model) - { + public static function moveMediaTo($model) { + request()->validate([ - 'batch_id' => 'nullable|string', + 'file_batch_id' => 'nullable|string', ]); - if ($fakeModel = FakeModel::where('batch_id', request('batch_id'))->first()) { - foreach ($fakeModel->getMedia('temp_medias') as $media) { - $media->move($model , 'main_images'); + if ($fakeModel = FakeModel::where('batch_id', request('file_batch_id'))->first()) { + foreach($fakeModel->getMedia('temp_files') as $media) { + if(substr($media->mime_type, 0, 5) == 'image') { + $media->move($model, 'images'); + } else { + $media->move($model, 'files'); + } } $fakeModel->delete(); } } -// public static function moveTinyMCEMediaTo($model) -// { -// -// request()->validate([ -// 'tinymce_batch_id' => 'nullable|string', -// ]); -// -// if ($fakeModel = FakeModel::where('batch_id', request('tinymce_batch_id'))->first()) { -// foreach ($fakeModel->getMedia('temp_files') as $media) { -// if (substr($media->mime_type, 0, 5) == 'image') { -// $media->assign($model, 'tinymce_images'); -// } else { -// $media->assign($model, 'tinymce_files'); -// } -// } -// $fakeModel->delete(); -// } -// -// } -// -// public static function loadMedia($model, ...$collections) -// { -// $model->loadMissing(['media' => function ($query) use ($collections) { -// $query->select('id', 'model_type', 'model_id', 'collection_name', 'file_name', 'mime_type', 'size', 'disk', 'order_column'); -// if (!empty($collections)) { -// $query->whereIn('collection_name', $collections); -// } -// }]); -// if ($model->media) { -// foreach ($model->media as $media) { -// $media->address = $media->getUrl(); -// } -// } -// } + public static function storeMediaFor(Model $model, string $batchId = null) + { + if (is_null($batchId)) { + $batchId = request()->input('file_batch_id'); + } + + $modelName = self::getNamespaceMap($model); + + if ($fakeModel = FakeModel::where('batch_id', $batchId)->where('model_name', $modelName)->first()) { + + foreach($fakeModel->media()->get() as $media) { + $media->move($model, $media->collection_name); + } + + $fakeModel->delete(); + + } + + } + + private static function getNamespaceMap(Model $model) + { + return $model->getMorphClass(); + } + + public static function moveTinyMCEMediaTo($model) { + + request()->validate([ + 'tinymce_batch_id' => 'nullable|string', + ]); + + if ($fakeModel = FakeModel::where('batch_id', request('tinymce_batch_id'))->first()) { + foreach($fakeModel->getMedia('temp_files') as $media) { + if(substr($media->mime_type, 0, 5) == 'image') { + $media->assign($model, 'tinymce_images'); + } else { + $media->assign($model, 'tinymce_files'); + } + } + $fakeModel->delete(); + } + + } + + public static function loadMedia($model, ...$collections) { + $model->loadMissing(['media' => function($query) use ($collections) { + $query->select('*'); + if (! empty($collections)) { + $query->whereIn('collection_name', $collections); + } + }]); + if ($model->media) { + foreach ($model->media as $media) { + $media->address = $media->getUrl(); + } + } + } }