|
|
|
|
@ -133,10 +133,10 @@ class OrdersController extends CommonController
|
|
|
|
|
|
|
|
|
|
public function list()
|
|
|
|
|
{
|
|
|
|
|
$data = (new Orders());
|
|
|
|
|
$model = $this->_getOrderModel();
|
|
|
|
|
if (request()->keyword) {
|
|
|
|
|
$keyword = request()->keyword;
|
|
|
|
|
$data = $data->where(function ($query) use ($keyword) {
|
|
|
|
|
$model = $model->where(function ($query) use ($keyword) {
|
|
|
|
|
$query
|
|
|
|
|
->where("serial", "like", "%{$keyword}%")
|
|
|
|
|
->orWhereHas("patient", function ($query) use ($keyword) {
|
|
|
|
|
@ -149,42 +149,27 @@ class OrdersController extends CommonController
|
|
|
|
|
|
|
|
|
|
switch (request()->status) {
|
|
|
|
|
case "unconfirmed":
|
|
|
|
|
$data = $data
|
|
|
|
|
$model = $model
|
|
|
|
|
->where("status", Orders::STATUS_UNCONFIRMED)
|
|
|
|
|
->ofProject($this->manager->projects->pluck("id")->toArray());
|
|
|
|
|
break;
|
|
|
|
|
case "unassigned":
|
|
|
|
|
case "ongoing":
|
|
|
|
|
case "finished":
|
|
|
|
|
$data = $data
|
|
|
|
|
$model = $model
|
|
|
|
|
->where("status", constant(Orders::class . "::STATUS_" . strtoupper(request()->status)))
|
|
|
|
|
->ofProject($this->manager->projects->pluck("id")->toArray());
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
$data = $data
|
|
|
|
|
$model = $model
|
|
|
|
|
->ofProject($this->manager->projects->pluck("id")->toArray());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$page_size = request()->page_size ?? 5;
|
|
|
|
|
$data = $data
|
|
|
|
|
->with([
|
|
|
|
|
"patient" => function ($query) {
|
|
|
|
|
$query->select("id", "customer_id", "name", "sex", "age");
|
|
|
|
|
},
|
|
|
|
|
"productItem",
|
|
|
|
|
"productParamedicLevel",
|
|
|
|
|
"bed" => function ($query) {
|
|
|
|
|
$query->with(["room", "building"])->select("id", "room_id", "building_id");
|
|
|
|
|
},
|
|
|
|
|
"paramedic" => function ($query) {
|
|
|
|
|
$query->select();
|
|
|
|
|
}
|
|
|
|
|
])
|
|
|
|
|
->orderBy("id", "desc")
|
|
|
|
|
->select("id", "serial", "customer_id", "patient_id", "project_id", "product_id", "manager_id", "from_date", "to_date", "remark", "status", "contact", "mobile", "price", "patient_quantity")
|
|
|
|
|
->paginate($page_size);
|
|
|
|
|
$data = $model->orderBy("id", "desc")->paginate($page_size);
|
|
|
|
|
foreach ($data as $order) {
|
|
|
|
|
$order = $order->refreshTotal();
|
|
|
|
|
$order->balance = $order->customer->balance;
|
|
|
|
|
}
|
|
|
|
|
return response()->json($data->toArray());
|
|
|
|
|
}
|
|
|
|
|
@ -205,52 +190,63 @@ class OrdersController extends CommonController
|
|
|
|
|
|
|
|
|
|
public function getOrder($id)
|
|
|
|
|
{
|
|
|
|
|
$order = (new Orders())->with([
|
|
|
|
|
"orderItems" => function ($query) {
|
|
|
|
|
$query->with([
|
|
|
|
|
"bed" => function ($query) {
|
|
|
|
|
$query->with(["room", "building"]);
|
|
|
|
|
},
|
|
|
|
|
"room",
|
|
|
|
|
"building",
|
|
|
|
|
"paramedic",
|
|
|
|
|
"productParamedicLevel",
|
|
|
|
|
"paramedicLevel"
|
|
|
|
|
]);
|
|
|
|
|
},
|
|
|
|
|
"project",
|
|
|
|
|
"product" => function ($query) {
|
|
|
|
|
$query->with(["productParamedicLevels" => function ($query) {
|
|
|
|
|
$query->with("paramedicLevel");
|
|
|
|
|
}]);
|
|
|
|
|
},
|
|
|
|
|
"customer",
|
|
|
|
|
"manager",
|
|
|
|
|
"patient",
|
|
|
|
|
"productItem",
|
|
|
|
|
"productParamedicLevel",
|
|
|
|
|
"bed" => function ($query) {
|
|
|
|
|
$query->with(["room", "building"]);
|
|
|
|
|
},
|
|
|
|
|
"room",
|
|
|
|
|
"building",
|
|
|
|
|
"paramedic",
|
|
|
|
|
"handlingApprovalItem" => function ($query) {
|
|
|
|
|
$query->with("approval");
|
|
|
|
|
},
|
|
|
|
|
"recharges" => function ($query) {
|
|
|
|
|
$query->with("manager");
|
|
|
|
|
},
|
|
|
|
|
"refunds" => function ($query) {
|
|
|
|
|
$query->with("manager");
|
|
|
|
|
}
|
|
|
|
|
])->find($id);
|
|
|
|
|
$model = $this->_getOrderModel();
|
|
|
|
|
$order = $model->find($id);
|
|
|
|
|
$order = $order->refreshTotal();
|
|
|
|
|
$order->balance = $order->customer->balance;
|
|
|
|
|
|
|
|
|
|
return response()->json($order->toArray());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function _getOrderModel()
|
|
|
|
|
{
|
|
|
|
|
$model = $order = (new Orders())
|
|
|
|
|
->select(
|
|
|
|
|
"orders.id",
|
|
|
|
|
"orders.serial",
|
|
|
|
|
"orders.customer_id",
|
|
|
|
|
"orders.manager_id",
|
|
|
|
|
"orders.bed_id",
|
|
|
|
|
"orders.patient_id",
|
|
|
|
|
"orders.project_id",
|
|
|
|
|
"orders.product_id",
|
|
|
|
|
"orders.from_date",
|
|
|
|
|
"orders.to_date",
|
|
|
|
|
"orders.status",
|
|
|
|
|
"orders.total",
|
|
|
|
|
"orders.paid_total",
|
|
|
|
|
"orders.contact",
|
|
|
|
|
"orders.mobile",
|
|
|
|
|
"orders.paramedic_id",
|
|
|
|
|
"orders.price",
|
|
|
|
|
"orders.factors",
|
|
|
|
|
"orders.patient_quantity",
|
|
|
|
|
"orders.created_at"
|
|
|
|
|
)
|
|
|
|
|
->with([
|
|
|
|
|
"project" => function ($query) {
|
|
|
|
|
$query->select("id", "name");
|
|
|
|
|
},
|
|
|
|
|
"bed" => function ($query) {
|
|
|
|
|
$query->select("bed.id", "bed.name")
|
|
|
|
|
->leftJoin("building", "building.id", "=", "bed.building_id")
|
|
|
|
|
->leftJoin("area", "area.id", "=", "bed.area_id")
|
|
|
|
|
->leftJoin("room", "room.id", "=", "bed.room_id")
|
|
|
|
|
->addSelect("room.name as room_name", "area.name as area_name", "building.name as building_name");
|
|
|
|
|
},
|
|
|
|
|
"customer" => function ($query) {
|
|
|
|
|
$query->select("id", "name", "balance");
|
|
|
|
|
},
|
|
|
|
|
"patient" => function ($query) {
|
|
|
|
|
$query->select("id", "name", "sex", "age", "mobile");
|
|
|
|
|
},
|
|
|
|
|
"paramedic" => function ($query) {
|
|
|
|
|
$query->select("id", "name", "mobile");
|
|
|
|
|
}
|
|
|
|
|
]);
|
|
|
|
|
return $model;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @OA\Get(
|
|
|
|
|
* path="/manager/get-project-areas/{project_id}",
|
|
|
|
|
|