Move user suppliers to account suppliers

This commit is contained in:
2024-07-23 22:17:09 +10:00
parent b145856ce9
commit 46075745d2
10 changed files with 236 additions and 118 deletions

View File

@@ -4,14 +4,12 @@ namespace App\Http\Controllers;
use Carbon\Carbon;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Session;
use Illuminate\Validation\Rule;
use App\Http\Requests\UserEdit;
use App\Models\{Supplier,User};
use App\Http\Requests\{AccountSupplierAdd,UserEdit};
use App\Models\{Account,Supplier,User};
class UserController extends Controller
{
@@ -38,23 +36,15 @@ class UserController extends Controller
/**
* Add a supplier to a user's profile
*
* @param Request $request
* @param User $o
* @return \Illuminate\Http\RedirectResponse
* @param AccountSupplierAdd $request
* @param Account $o
* @return RedirectResponse
*/
public function supplier_addedit(Request $request,User $o)
public function supplier_addedit(AccountSupplierAdd $request,Account $o): RedirectResponse
{
Session::put('supplier_update',true);
$validated = $request->validate([
'id'=> ['required','string',Rule::unique('supplier_user')->where(fn ($query) => $query->where('supplier_id',$request->supplier_id)->where('user_id','<>',$o->id))],
'supplier_id'=>'required|exists:suppliers,id',
]);
$o->suppliers()->attach([
$validated['supplier_id'] => [
'id'=>$validated['id'],
'site_id'=>$o->site_id,
$request->validated('supplier_id') => [
'supplier_ref'=>$request->validated('supplier_ref'),
'created_at'=>Carbon::now(),
]
]);
@@ -67,13 +57,13 @@ class UserController extends Controller
/**
* Remove a supplier from a user's profile
*
* @param User $o
* @param Account $o
* @param Supplier $so
* @return \Illuminate\Http\RedirectResponse
* @return RedirectResponse
*/
public function supplier_delete(User $o,Supplier $so)
public function supplier_delete(Account $o,Supplier $so): RedirectResponse
{
Session::put('supplier_update',true);
Session::put('supplier_update',TRUE);
$o->suppliers()->detach([$so->id]);

View File

@@ -0,0 +1,42 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Gate;
use Illuminate\Support\Facades\Session;
use Illuminate\Validation\Rule;
class AccountSupplierAdd extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return Gate::allows('wholesaler');
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
Session::put('supplier_update',true);
return [
'supplier_ref'=> [
'required',
'string',
'min:2',
Rule::unique('account_supplier')
->where(fn($query)=>$query
->where('account_id',request()->get('account_id')))
->where('supplier_id',request()->get('supplier_id')),
],
'supplier_id'=>'required|exists:suppliers,id',
];
}
}

View File

@@ -159,6 +159,15 @@ class Account extends Model implements IDs
->active();
}
/**
* Supplier configuration for this account
*/
public function suppliers()
{
return $this->belongsToMany(Supplier::class)
->withPivot('supplier_ref','created_at');
}
/**
* Taxes applicable for this account
*/

View File

@@ -132,17 +132,6 @@ class User extends Authenticatable implements IDs
return $this->hasOneThrough(Rtm::class,Account::class);
}
/**
* Supplier configuration for this user
*
* @deprecated To move to account->suppliers()
*/
public function suppliers()
{
return $this->belongsToMany(Supplier::class)
->withPivot('id','created_at');
}
/* ATTRIBUTES */
/**