You've already forked lubo_comment_query
							
							
		
			
				
	
	
		
			122 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			122 lines
		
	
	
		
			4.0 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
 | |
| {
 | |
|     // region Views
 | |
|     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 edit(Request $request, ProgramAppends $append) {
 | |
|         return view("program.construct.append.create", [
 | |
|             "program" => $append->program,
 | |
|             "append" => $append
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     public function copy_view(Request $request, Programs $program) {
 | |
|         return view("program.construct.append.copy_broadcast", [
 | |
|             "program" => $program,
 | |
|         ]);
 | |
|     }
 | |
|     // endregion
 | |
| 
 | |
|     // region Form Submits
 | |
|     public function create(Request $request, Programs $program) {
 | |
|         $append = $this->fill_model($request);
 | |
|         $program->appends()->save($append);
 | |
|         return redirect(route("program.construct.append.list", [
 | |
|             "program"=>$program->id,
 | |
|         ]));
 | |
|     }
 | |
| 
 | |
|     public function submit(Request $request, ProgramAppends $append) {
 | |
|         $append = $this->fill_model($request, $append);
 | |
|         $append->save();
 | |
|         return redirect(route("program.construct.append.list", [
 | |
|             "program"=>$append->program->id,
 | |
|         ]));
 | |
|     }
 | |
| 
 | |
|     public function copy_append(Request $request, Programs $program) {
 | |
|         $payload = $request->validate([
 | |
|             "id" => ["required", "numeric", "exists:App\Models\ProgramAppends,id"]
 | |
|         ]);
 | |
|         $original_append = ProgramAppends::query()->findOrFail($payload["id"]);
 | |
|         $append = $original_append->replicate();
 | |
|         $program->appends()->save($append);
 | |
|         return redirect(route("program.construct.append.list", [
 | |
|             "program"=>$append->program->id,
 | |
|         ]));
 | |
|     }
 | |
|     // endregion
 | |
| 
 | |
|     // region API
 | |
|     public function from_list(Request $request) {
 | |
|         $query = ProgramAppends::query()->groupBy("from")
 | |
|             ->select("from")
 | |
|             ->selectRaw("count(1) as total_count")
 | |
|             ->orderByDesc("total_count");
 | |
|         return $query->get()->map(function ($item) {
 | |
|             return [
 | |
|                 "text" => $item["from"],
 | |
|                 "value" => $item["from"],
 | |
|                 "alias" => implode("", \pinyin($item["from"], PINYIN_NO_TONE|PINYIN_KEEP_ENGLISH)),
 | |
|                 "abbr" => \pinyin_abbr($item["from"]),
 | |
|             ];
 | |
|         })->toArray();
 | |
|     }
 | |
| 
 | |
|     public function broadcast_list(Request $request) {
 | |
|         $query = ProgramAppends::query()->groupBy("name")
 | |
|             ->where("broadcast", "=", 1)
 | |
|             ->select("name")->selectRaw("max(id) as id");
 | |
|         return $query->get()->map(function ($item) {
 | |
|             return [
 | |
|                 "text" => $item["name"],
 | |
|                 "value" => $item["id"],
 | |
|                 "alias" => implode("", \pinyin($item["name"], PINYIN_NO_TONE|PINYIN_KEEP_ENGLISH)),
 | |
|                 "abbr" => \pinyin_abbr($item["name"]),
 | |
|             ];
 | |
|         });
 | |
|     }
 | |
|     // endregion
 | |
| 
 | |
|     private function fill_model(Request $request, ?ProgramAppends $append = null): ProgramAppends
 | |
|     {
 | |
|         if ($append === null) {
 | |
|             $append = new ProgramAppends();
 | |
|         }
 | |
|         $payload = $request->validate([
 | |
|             "name" => ["required_without:is_original"],
 | |
|             "from" => ["required"],
 | |
|             "price" => ["required", "numeric"],
 | |
|             "append" => [],
 | |
|         ]);
 | |
|         $append->fill($payload);
 | |
|         $append->is_original = $request->post("is_original", 0);
 | |
|         return $append;
 | |
|     }
 | |
| }
 |