-
Notifications
You must be signed in to change notification settings - Fork 48
Expand file tree
/
Copy pathProductsController.php
More file actions
76 lines (51 loc) · 1.86 KB
/
Copy pathProductsController.php
File metadata and controls
76 lines (51 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
namespace App\Http\Controllers\Web;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Http\Request;
use DB;
use App\Http\Controllers\Controller;
use App\Models\Product;
class ProductsController extends Controller {
use ValidatesRequests;
public function __construct()
{
$this->middleware('auth:web')->except('list');
/*123*/
}
public function list(Request $request) {
$query = Product::select("products.*");
$query->when($request->keywords,
fn($q)=> $q->where("name", "like", "%$request->keywords%"));
$query->when($request->min_price,
fn($q)=> $q->where("price", ">=", $request->min_price));
$query->when($request->max_price, fn($q)=>
$q->where("price", "<=", $request->max_price));
$query->when($request->order_by,
fn($q)=> $q->orderBy($request->order_by, $request->order_direction??"ASC"));
$products = $query->get();
return view('products.list', compact('products'));
}
public function edit(Request $request, Product $product = null) {
if(!auth()->user()) return redirect('/');
$product = $product??new Product();
return view('products.edit', compact('product'));
}
public function save(Request $request, Product $product = null) {
$this->validate($request, [
'code' => ['required', 'string', 'max:32'],
'name' => ['required', 'string', 'max:128'],
'model' => ['required', 'string', 'max:256'],
'description' => ['required', 'string', 'max:1024'],
'price' => ['required', 'numeric'],
]);
$product = $product??new Product();
$product->fill($request->all());
$product->save();
return redirect()->route('products_list');
}
public function delete(Request $request, Product $product) {
if(!auth()->user()->hasPermissionTo('delete_products')) abort(401);
$product->delete();
return redirect()->route('products_list');
}
}