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 @@
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Http\Resources\OrderResource;
use App\Repositories\OrderRepository;
use App\Http\Controllers\Controller;
use App\Repositories\UserRepository;
use App\Http\Requests\GetOrderRequest;
use Illuminate\Http\Request;
use App\Models\User;
class OrderController extends Controller
{
private OrderRepository $orderRepository;
private UserRepository $userRepository;
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function __construct(OrderRepository $orderRepository, UserRepository $userRepository)
public function __construct(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()->id;
if ($user->role == User::ROLE_ADMIN) {
$order = $this->orderRepository->getListOrderOfAdmin($request);
} elseif ($user->role == User::ROLE_EDITOR) {
$order = $this->orderRepository->getListOrderOfUser($id);
}
$user = auth()->user();
$order = $user->role == User::ROLE_ADMIN ?
$this->orderRepository->getListOrder($request->only(['keyword', 'status']))
: $this->orderRepository->getListOrder($request->only(['keyword', 'status']), $user->id);
return response()->json([
'success' => true,
'meta' => [
......@@ -100,16 +96,16 @@ public function edit(Request $request)
* @param int $id
* @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->only(['id', 'details', 'client', 'is_fulfilled'])
);
return response()->json([
'success' => true,
'message' => '',
'data' => $order
'data' => $is_update
]);
}
......@@ -121,12 +117,11 @@ public function update(Request $request, $id)
*/
public function destroy(Request $request)
{
$order = $this->orderRepository->deleteById($request->id);
$is_deleted = $this->orderRepository->deleteById($request->id);
return response()->json([
'success' => true,
'message' => '',
'data' => $order
'data' => $is_deleted
]);
}
}
......@@ -2,36 +2,31 @@
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Resources\OrderResource;
use App\Repositories\OrderRepository;
use App\Http\Controllers\Controller;
use App\Repositories\UserRepository;
use App\Http\Requests\GetOrderRequest;
use Illuminate\Http\Request;
use App\Models\User;
class OrderController extends Controller
{
private OrderRepository $orderRepository;
private UserRepository $userRepository;
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function __construct(OrderRepository $orderRepository, UserRepository $userRepository)
public function __construct(OrderRepository $orderRepository)
{
$this->orderRepository = $orderRepository;
$this->userRepository = $userRepository;
}
public function index(Request $request)
public function index(GetOrderRequest $request)
{
$id = $request->id;
$user = $this->userRepository->getByid($id);
if ($user->role == User::ROLE_ADMIN) {
$order = $this->orderRepository->paginate($request->page);
} elseif ($user->role == User::ROLE_EDITOR) {
$order = $this->orderRepository->getListOrderOfUser($id);
}
$user = auth('api')->user();
$order = $user->role == User::ROLE_ADMIN ?
$this->orderRepository->getListOrder($request->only(['status', 'keyword']))
: $this->orderRepository->getListOrder($request->only(['status', 'keyword']), $user->id);
return response()->json([
'success' => true,
'meta' => [
......@@ -102,14 +97,14 @@ public function edit(Request $request)
*/
public function update(Request $request, $id)
{
$order = $this->orderRepository->update(
$is_update = $this->orderRepository->update(
$request->id,
$request->only(['id', 'details', 'client', 'is_fulfilled'])
);
return response()->json([
'success' => true,
'message' => '',
'data' => $order
'data' => $is_update
]);
}
......@@ -121,11 +116,11 @@ public function update(Request $request, $id)
*/
public function destroy(Request $request)
{
$order = $this->orderRepository->deleteById($request->id);
$is_deleted = $this->orderRepository->deleteById($request->id);
return response()->json([
'success' => true,
'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 @@
use App\Models\Order;
use App\Repositories\BaseRepository;
use Illuminate\Http\Request;
class OrderRepository extends BaseRepository
{
......@@ -24,12 +23,27 @@ public function getFulfilledOrder()
$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)
{
return $this->model->where('user_id', $id)->with('user')->paginate();
if (isset($params['status'])) {
$query = $query->where('status', $params['status']);
}
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