Add edit supplier products (phone)

This commit is contained in:
2025-05-18 21:14:02 +10:00
parent ac702397a6
commit 7fd1ce9584
9 changed files with 166 additions and 75 deletions

View File

@@ -73,6 +73,20 @@ class SupplierController extends Controller
->with('success','File uploaded');
}
public function product_new(SupplierProductAddEdit $request)
{
$o = Supplier::offeringTypeClass($request->validated('offering_type'));
foreach (Arr::except($request->validated(),['id','offering_type']) as $key => $value)
$o->{$key} = $value;
$o->save();
return redirect()
->back()
->with('success','Saved');
}
public function product_addedit(SupplierProductAddEdit $request,Supplier $o,int $id,string $type)
{
// Quick validation
@@ -88,7 +102,7 @@ class SupplierController extends Controller
// @todo these are broadband requirements - get them from the broadband class.
foreach (Arr::only($request->validated(),[
'supplier_detail_id',
'product_id'.
'product_id',
'product_desc',
'base_cost',
'setup_cost',
@@ -107,7 +121,7 @@ class SupplierController extends Controller
'extra_down_offpeak',
'extra_up_offpeak',
]) as $key => $value)
$oo->$key = $value;
$oo->{$key} = $value;
// Our boolean values
foreach (Arr::only($request->validated(),['active','extra_shaped','extra_charged']) as $key => $value)
@@ -115,6 +129,17 @@ class SupplierController extends Controller
break;
case 'phone':
$oo = Supplier\Phone::findOrNew($id);
foreach (Arr::except($oo->validation(),[
'id',
'offering_type',
]) as $key => $value)
$oo->{$key} = $request->validated($key);
break;
default:
throw new \Exception('Unknown offering type:'.$request->offering_type);
}

View File

@@ -5,56 +5,28 @@ namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
use App\Models\Supplier;
class SupplierProductAddEdit extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::user()->isWholesaler();
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules(Request $request)
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// @todo these are broadband requirements - perhaps move them to the broadband class.
// @todo Enhance the validation so that extra_* values are not accepted if base_* values are not included.
return [
'id' => 'required|nullable',
'offering_type' => ['required',Rule::in(Supplier::offeringTypeKeys()->toArray())],
'supplier_detail_id' => 'required|exists:supplier_details,id',
'active' => 'sometimes|accepted',
'extra_shaped' => 'sometimes|accepted',
'extra_charged' => 'sometimes|accepted',
'product_id' => 'required|string|min:2',
'product_desc' => 'required|string|min:2',
'base_cost' => 'required|numeric|min:.01',
'setup_cost' => 'nullable|numeric',
'contract_term' => 'nullable|numeric|min:1',
'metric' => 'nullable|numeric|min:1',
'speed' => 'nullable|string|max:64',
'technology' => 'nullable|string|max:255',
'offpeak_start' => 'nullable|date_format:H:i',
'offpeak_end' => 'nullable|date_format:H:i',
'base_down_peak' => 'nullable|numeric',
'base_up_peak' => 'nullable|numeric',
'base_down_offpeak' => 'nullable|numeric',
'base_up_offpeak' => 'nullable|numeric',
'extra_down_peak' => 'nullable|numeric',
'extra_up_peak' => 'nullable|numeric',
'extra_down_offpeak' => 'nullable|numeric',
'extra_up_offpeak' => 'nullable|numeric',
];
return Auth::user()->isWholesaler();
}
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules(Request $request): array
{
return Supplier::offeringTypeClass($request->offering_type ?? '')->validation();
}
}