feat: add content showcase feature to rate card profiles with PDF rendering support
This commit is contained in:
@@ -103,7 +103,8 @@ class RateCardController extends Controller
|
||||
public function profilePage(): View
|
||||
{
|
||||
$profile = RateCardProfile::getSingleton();
|
||||
return view('rate-cards.profile', compact('profile'));
|
||||
$mediaFiles = \App\Models\MediaFile::latest()->get();
|
||||
return view('rate-cards.profile', compact('profile', 'mediaFiles'));
|
||||
}
|
||||
|
||||
public function profileUpdate(Request $request): RedirectResponse
|
||||
@@ -125,6 +126,11 @@ class RateCardController extends Controller
|
||||
'brand_logo_size' => 'nullable|in:small,medium,large',
|
||||
'contact_person_html' => 'nullable|string',
|
||||
'logo' => 'nullable|image|max:2048',
|
||||
'content_showcase' => 'nullable|array',
|
||||
'content_showcase.*.file_id' => 'required_with:content_showcase|string',
|
||||
'content_showcase.*.name' => 'required_with:content_showcase|string|max:255',
|
||||
'content_showcase.*.url' => 'nullable|url',
|
||||
'content_showcase.*.thumbnail_path' => 'nullable|string',
|
||||
]);
|
||||
|
||||
$profile = RateCardProfile::getSingleton();
|
||||
@@ -135,6 +141,7 @@ class RateCardController extends Controller
|
||||
}
|
||||
|
||||
$validated['show_prices'] = $request->has('show_prices');
|
||||
$validated['content_showcase'] = $request->input('content_showcase', []);
|
||||
unset($validated['logo']);
|
||||
|
||||
$profile->update($validated);
|
||||
@@ -221,6 +228,17 @@ class RateCardController extends Controller
|
||||
|
||||
// ── PDF Download ─────────────────────────────────────────────
|
||||
|
||||
public function uploadShowcaseThumbnail(Request $request)
|
||||
{
|
||||
$request->validate(['thumbnail' => 'required|image|max:2048']);
|
||||
$path = $request->file('thumbnail')->store('showcase', 'public');
|
||||
|
||||
return response()->json([
|
||||
'path' => $path,
|
||||
'url' => asset('storage/' . $path)
|
||||
]);
|
||||
}
|
||||
|
||||
public function pdf(): \Illuminate\Http\Response
|
||||
{
|
||||
$profile = RateCardProfile::getSingleton();
|
||||
|
||||
@@ -17,11 +17,13 @@ class RateCardProfile extends Model
|
||||
'past_brands',
|
||||
'brand_logo_size',
|
||||
'contact_person_html',
|
||||
'content_showcase',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
'show_prices' => 'boolean',
|
||||
'past_brands' => 'array',
|
||||
'content_showcase' => 'array',
|
||||
];
|
||||
|
||||
/** Get the singleton profile, creating defaults if needed */
|
||||
|
||||
Reference in New Issue
Block a user