fix some problems

This commit is contained in:
mahdi purHosseini
2023-12-07 10:00:19 +03:30
parent dc019fec75
commit 1ad766d699
62 changed files with 2160 additions and 1244 deletions
+21
View File
@@ -0,0 +1,21 @@
<?php
namespace App\Services\Media;
use Spatie\MediaLibrary\HasMedia\HasMediaTrait as BasicHasMedia;
use Spatie\MediaLibrary\Models\Media;
trait HasMediaTrait
{
use BasicHasMedia;
public function main_image()
{
return $this->morphOne(Media::class, 'model')->where('collection_name', 'main_image');
}
public function main_images()
{
return $this->morphMany(Media::class, 'model')->where('collection_name', 'main_images');
}
}
+24
View File
@@ -0,0 +1,24 @@
<?php
namespace App\Services\Media;
use Spatie\MediaLibrary\Models\Media as BaseMedia;
class Media extends BaseMedia
{
public function getTable()
{
return config('common.db_name') . '.media';
}
public function getThumbnailAddressAttribute()
{
return $this->getUrl('thumbnail');
}
public function assign($model, $collectionName)
{
$this->collection_name = $collectionName;
$model->media()->save($this);
}
}
+58
View File
@@ -0,0 +1,58 @@
<?php
namespace App\Services\Media;
use App\FakeModel;
class MediaHelper
{
public static function moveMediaTo($model)
{
request()->validate([
'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');
}
$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();
// }
// }
// }
}
@@ -0,0 +1,26 @@
<?php
namespace App\Services\Media\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class MediaResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'collection_name' => $this->collection_name,
'thumbnail' => $this->getUrl('thumbnail'),
'mime_type' => $this->mime_type,
'file_name' => $this->file_name,
'size' => $this->size,
];
}
}