Untitled
unknown
plain_text
9 months ago
4.1 kB
10
Indexable
<?php
namespace App\Http\Controllers\API;
use App\Http\Controllers\Controller;
use App\Models\Product;
use Illuminate\Http\Request;
class ProductController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index(Request $request)
{
$products = Product::with('category')->when($request->status, function($query)use($request){
$query->where('status', 'like',"%{$request->status}%");
})->orderBy('favorite', 'desc')->get();
return response()->json([
'status' => 'success',
'data' => $products
], 200);
}
/**
* Store a newly created resource in storage.
*/
public function store(Request $request)
{
$request->validate([
'category_id' => 'required',
'name' => 'required',
'price' => 'required',
// 'image' => 'required',
'criteria' => 'required',
// 'favorite' => 'required',
// 'status' => 'required',
// 'stock' => 'required',
]);
$product = new Product;
$product->category_id = $request->category_id;
$product->name = $request->name;
$product->description = '';
$product->price = $request->price;
$product->favorite = false;
$product->status = 'published';
$product->stock = 0;
$product->save();
// upload image
if ($request->file('image')) {
$image = $request->file('image');
$image->storeAs('public/products', $product->id . '.png');
$product->image = $product->id . 'png';
$product->save();
}
// product with category
$product = Product::with('category')->find($product->id);
return response()->json(['status' => 'success', 'data' => $product], 200);
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
$product = Product::find($id);
if (!$product) {
return response()->json(['status' => 'error', 'message' => 'Product not found'], 404);
}
return response()->json(['status' => 'success', 'data' => $product], 200);
}
/**
* Update the specified resource in storage.
*/
public function update(Request $request, string $id)
{
$product = Product::find($id);
if (!$product) {
return response()->json(['status' => 'error', 'message' => 'Product not found'], 404);
}
// dd($product);
$product->category_id = $request->category_id;
$product->name = $request->name;
// $product->description = $request->description;
$product->price = $request->price;
$product->criteria = $request->criteria;
// $product->favorite = $request->favorite;
// $product->status = $request->status;
$product->stock = 0;
$product->save();
// // upload image
// if ($request->file('image')) {
// $image = $request->file('image');
// $image->storeAs('public/products', $product->id . '.png');
// $product->image = $product->id . 'png';
// $product->save();
// }
// product with category
$product = Product::with('category')->find($product->id);
return response()->json(['status' => 'success', 'data' => $product], 200);
}
/**
* Remove the specified resource from storage.
*/
public function destroy(string $id)
{
$product = Product::find($id);
if (!$product) {
return response()->json(['status' => 'error', 'message' => 'Product not found'], 404);
}
$product->delete();
return response()->json(['status' => 'success', 'message' => 'Product deleted'], 200);
}
}
Editor is loading...
Leave a Comment