mirror of
https://github.com/Bigherollc/wticreatorstudio.git
synced 2026-09-29 12:13:06 -04:00
129 lines
3.5 KiB
PHP
129 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace Modules\WTIALaCarte\Http\Controllers;
|
|
|
|
use Illuminate\Contracts\Support\Renderable;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Modules\WTIALaCarte\Services\StripeService;
|
|
use Modules\WTIJobBoard\Services\JobRequestCategoriesService;
|
|
use Modules\WTIALaCarte\Entities\Alacarte;
|
|
|
|
class ALaCarteManageController extends Controller
|
|
{
|
|
private $stripe;
|
|
private $category;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->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);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|