|
|
|
|
<?php
|
|
|
|
|
/**
|
|
|
|
|
* Created by PhpStorm.
|
|
|
|
|
* User: weizongsong
|
|
|
|
|
* Date: 2019-04-12
|
|
|
|
|
* Time: 22:34
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
|
|
|
|
|
|
use App\Events\ProductSaved;
|
|
|
|
|
use App\Forms\ProductForm;
|
|
|
|
|
use App\Models\Factor;
|
|
|
|
|
use App\Models\ParamedicLevel;
|
|
|
|
|
use App\Models\Product;
|
|
|
|
|
use App\Models\ProductParamedicLevel;
|
|
|
|
|
use App\Models\Project;
|
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
|
use Kris\LaravelFormBuilder\FormBuilder;
|
|
|
|
|
|
|
|
|
|
class ProductController extends CommonController
|
|
|
|
|
{
|
|
|
|
|
public $bladePath = "admin.product";
|
|
|
|
|
public $urlPrefix = "admin/product";
|
|
|
|
|
public $modelName = "产品";
|
|
|
|
|
public $modelClass = Product::class;
|
|
|
|
|
public $formClass = ProductForm::class;
|
|
|
|
|
|
|
|
|
|
public function index(Request $request)
|
|
|
|
|
{
|
|
|
|
|
$data = $this->model->with("productItems")->paginate(10);
|
|
|
|
|
$projects = (new Project())->get();
|
|
|
|
|
return view($this->bladePath . ".index", compact("data", "projects"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function create(FormBuilder $formBuilder)
|
|
|
|
|
{
|
|
|
|
|
$project = (new Project())->with("paramedicLevels")->find(request()->project_id);
|
|
|
|
|
$productParamedicLevels = [];
|
|
|
|
|
foreach ($project->paramedicLevels as $paramedicLevel) {
|
|
|
|
|
$productParamedicLevels[] = new ProductParamedicLevel([
|
|
|
|
|
"paramedic_level_id" => $paramedicLevel->id,
|
|
|
|
|
"paramedic_level_name" => $paramedicLevel->name
|
|
|
|
|
]);
|
|
|
|
|
}
|
|
|
|
|
$vo = new Product([
|
|
|
|
|
"project_id" => $project->id,
|
|
|
|
|
"productParamedicLevels" => $productParamedicLevels
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
$form = $formBuilder->create($this->formClass, [
|
|
|
|
|
"method" => "POST",
|
|
|
|
|
"id" => "fm",
|
|
|
|
|
"url" => url($this->urlPrefix . "/store"),
|
|
|
|
|
"model" => $vo
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
return view($this->bladePath . ".create", compact("form", "project", "vo"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function stored($model)
|
|
|
|
|
{
|
|
|
|
|
event(new ProductSaved($model));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function edit($id = null, Request $request, FormBuilder $formBuilder)
|
|
|
|
|
{
|
|
|
|
|
$vo = (new Product())->with(["productItems", "productParamedicLevels" => function ($query) {
|
|
|
|
|
$query->has("paramedicLevel");
|
|
|
|
|
}])->find($id ?: $request->id);
|
|
|
|
|
|
|
|
|
|
dd($vo);
|
|
|
|
|
|
|
|
|
|
$project = (new Project())->with("paramedicLevels")->find($vo->project_id);
|
|
|
|
|
|
|
|
|
|
foreach ($vo->productParamedicLevels as $level) {
|
|
|
|
|
$level->paramedic_level_name = $level->paramedicLevel->name;
|
|
|
|
|
}
|
|
|
|
|
foreach ($project->paramedicLevels as $paramedicLevel) {
|
|
|
|
|
if (in_array($paramedicLevel->id, $vo->productParamedicLevels->pluck("paramedic_level_id")->toArray())) continue;
|
|
|
|
|
$vo->productParamedicLevels->push(new ProductParamedicLevel([
|
|
|
|
|
"paramedic_level_id" => $paramedicLevel->id,
|
|
|
|
|
"paramedic_level_name" => $paramedicLevel->name
|
|
|
|
|
]));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$form = $formBuilder->create($this->formClass, [
|
|
|
|
|
"method" => "POST",
|
|
|
|
|
"id" => "fm",
|
|
|
|
|
"url" => url($this->urlPrefix . "/update/" . $vo->id),
|
|
|
|
|
"class" => "form form-horizontal validate-form",
|
|
|
|
|
"model" => $vo
|
|
|
|
|
]);
|
|
|
|
|
$form->add("_previous", "hidden", ["value" => (url()->previous())]);
|
|
|
|
|
$form->modify("statistic_factor_id", 'select', ["label" => "统计价格因素",
|
|
|
|
|
"choices" => (new Factor())->where('product_id', $request->id)->get()->pluck("name", "id")->toArray()]
|
|
|
|
|
);
|
|
|
|
|
return view($this->bladePath . ".create", compact("form", "project", "vo"));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function updated($model)
|
|
|
|
|
{
|
|
|
|
|
event(new ProductSaved($model));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function getParamedicLevels(Request $request)
|
|
|
|
|
{
|
|
|
|
|
$res = (new ParamedicLevel())->where("project_id", $request->project_id)->get();
|
|
|
|
|
return $this->ajaxResponse($res);
|
|
|
|
|
}
|
|
|
|
|
}
|