fixed category and contact form group

This commit is contained in:
Denis Duliçi
2022-07-25 18:40:05 +03:00
parent cc8ca2a740
commit f6c91a2817
3 changed files with 35 additions and 46 deletions

View File

@ -4,6 +4,7 @@ namespace App\View\Components\Form\Group;
use App\Abstracts\View\Components\Form;
use App\Models\Common\Contact as Model;
use Illuminate\Support\Str;
class Contact extends Form
{
@ -26,51 +27,37 @@ class Contact extends Form
*/
public function render()
{
$type = $this->type;
if (empty($this->name)) {
$this->name = 'contact_id';
}
switch ($type) {
case 'customer':
$this->prepareCustomer();
break;
case 'vendor':
$this->prepareVendor();
break;
$this->setRoutes();
$this->label = trans_choice('general.' . Str::plural($this->type), 1);
$this->contacts = Model::type($this->type)->enabled()->orderBy('name')->take(setting('default.select_limit'))->get();
$model = $this->getParentData('model');
if (! empty($model)) {
$this->selected = $model->contact_id;
if (! $this->contacts->has($model->contact_id) && ($contact = $model->contact)) {
$this->contacts->put($contact->id, $contact->name);
}
}
return view($this->view);
}
protected function prepareCustomer()
public function setRoutes(): void
{
if (empty($this->name)) {
$this->name = 'contact_id';
}
$alias = config('type.contact.' . $this->type . '.alias');
$prefix = config('type.contact.' . $this->type . '.route.prefix');
$this->path = route('modals.customers.create');
$this->remoteAction = route('customers.index');
$this->label = trans_choice('general.customers', 1);
$parameters = ['search' => 'enabled:1'];
$this->contacts = Model::customer()->enabled()->orderBy('name')->take(setting('default.select_limit'))->get();
if (! empty($model) && $model->customer && ! $this->contacts->has($model->contact_id)) {
$this->contacts->put($model->customer->id, $model->customer->name);
}
}
protected function prepareVendor()
{
if (empty($this->name)) {
$this->name = 'contact_id';
}
$this->path = route('modals.vendors.create');
$this->remoteAction = route('vendors.index');
$this->label = trans_choice('general.vendors', 1);
$this->contacts = Model::vendor()->enabled()->orderBy('name')->take(setting('default.select_limit'))->get();
if (! empty($model) && $model->vendor && ! $this->contacts->has($model->contact_id)) {
$this->contacts->put($model->vendor->id, $model->vendor->name);
}
$this->path = ! empty($alias) ? route("{$alias}.modals.{$prefix}.create") : route("modals.{$prefix}.create");
$this->remoteAction = ! empty($alias) ? route("{$alias}.{$prefix}.index", $parameters) : route("{$prefix}.index", $parameters);
}
}