У меня есть таблица предзаказов, вкючающая такие поля
$table->increments('id');
$table->char('group_cd', 16);
$table->char('group_sub_cd', 2);
...
$table->integer('customer_id')->unsigned()->index();
group_cd идентификатор компании и group_sub_cd идентификатор филиала и cusotmer_id идентификатор клиента
Существуют 2 метода создать нового клиента.
Этот не получает идентификатора прездаказа
public function create()
{
$customer = new Customer;
return view('folder1.customer', compact('customer'));
}
а этот получает
public function createWithPreorder($preorderId)
{
$this->checkPreorderGroup($preorderId);
$customer = new Customer;
return view('customer.customer', compact('customer'));
}
checkPreorderGroup проверяет, относится ли этот предзаказ к той же компании, к которой относится залогиненый пользователь.
private function checkPreorderGroup($preorderId)
{
$preorder = EstimateInfo::where('id', $preorderId)->group()->get();
if ($preorder->isEmpty()) {
return abort(404);
}
return;
}
->group() из модели EstimateInfo( предзаказ).
public function scopeGroup($query)
{
$authUser= Auth::user();
return $query->where('group_cd', $authUser->group_cd)->where('group_sub_cd', $authUser->group_sub_cd);
}
Мне кажется неправильным, что в контроллере клиента проверяется предзаказ.
Так же в других методах аналогично я проверяю самого клиента, относится ли он к группе пользователя.
И то что у меня оба методы идентичны, create и createWithPreorder мне не нравится.
1. Поэтому мой вопрос, как вы проводите такого рода проверки?
2. Если стоящие пакаджи включающие подобный функционал и расширающие? Испоьзуете ли вы их?
Изпользую laravel 5.1