weizong song 5 years ago
parent e209d27f65
commit a5764b4285

@ -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}",

@ -21,7 +21,7 @@ class Orders extends SoftDeletesModel
const TEXT_ONGOING = "进行中";
const TEXT_FINISHED = "已完成";
protected $appends = ["status_name"];
protected $appends = ["status_name", "days"];
public function getStatusLabelAttribute($pure_text = true)
{
@ -52,6 +52,11 @@ class Orders extends SoftDeletesModel
return $this->getStatusLabelAttribute();
}
public function getDaysAttribute()
{
return Carbon::parse($this->from_date)->diffInDays($this->to_date);
}
protected static function booted()
{
static::addGlobalScope(new AdminProjectScope());
@ -261,7 +266,7 @@ class Orders extends SoftDeletesModel
$total = $items_total + $un_generated_total;
break;
case self::STATUS_FINISHED:
$total = $this->orderItems()->sum("total");
$total = $order_items->sum("total");
}
if ($order_items->last()) {

Loading…
Cancel
Save