¨4.0.1¨

This commit is contained in:
¨NW¨
2023-12-03 14:07:47 +00:00
parent c08b36d1b6
commit f35052522d
1112 changed files with 43019 additions and 24987 deletions

View File

@@ -0,0 +1,73 @@
<?php
namespace Modules\Variation\Http\Controllers\Admin;
use Illuminate\Contracts\View\View;
use Illuminate\Contracts\View\Factory;
use Modules\Admin\Traits\HasCrudActions;
use Modules\Variation\Entities\Variation;
use Illuminate\Contracts\Foundation\Application;
use Modules\Variation\Transformers\VariationResource;
use Modules\Variation\Http\Requests\SaveVariationRequest;
class VariationController
{
use HasCrudActions;
/**
* Model for the resource.
*
* @var string
*/
protected string $model = Variation::class;
/**
* Label of the resource.
*
* @var string
*/
protected string $label = 'variation::variations.variation';
/**
* View path of the resource.
*
* @var string
*/
protected string $viewPath = 'variation::admin.variations';
/**
* Form requests for the resource.
*
* @var array|string
*/
protected string|array $validation = SaveVariationRequest::class;
public function show($id): VariationResource
{
$entity = $this->getEntity($id);
return new VariationResource($entity);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
*
* @return Application|Factory|View
*/
public function edit($id): View|Factory|Application
{
$entity = $this->getEntity($id);
$variationResource = new VariationResource($entity);
return view("{$this->viewPath}.edit",
[
'variation' => $entity,
'variation_resource' => $variationResource->response()->content(),
]
);
}
}

View File

@@ -0,0 +1,57 @@
<?php
namespace Modules\Variation\Http\Requests;
use Illuminate\Validation\Rule;
use Modules\Core\Http\Requests\Request;
use Modules\Variation\Entities\Variation;
class SaveVariationRequest extends Request
{
/**
* Available attributes.
*
* @var string
*/
protected $availableAttributes = 'variation::attributes';
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'type' => ['required', Rule::in(Variation::TYPES)],
'values' => 'array|min:1',
'values.*.label' => 'required|distinct',
'values.*.color' => 'required_if:type,color|regex:/^#(?:[0-9a-fA-F]{3}){1,2}$/',
'values.*.image' => 'required_if:type,image',
];
}
public function __validationData(): array
{
return request()
->merge([
'values' => $this->filter($this->values ?? []),
])
->all();
}
private function filter($values = [])
{
return array_filter($values, function ($value) {
if (!array_has($value, 'label')) {
return true;
}
return !is_null($value['label']);
});
}
}