lubo_comment_query/app/Http/Controllers/ProgramAppendConstructController.php
2022-08-08 14:19:08 +08:00

71 lines
2.4 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\ProgramAppends;
use App\Models\Programs;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller as BaseController;
class ProgramAppendConstructController extends BaseController
{
public function index(Request $request, Programs $program) {
return view("program.construct.append.index", [
"program" => $program,
"appends" => $program->appends,
]);
}
public function add(Request $request, Programs $program) {
$append = new ProgramAppends();
if (sizeof($program->appends) === 0) {
$append->is_original = 1;
}
return view("program.construct.append.create", [
"program" => $program,
"append" => $append
]);
}
public function create(Request $request, Programs $program) {
$request->validate([
"name" => ["required_without:is_original"],
"from" => ["required"],
"price" => ["required", "numeric"],
]);
$createPayload = $request->only(["name", "from", "price", "append"]);
$append = $program->appends()->create($createPayload);
$append->is_original = $request->post("is_original", 0);
$append->save();
return redirect(route("program.construct.append.list", [
"program"=>$program->id,
]));
}
public function edit(Request $request, ProgramAppends $append) {
return view("program.construct.append.create", [
"program" => $append->program,
"append" => $append
]);
}
public function submit(Request $request, ProgramAppends $append) {
$submitPayload = $request->only(["name", "from", "price", "append"]);
$append->update($submitPayload);
$append->is_original = $request->post("is_original", 0);
$append->save();
return redirect(route("program.construct.append.list", [
"program"=>$append->program->id,
]));
}
public function from_list(Request $request) {
$query = ProgramAppends::query()->groupBy("from")->select("from")->selectRaw("count(1) as total_count")->orderByDesc("total_count");
if ($request->has("value")) {
$keyword = $request->get("value");
$query->where("from", "like", "%{$keyword}%");
}
return $query->get()->toArray();
}
}