osb/app/Traits/OrderServiceOptions.php

49 lines
1.0 KiB
PHP
Raw Permalink Normal View History

2018-08-11 05:09:41 +00:00
<?php
namespace App\Traits;
use Illuminate\Database\Eloquent\Model;
2018-08-11 05:09:41 +00:00
use Illuminate\Http\Request;
2022-02-01 05:40:46 +00:00
/**
* Creates and returns the Service Options Model for an Order.
*
* Example
*/
2018-08-11 05:09:41 +00:00
trait OrderServiceOptions
{
/*
2022-02-01 05:40:46 +00:00
// Information required during the order process
protected array $order_attributes = [
2018-08-11 05:09:41 +00:00
'options.input'=>[
'request'=>'options.input',
'key'=>'column',
'validation'=>'required|string:10',
'validation_message'=>'It is a required field.',
],
];
2022-02-01 05:40:46 +00:00
protected string $order_model = NULL;
2018-08-11 05:09:41 +00:00
*/
public function orderValidation(Request $request): ?Model
2018-08-11 05:09:41 +00:00
{
if ((! isset($this->order_attributes)) || (! isset($this->order_model)))
2018-08-11 05:09:41 +00:00
return NULL;
$request->validate(collect($this->order_attributes)->pluck('validation','request')->toArray());
2018-08-11 05:09:41 +00:00
$o = new $this->order_model;
$x = [];
foreach ($this->order_attributes as $k => $v)
$x[$v['key']] = $request->input($k);
$o->forceFill(array_undot($x));
// @todo Make this automatic
2021-12-17 05:09:03 +00:00
$o->site_id = config('site')->site_id;
2018-08-11 05:09:41 +00:00
return $o;
}
}