diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php index 12fcb81d..c447759c 100644 --- a/app/Http/Controllers/CompanyController.php +++ b/app/Http/Controllers/CompanyController.php @@ -20,9 +20,9 @@ public function store(Request $request) public function show(Company $company) { // TASK: retrieve the full URL to the uploaded photo file, using Spatie Media Library - $photo = '???'; + + $photo = $company->getMedia('companies')[0]->getFullUrl(); return view('companies.show', compact('company', 'photo')); } - } diff --git a/app/Http/Controllers/HouseController.php b/app/Http/Controllers/HouseController.php index c330f8aa..c1686625 100644 --- a/app/Http/Controllers/HouseController.php +++ b/app/Http/Controllers/HouseController.php @@ -26,6 +26,10 @@ public function update(Request $request, House $house) // TASK: Delete the old file from the storage + // حذف الملف القديم من التخزين + + Storage::delete($house->photo); + $house->update([ 'name' => $request->name, 'photo' => $filename, @@ -38,5 +42,15 @@ public function download(House $house) { // TASK: Return the $house->photo file from "storage/app/houses" folder // for download in browser + $filePath = 'houses/' . $house->photo; + + // التحقق إذا كان الملف موجودًا + if (Storage::exists($filePath)) { + // إرجاع الملف ليتم تحميله عبر المتصفح + return Storage::download($filePath); + } + + // إذا لم يكن الملف موجودًا، إرجاع خطأ 404 + return abort(404, 'File not found'); } } diff --git a/app/Http/Controllers/OfficeController.php b/app/Http/Controllers/OfficeController.php index fae443fa..2abaf6c5 100644 --- a/app/Http/Controllers/OfficeController.php +++ b/app/Http/Controllers/OfficeController.php @@ -9,14 +9,21 @@ class OfficeController extends Controller { public function store(Request $request) { + // التحقق من وجود الملف في الطلب + $request->validate([ + 'photo' => 'required|file|max:1024', // التحقق من أن الملف موجود ولا يتجاوز 1 ميجابايت + ]); + + // الحصول على اسم الملف الأصلي $filename = $request->file('photo')->getClientOriginalName(); - // TASK: Upload the file "photo" so it would be written as - // storage/app/public/offices/[original_filename] + // رفع الملف إلى المجلد 'public/offices' وتخزينه مع الاسم الأصلي + $path = $request->file('photo')->storeAs('public/offices', $filename); + // إنشاء السجل الجديد في قاعدة البيانات Office::create([ 'name' => $request->name, - 'photo' => $filename, + 'photo' => $filename, // حفظ اسم الملف في قاعدة البيانات ]); return 'Success'; @@ -26,5 +33,4 @@ public function show(Office $office) { return view('offices.show', compact('office')); } - } diff --git a/app/Http/Controllers/ProjectController.php b/app/Http/Controllers/ProjectController.php index 95aed4f8..4724e6e0 100644 --- a/app/Http/Controllers/ProjectController.php +++ b/app/Http/Controllers/ProjectController.php @@ -4,6 +4,7 @@ use App\Models\Project; use Illuminate\Http\Request; +use Illuminate\Validation\Rules\File; class ProjectController extends Controller { @@ -11,11 +12,12 @@ public function store(Request $request) { $request->validate([ // TASK: Write the validation rule so "logo" file would be MAX 1 megabyte + 'logo' => [File::image()->max(1024)] ]); // TASK: change the below line so that $filename would contain only filename // The same filename as the original uploaded file - $filename = '???'; + $filename = $request->logo->getClientOriginalName(); $request->file('logo')->storeAs('logos', $filename); Project::create([ diff --git a/app/Http/Controllers/ShopController.php b/app/Http/Controllers/ShopController.php index b2c485a3..1c2169fc 100644 --- a/app/Http/Controllers/ShopController.php +++ b/app/Http/Controllers/ShopController.php @@ -9,12 +9,21 @@ class ShopController extends Controller { public function store(Request $request) { + // 1. الحصول على اسم الملف الأصلي $filename = $request->file('photo')->getClientOriginalName(); + + // 2. رفع الصورة إلى المجلد 'shops' $request->file('photo')->storeAs('shops', $filename); - // TASK: resize the uploaded image from /storage/app/shops/$filename - // to size of 500x500 and store it as /storage/app/shops/resized-$filename - // Use intervention/image package, it's already pre-installed for you + // 3. تغيير حجم الصورة باستخدام Intervention Image + $image = Image::make(storage_path('app/shops/' . $filename)); // تحميل الصورة من المسار + + // 4. تغيير الحجم إلى 500x500 بيكسل + $image->resize(500, 500); + + // 5. حفظ الصورة المعدلة باسم جديد (resized-{$filename}) + $resizedFilename = 'resized-' . $filename; + $image->save(storage_path('app/shops/' . $resizedFilename)); // حفظ الصورة المعدلة في المجلد نفسه return 'Success'; }