fix pictures

This commit is contained in:
2026-06-29 19:58:06 +03:30
parent 8fc71a1281
commit c177bdbb22
6 changed files with 72 additions and 31 deletions
+15 -12
View File
@@ -30,27 +30,30 @@ class FileController extends Controller
public function store(Request $request) public function store(Request $request)
{ {
// Store FIle in Public Storage By Date
// Date Sample is : <Year>/<Month>/<Day> of today
$data = $request->all();
$path = $this->createDir();
$uploaded = $request->file('file'); $uploaded = $request->file('file');
if (! $uploaded || ! $uploaded->isValid()) {
return response()->json(['message' => 'فایل بارگذاری نشد یا خالی است'], 422);
}
$path = $this->createDir();
$data = $request->all();
$data['original_name'] = $uploaded->getClientOriginalName(); $data['original_name'] = $uploaded->getClientOriginalName();
$data['ext'] = $uploaded->getClientOriginalExtension(); $data['ext'] = $uploaded->getClientOriginalExtension()
if (!isset($data['title']) || is_null($data['title'])) { ?: $uploaded->extension()
?: 'jpg';
if (! isset($data['title']) || is_null($data['title'])) {
$data['title'] = $data['original_name']; $data['title'] = $data['original_name'];
} }
$file_name_src = md5(time() . $data['original_name']); $file_name_src = md5(time().$data['original_name']);
$file_name = $file_name_src . '.' . $data['ext']; $file_name = $file_name_src.'.'.$data['ext'];
$data['has_thumb'] = false; $data['has_thumb'] = false;
$data['size'] = $uploaded->getSize(); $data['size'] = $uploaded->getSize();
Storage::disk('public')->putFileAs($path, $uploaded, $file_name); Storage::disk('public')->putFileAs($path, $uploaded, $file_name);
$data['src'] = 'storage/' . $path . '/' . $file_name; $data['src'] = 'storage/'.$path.'/'.$file_name;
// $data['size'] = $file->getSize();
$data['user_id'] = auth()->id(); $data['user_id'] = auth()->id();
$data['sts'] = 1; $data['sts'] = 1;
$file_create = File::create($data); $file_create = File::create($data);
return response()->json($file_create);
return response()->json($file_create->fresh());
} }
} }
@@ -295,7 +295,7 @@ class GiftCardController extends Controller
]); ]);
} }
private function applyDiscount(string $code, $customerId): array public function applyDiscount(string $code, $customerId): array
{ {
$giftcode = $this->verifyDiscount($code); $giftcode = $this->verifyDiscount($code);
if (! empty($giftcode['message'])) { if (! empty($giftcode['message'])) {
@@ -276,12 +276,15 @@ class CartController extends Controller
$data['total_price'] = $total_price; $data['total_price'] = $total_price;
//مقدار قابل پرداخت //مقدار قابل پرداخت
$data['payment_amount'] = $data['total_price']; $data['payment_amount'] = $data['total_price'];
if(!empty($data[0]['discount_code'])){ if (!empty($data[0]['discount_code'])) {
$discount = new GiftCardController(); $discountCtrl = app(GiftCardController::class);
$discount = $discount->useDiscount($data[0]['discount_code'], $data['customer_id']); $discountResult = $discountCtrl->applyDiscount((string) $data[0]['discount_code'], $data['customer_id']);
if (!empty($discountResult['message'])) {
throw new UnprocessableEntityHttpException($discountResult['message']);
}
$data['discount'] = true; $data['discount'] = true;
if(!empty($discount['amount'])){ if (!empty($discountResult['amount'])) {
$data['payment_amount'] = $data['total_price'] = $data['total_price'] - ($data['total_price'] * (float)$discount['amount']); $data['payment_amount'] = $data['total_price'] = $data['total_price'] - ($data['total_price'] * (float) $discountResult['amount']);
} }
} }
$data['cart_id'] = (int)$cart->id; $data['cart_id'] = (int)$cart->id;
@@ -407,11 +410,14 @@ class CartController extends Controller
]; ];
if (!empty($payload[0]['discount_code'])) { if (!empty($payload[0]['discount_code'])) {
$discount = new GiftCardController(); $discountCtrl = app(GiftCardController::class);
$discount = $discount->useDiscount($payload[0]['discount_code'], $customerId); $discountResult = $discountCtrl->applyDiscount((string) $payload[0]['discount_code'], $customerId);
if (!empty($discount['amount'])) { if (!empty($discountResult['message'])) {
throw new UnprocessableEntityHttpException($discountResult['message']);
}
if (!empty($discountResult['amount'])) {
$orderData['payment_amount'] = $orderData['total_price'] = $orderData['payment_amount'] = $orderData['total_price'] =
$orderData['total_price'] - ($orderData['total_price'] * (float) $discount['amount']); $orderData['total_price'] - ($orderData['total_price'] * (float) $discountResult['amount']);
} }
} }
@@ -78,7 +78,7 @@ class ProductController extends SuperController
]); ]);
if ($product->relationLoaded('file') && $product->file) { if ($product->relationLoaded('file') && $product->file) {
$product->file->setAttribute('full_src', $product->file->src); $product->file->setAttribute('full_src', File::publicUrl($product->file->getAttributes()['src'] ?? null));
} }
if ($representativeId !== null && (int) $product->id === $representativeId) { if ($representativeId !== null && (int) $product->id === $representativeId) {
+37 -5
View File
@@ -5,12 +5,12 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use App\Models\Setting;
class File extends Model class File extends Model
{ {
use HasFactory; use HasFactory;
use Selector; use Selector;
protected $fillable = [ protected $fillable = [
'original_name', 'original_name',
'title', 'title',
@@ -22,11 +22,43 @@ class File extends Model
'has_thumb', 'has_thumb',
'url', 'url',
]; ];
protected $casts = [ protected $casts = [
"has_thumb"=>"boolean" 'has_thumb' => 'boolean',
]; ];
public function getSrcAttribute(){
return env('domain').$this->attributes['src']; protected $appends = [
// return url($this->attributes['src']); 'full_src',
];
/**
* مسیر نسبی ذخیره‌شده در DB — بدون پیشوند دامنه.
*/
public function getSrcAttribute(): ?string
{
return $this->attributes['src'] ?? null;
}
/**
* URL کامل قابل نمایش در مرورگر (بر اساس APP_URL و symlink storage).
*/
public function getFullSrcAttribute(): ?string
{
return self::publicUrl($this->attributes['src'] ?? null);
}
public static function publicUrl(?string $path): ?string
{
if ($path === null || trim($path) === '') {
return null;
}
$trimmed = trim($path);
if (preg_match('/^https?:\/\//i', $trimmed)) {
return $trimmed;
}
return asset(ltrim($trimmed, '/'));
} }
} }
+3 -3
View File
@@ -646,12 +646,12 @@ class AssetSummaryService
} }
$fileModel = $product->file; $fileModel = $product->file;
$src = (string) ($fileModel->src ?? ''); $relativeSrc = (string) ($fileModel->getAttributes()['src'] ?? '');
return [ return [
'id' => $fileModel->id, 'id' => $fileModel->id,
'src' => $src, 'src' => $relativeSrc,
'full_src' => $src, 'full_src' => \App\Models\File::publicUrl($relativeSrc),
'url' => $fileModel->url ?? null, 'url' => $fileModel->url ?? null,
]; ];
} }