File: /home/imensosw/www/amanda/app/Http/Controllers/CategoryController.php
<?php
namespace App\Http\Controllers;
use App\Category;
use Illuminate\Http\Request;
class CategoryController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$limit = config('constants.limit');
$search = $request->search;
$category = Category::
where(function($q) use ($search)
{
$q->orWhere('categories.name', 'like', '%' . $search . '%');
})
->orderBy('categories.id','desc')
->paginate($limit);
return response()->json($category, 200);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required|unique:categories,name|max:30',
]);
$category = Category::create([
'name' => $request->name,
]);
return response()->json([
'status' => (bool) $category,
'data' => $category,
'message' => $category ? 'Category Created!' : 'Error Creating Category'
]);
}
/**
* Display the specified resource.
*
* @param \App\Category $category
* @return \Illuminate\Http\Response
*/
public function show(Category $category)
{
return response()->json($category,200);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Category $category
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Category $category)
{
$request->validate([
'name' => 'required|max:30|unique:categories,name,'.$category['id'],
]);
$status = $category->update(
$request->only(['name'])
);
return response()->json([
'status' => $status,
'message' => $status ? 'Category Updated!' : 'Error Updating Category'
]);
}
public function updateUnits(Request $request, Product $category)
{
$category->units = $category->units + $request->get('units');
$status = $category->save();
return response()->json([
'status' => $status,
'message' => $status ? 'Units Added!' : 'Error Adding Product Units'
]);
}
/**
* Remove the specified resource from storage.
*
* @param \App\Product $product
* @return \Illuminate\Http\Response
*/
public function destroy(Category $product, $id)
{
\DB::beginTransaction();
try {
// $status = $product->delete();
$status = Category::find($id)->delete();
\DB::commit();
return response()->json([
'status' => $status,
'message' => $status ? 'Category Deleted!' : 'Error Deleting Category'
]);
} catch (\Throwable $e) {
\DB::rollback();
return response()->json(
[
'status' => 'error',
'message' => 'Error in Category delete',
'errors' => [],
],
422
);
}
}
public function categorySearch(Request $request)
{
$limit = config('constants.limit');
$search = $request->search;
$category = Category::
where(function($q) use ($search)
{
$q->orWhere('categories.name', 'like', '%' . $search . '%');
})
->orderBy('categories.id','desc')
->paginate($limit);
return response()->json($category, 200);
}
}