Last active
August 17, 2020 02:46
-
-
Save denihida1216/0110386d1a9999d065fee25a23652fc0 to your computer and use it in GitHub Desktop.
Laravel 7 Example Product Stock Controller
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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