with('categories', DealCategory::all('id', 'name')); } /** * Store a newly created resource in storage. */ public function store(StoreBrokerDeal $request) { $data = $request->validated(); $data['slug'] = Str::slug($data['title']); $data['user_id'] = $request->user()->id; $path = ''; if ($request->hasFile('image')) { $image = $request->file('image'); $path = $image->storeAs('images/deals', $data['slug'].'.'.$image->extension(), 'public'); } $data['image'] = $path; Deal::unguard(); Deal::create($data); Deal::reguard(); return to_route('broker.dashboard')->with('success', 'Deal has been created.'); } /** * Display the specified resource. */ public function show(string $id) { // } /** * Show the form for editing the specified resource. */ public function edit(Deal $deal) { return view('dashboards.broker.deals.edit') ->with('deal', $deal) ->with('categories', DealCategory::all('id', 'name')); } /** * Update the specified resource in storage. */ public function update(StoreBrokerDeal $request, Deal $deal, FileService $fileService) { $data = $request->validated(); try { DB::transaction(function () use ($deal, $data, $fileService, $request) { $data['slug'] = Str::slug($data['title']); if ($request->hasFile('image')) { $image = $request->file('image'); $data['image'] = $fileService->upload($image, 'images/deals', $data['slug'].'.'.$image->extension()); } Deal::unguard(); $deal->update($data); Deal::reguard(); }); } catch (\Throwable $exception) { Log::error($exception->getMessage(), $exception->getTrace()); return to_route('broker.dashboard')->with('error', 'Something gone wrong.'); } return to_route('broker.dashboard')->with('success', 'Deal has been updated.'); } /** * Remove the specified resource from storage. */ public function destroy(Deal $deal, FileService $fileService) { // remove the image of deal try { DB::transaction(function () use ($deal, $fileService) { $fileService->delete($deal->image); $deal->delete(); }); } catch (\Throwable $exception) { Log::error($exception->getMessage(), $exception->getTrace()); return to_route('broker.dashboard')->with('error', 'Something gone wrong.'); } return to_route('broker.dashboard')->with('success', 'Deal has been deleted.'); } }