Skip to content

Instantly share code, notes, and snippets.

@denihida1216
Last active August 17, 2020 02:46
Show Gist options
  • Save denihida1216/0110386d1a9999d065fee25a23652fc0 to your computer and use it in GitHub Desktop.
Save denihida1216/0110386d1a9999d065fee25a23652fc0 to your computer and use it in GitHub Desktop.
Laravel 7 Example Product Stock Controller
<?php
namespace App\Http\Controllers;
use App\ProductStock;
use App\Http\Resources\ApiResource;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Database\Eloquent\Collection;
class ProductStockController extends Controller
{
protected $controler;
protected $rules = [
'product_id' => 'required|max:255',
'category_detail_id' => 'required|max:255',
'material_id' => 'required|max:255',
'size_id' => 'required|max:255',
'color_id' => 'required|max:255',
'qty_stock' => 'required|integer',
'cost' => 'required|integer',
'price' => 'required|integer',
];
protected $messages = [
'required' => 'wajib diisi!',
'unique' => ':attribute sudah terdaftar!',
'email' => ':attribute tidak valid!',
'min' => 'wajib diisi minimal 6 karakter!',
];
public function __construct(ProductStock $controler)
{
$this->controler = $controler;
}
public function index(Request $request)
{
$where_raw = ' (id LIKE "%'.$request->search.'%") ';
if ($request->filter){
$where_raw .= ' AND product_id = "'.$request->filter['product_id'].'" ';
$where_raw .= ' AND active = "'.$request->filter['active'].'" ';
}
$query = $this->controler
->with([
'category_detail:id,name',
'product:id,sku,name,description',
'material:id,name',
'size:id,name',
'color:id,name',
])
->whereRaw($where_raw)
->orderBy($request->column, $request->order);
$data = $query->paginate($request->per_page ?? 80);
return ApiResource::collection($data);
}
public function store(Request $request)
{
$validator = Validator::make( $request->all(), $this->rules, $this->messages );
if($validator->fails()){
return response()->json(['error'=> $validator->errors()], 400);
}
$data = [
'category_detail_id' => $request->get('category_detail_id'),
'product_id' => $request->get('product_id'),
'material_id' => $request->get('material_id'),
'size_id' => $request->get('size_id'),
'color_id' => $request->get('color_id'),
'qty_stock' => $request->get('qty_stock'),
'cost' => $request->get('cost'),
'price' => $request->get('price'),
'discount' => $request->get('discount'),
'discount_expired' => $request->get('discount_expired'),
];
ProductStock::create($data);
$msg = [
'success' => true,
'message' => 'Data berhasil disimpan...'
];
return response()->json($msg, 201);
}
public function edit($id)
{
$data = ProductStock::find($id);
return response()->json($data, 200);
}
public function update(Request $request, $id)
{
$validator = Validator::make( $request->all(), $this->rules, $this->messages );
if($validator->fails()){
return response()->json(['error'=> $validator->errors()], 400);
}
$data = ProductStock::find($id);
$data->category_detail_id = $request->get('category_detail_id');
$data->product_id = $request->get('product_id');
$data->material_id = $request->get('material_id');
$data->size_id = $request->get('size_id');
$data->color_id = $request->get('color_id');
$data->qty_stock = $request->get('qty_stock');
$data->cost = $request->get('cost');
$data->price = $request->get('price');
$data->discount = $request->get('discount');
$data->discount_expired = $request->get('discount_expired');
$data->save();
$msg = [
'success' => true,
'message' => 'Data berhasil diupdate...'
];
return response()->json($msg,200);
}
public function delete($id)
{
$data = ProductStock::find($id);
if(!empty($data)){
$data->delete();
$msg = [
'success' => true,
'message' => 'Data berhasil dihapus!'
];
return response()->json($msg,200);
} else {
$msg = [
'success' => false,
'message' => 'Data gagal dihapus!'
];
return response()->json($msg,400);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment