You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
3.3 KiB
103 lines
3.3 KiB
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Models\Holiday;
|
|
use App\Models\Project;
|
|
use Illuminate\Http\Request;
|
|
use Kris\LaravelFormBuilder\FormBuilder;
|
|
|
|
class HolidayController extends CommonController
|
|
{
|
|
public $bladePath = "admin.holiday";
|
|
public $urlPrefix = "admin/project/holiday";
|
|
public $modelName = "节假日倍率";
|
|
public $modelClass = Holiday::class;
|
|
|
|
public function index(Request $request)
|
|
{
|
|
$data = $this->model
|
|
->with("project")
|
|
->when($request->project_id, function ($query) use ($request) {
|
|
$query->where("project_id", $request->project_id);
|
|
})
|
|
->orderBy("project_id")
|
|
->orderBy("date", "desc")
|
|
->orderBy("id", "desc")
|
|
->paginate(100);
|
|
|
|
return view($this->bladePath . ".index", compact("data"));
|
|
}
|
|
|
|
public function create(FormBuilder $formBuilder)
|
|
{
|
|
$projects = Project::orderBy("id", "desc")->get();
|
|
$holiday = new Holiday();
|
|
if (request()->project_id) {
|
|
$holiday->project_id = request()->project_id;
|
|
}
|
|
$isEdit = false;
|
|
return view($this->bladePath . ".create", compact("projects", "holiday", "isEdit"));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
"project_id" => "required|integer",
|
|
"price_ratio" => "required|numeric|min:0",
|
|
"dates" => "required|array|min:1",
|
|
"dates.*" => "required|date_format:Y-m-d",
|
|
"remark" => "nullable|string",
|
|
], [
|
|
"dates.required" => "请至少选择一个日期",
|
|
"dates.min" => "请至少选择一个日期",
|
|
]);
|
|
|
|
$dates = collect($request->dates)->filter()->unique()->values();
|
|
foreach ($dates as $date) {
|
|
Holiday::updateOrCreate(
|
|
[
|
|
"project_id" => $request->project_id,
|
|
"date" => $date,
|
|
],
|
|
[
|
|
"price_ratio" => $request->price_ratio,
|
|
"remark" => $request->remark,
|
|
]
|
|
);
|
|
}
|
|
|
|
$url = url($this->urlPrefix . "?project_id=" . $request->project_id);
|
|
return $this->success("保存成功,共处理 {$dates->count()} 个日期", $url);
|
|
}
|
|
|
|
public function edit($id = null, Request $request, FormBuilder $formBuilder)
|
|
{
|
|
$projects = Project::orderBy("id", "desc")->get();
|
|
$holiday = $this->model->find($id ?: $request->id);
|
|
$isEdit = true;
|
|
return view($this->bladePath . ".create", compact("projects", "holiday", "isEdit"));
|
|
}
|
|
|
|
public function update($id = null, Request $request)
|
|
{
|
|
$request->validate([
|
|
"project_id" => "required|integer",
|
|
"price_ratio" => "required|numeric|min:0",
|
|
"date" => "required|date_format:Y-m-d",
|
|
"remark" => "nullable|string",
|
|
]);
|
|
|
|
$holiday = $this->model->find($id ?: $request->id);
|
|
$holiday->update([
|
|
"project_id" => $request->project_id,
|
|
"date" => $request->date,
|
|
"price_ratio" => $request->price_ratio,
|
|
"remark" => $request->remark,
|
|
]);
|
|
|
|
$url = url($this->urlPrefix . "?project_id=" . $request->project_id);
|
|
return $this->success("修改成功", $url);
|
|
}
|
|
}
|