stripe = new StripeService(); $this->category = new JobRequestCategoriesService(); } public function manage() { new \Modules\WTIALaCarte\Services\AugmentationService(); return view('wtialacarte::manage'); } public function all(Request $request) { $products = Alacarte::latest()->where('status',1)->get(); return response()->json([ 'products' => $products ]); } public function store(Request $request){ try { $data = $request->validate([ 'name' => ['required'], 'description' => ['required'], 'price' => ['required'], 'credits' => ['required'], 'image' => ['required', 'image'] ]); $data['image'] = $request->file('image')->store('al-a-carte','public'); $stripeResponse = $this->stripe->createProduct($data); $data['stripe_product_id'] = $stripeResponse['id']; $data['stripe_price_id'] = $stripeResponse['default_price']; Alacarte::create($data); return response()->json([ 'message' => 'Àl a carte successfully created' ]); } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage() ], 500); } } public function update(Request $request, Alacarte $alacarte){ try { $data = $request->validate([ 'name' => ['required'], 'description' => ['required'], 'price' => ['required'], 'credits' => ['required'], 'image' => ['nullable', 'image'] ]); if ($request->image) { if(\Storage::exists($alacarte->image)){ \Storage::delete($alacarte->image); } $data['image'] = $request->file('image')->store('al-a-carte','public'); } $stripeResponse = $this->stripe->updateProduct($alacarte,$data); if($alacarte->price != (float)$data['price']){ $this->stripe->archivePrice($alacarte->stripe_price_id); $data['stripe_price_id'] = $stripeResponse['default_price']; } $alacarte->update($data); return response()->json([ 'message' => 'Àl a carte successfully created' ]); } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage() ], 500); } } public function delete(Alacarte $alacarte) { try { $this->stripe->archiveProduct($alacarte->stripe_product_id); $alacarte->update(['status' => 0]); return response()->json([ 'message' => 'Àl a carte successfully deleted' ]); } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage() ], 500); } } }