Commit b1876562 authored by TTS Nguyen Huu Huan's avatar TTS Nguyen Huu Huan

Merge branch 'feature/order' into 'dev'

update code OrderController  after review

See merge request !11
parents a8aea4ce 5f2ed7da
...@@ -2,36 +2,32 @@ ...@@ -2,36 +2,32 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Http\Resources\OrderResource; use App\Http\Resources\OrderResource;
use App\Repositories\OrderRepository; use App\Repositories\OrderRepository;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Repositories\UserRepository; use App\Repositories\UserRepository;
use App\Http\Requests\GetOrderRequest;
use Illuminate\Http\Request;
use App\Models\User; use App\Models\User;
class OrderController extends Controller class OrderController extends Controller
{ {
private OrderRepository $orderRepository; private OrderRepository $orderRepository;
private UserRepository $userRepository;
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function __construct(OrderRepository $orderRepository, UserRepository $userRepository) public function __construct(OrderRepository $orderRepository)
{ {
$this->orderRepository = $orderRepository; $this->orderRepository = $orderRepository;
$this->userRepository = $userRepository;
} }
public function index(Request $request) public function index(GetOrderRequest $request)
{ {
$id = $request->id; $user = auth()->user();
$user = auth('api')->user()->id; $order = $user->role == User::ROLE_ADMIN ?
if ($user->role == User::ROLE_ADMIN) { $this->orderRepository->getListOrder($request->only(['keyword', 'status']))
$order = $this->orderRepository->getListOrderOfAdmin($request); : $this->orderRepository->getListOrder($request->only(['keyword', 'status']), $user->id);
} elseif ($user->role == User::ROLE_EDITOR) {
$order = $this->orderRepository->getListOrderOfUser($id);
}
return response()->json([ return response()->json([
'success' => true, 'success' => true,
'meta' => [ 'meta' => [
...@@ -100,16 +96,16 @@ public function edit(Request $request) ...@@ -100,16 +96,16 @@ public function edit(Request $request)
* @param int $id * @param int $id
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function update(Request $request, $id) public function update(Request $request)
{ {
$order = $this->orderRepository->update( $is_update = $this->orderRepository->update(
$request->id, $request->id,
$request->only(['id', 'details', 'client', 'is_fulfilled']) $request->only(['id', 'details', 'client', 'is_fulfilled'])
); );
return response()->json([ return response()->json([
'success' => true, 'success' => true,
'message' => '', 'message' => '',
'data' => $order 'data' => $is_update
]); ]);
} }
...@@ -121,12 +117,11 @@ public function update(Request $request, $id) ...@@ -121,12 +117,11 @@ public function update(Request $request, $id)
*/ */
public function destroy(Request $request) public function destroy(Request $request)
{ {
$order = $this->orderRepository->deleteById($request->id); $is_deleted = $this->orderRepository->deleteById($request->id);
return response()->json([ return response()->json([
'success' => true, 'success' => true,
'message' => '', 'message' => '',
'data' => $order 'data' => $is_deleted
]); ]);
} }
} }
...@@ -2,36 +2,31 @@ ...@@ -2,36 +2,31 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Resources\OrderResource; use App\Http\Resources\OrderResource;
use App\Repositories\OrderRepository; use App\Repositories\OrderRepository;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Repositories\UserRepository; use App\Http\Requests\GetOrderRequest;
use Illuminate\Http\Request;
use App\Models\User; use App\Models\User;
class OrderController extends Controller class OrderController extends Controller
{ {
private OrderRepository $orderRepository; private OrderRepository $orderRepository;
private UserRepository $userRepository;
/** /**
* Display a listing of the resource. * Display a listing of the resource.
* *
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function __construct(OrderRepository $orderRepository, UserRepository $userRepository) public function __construct(OrderRepository $orderRepository)
{ {
$this->orderRepository = $orderRepository; $this->orderRepository = $orderRepository;
$this->userRepository = $userRepository;
} }
public function index(Request $request) public function index(GetOrderRequest $request)
{ {
$id = $request->id; $user = auth('api')->user();
$user = $this->userRepository->getByid($id); $order = $user->role == User::ROLE_ADMIN ?
if ($user->role == User::ROLE_ADMIN) { $this->orderRepository->getListOrder($request->only(['status', 'keyword']))
$order = $this->orderRepository->paginate($request->page); : $this->orderRepository->getListOrder($request->only(['status', 'keyword']), $user->id);
} elseif ($user->role == User::ROLE_EDITOR) {
$order = $this->orderRepository->getListOrderOfUser($id);
}
return response()->json([ return response()->json([
'success' => true, 'success' => true,
'meta' => [ 'meta' => [
...@@ -102,14 +97,14 @@ public function edit(Request $request) ...@@ -102,14 +97,14 @@ public function edit(Request $request)
*/ */
public function update(Request $request, $id) public function update(Request $request, $id)
{ {
$order = $this->orderRepository->update( $is_update = $this->orderRepository->update(
$request->id, $request->id,
$request->only(['id', 'details', 'client', 'is_fulfilled']) $request->only(['id', 'details', 'client', 'is_fulfilled'])
); );
return response()->json([ return response()->json([
'success' => true, 'success' => true,
'message' => '', 'message' => '',
'data' => $order 'data' => $is_update
]); ]);
} }
...@@ -121,11 +116,11 @@ public function update(Request $request, $id) ...@@ -121,11 +116,11 @@ public function update(Request $request, $id)
*/ */
public function destroy(Request $request) public function destroy(Request $request)
{ {
$order = $this->orderRepository->deleteById($request->id); $is_deleted = $this->orderRepository->deleteById($request->id);
return response()->json([ return response()->json([
'success' => true, 'success' => true,
'message' => '', 'message' => '',
'data' => $order 'data' => $is_deleted
]); ]);
} }
} }
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class OrderDetailController extends Controller
{
//
}
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class GetOrderRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'status' => 'integer',
'keyword' => 'string|max:255'
];
}
}
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
use App\Models\Order; use App\Models\Order;
use App\Repositories\BaseRepository; use App\Repositories\BaseRepository;
use Illuminate\Http\Request;
class OrderRepository extends BaseRepository class OrderRepository extends BaseRepository
{ {
...@@ -24,12 +23,27 @@ public function getFulfilledOrder() ...@@ -24,12 +23,27 @@ public function getFulfilledOrder()
$this->model->where('is_fulfilled', true); $this->model->where('is_fulfilled', true);
} }
public function getListOrderOfAdmin(Request $request) public function getListOrder(array $params, $id = 0)
{ {
return $this->model->latest()->where('status', $request->status)->paginate(); $query = $this->model;
if (!$id){
$query = $query->where('user_id', $id);
} }
public function getListOrderOfUser($id) if (isset($params['status'])) {
{ $query = $query->where('status', $params['status']);
return $this->model->where('user_id', $id)->with('user')->paginate(); }
if (isset($params['keyword'])) {
$keyword = $params['keyword'];
$query = $query->where(function ($query) use ($keyword) {
$query->where('details', 'LIKE', '%' . $keyword . '%')
->orWhere('client', 'LIKE', '%' . $keyword . '%')
->orWhere(function ($query) use ($keyword) {
$query->whereHas('user', function ($query) use ($keyword) {
$query->where('name', 'LIKE', '%' . $keyword . '%');
});
});
});
}
return $query->paginate();
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment