2016-03-25 01:18:05 -07:00
< ? php
2021-06-10 13:15:52 -07:00
2016-03-25 01:18:05 -07:00
namespace App\Http\Controllers ;
2017-10-19 16:25:24 -07:00
use App\Http\Requests\ImageUploadRequest ;
2016-03-25 01:18:05 -07:00
use App\Models\Supplier ;
2018-07-24 19:35:26 -07:00
use Illuminate\Support\Facades\Auth ;
2024-07-04 14:52:49 -07:00
use Illuminate\Http\RedirectResponse ;
use \Illuminate\Contracts\View\View ;
2016-03-25 01:18:05 -07:00
2016-04-07 13:21:09 -07:00
/**
* This controller handles all actions related to Suppliers for
* the Snipe - IT Asset Management application .
*
* @ version v1 . 0
*/
2016-03-25 01:18:05 -07:00
class SuppliersController extends Controller
{
/**
* Show a list of all suppliers
*
2016-12-19 22:00:50 -08:00
* @ return \Illuminate\Contracts\View\View
2018-07-24 19:35:26 -07:00
* @ throws \Illuminate\Auth\Access\AuthorizationException
2016-03-25 01:18:05 -07:00
*/
2024-07-04 14:52:49 -07:00
public function index () : View
2016-03-25 01:18:05 -07:00
{
2018-01-20 04:39:31 -08:00
$this -> authorize ( 'view' , Supplier :: class );
2018-12-12 18:23:39 -08:00
return view ( 'suppliers/index' );
2016-03-25 01:18:05 -07:00
}
/**
* Supplier create .
*
*/
2024-07-04 14:52:49 -07:00
public function create () : View
2016-03-25 01:18:05 -07:00
{
2018-01-20 04:39:31 -08:00
$this -> authorize ( 'create' , Supplier :: class );
2017-06-09 16:44:03 -07:00
return view ( 'suppliers/edit' ) -> with ( 'item' , new Supplier );
2016-03-25 01:18:05 -07:00
}
/**
* Supplier create form processing .
*
2018-07-24 19:35:26 -07:00
* @ param ImageUploadRequest $request
2016-03-25 01:18:05 -07:00
*/
2024-07-04 14:52:49 -07:00
public function store ( ImageUploadRequest $request ) : RedirectResponse
2016-03-25 01:18:05 -07:00
{
2018-01-20 04:39:31 -08:00
$this -> authorize ( 'create' , Supplier :: class );
2016-03-25 01:18:05 -07:00
// Create a new supplier
$supplier = new Supplier ;
// Save the location data
2021-06-10 13:15:52 -07:00
$supplier -> name = request ( 'name' );
$supplier -> address = request ( 'address' );
$supplier -> address2 = request ( 'address2' );
$supplier -> city = request ( 'city' );
$supplier -> state = request ( 'state' );
$supplier -> country = request ( 'country' );
$supplier -> zip = request ( 'zip' );
$supplier -> contact = request ( 'contact' );
$supplier -> phone = request ( 'phone' );
$supplier -> fax = request ( 'fax' );
$supplier -> email = request ( 'email' );
$supplier -> notes = request ( 'notes' );
$supplier -> url = $supplier -> addhttp ( request ( 'url' ));
2024-09-17 14:16:41 -07:00
$supplier -> created_by = auth () -> id ();
2020-08-24 18:32:40 -07:00
$supplier = $request -> handleImages ( $supplier );
2016-03-25 01:18:05 -07:00
if ( $supplier -> save ()) {
2016-12-15 18:20:41 -08:00
return redirect () -> route ( 'suppliers.index' ) -> with ( 'success' , trans ( 'admin/suppliers/message.create.success' ));
2016-03-25 01:18:05 -07:00
}
2021-06-10 13:15:52 -07:00
2016-04-28 21:06:41 -07:00
return redirect () -> back () -> withInput () -> withErrors ( $supplier -> getErrors ());
2016-03-25 01:18:05 -07:00
}
/**
* Supplier update .
*
2018-07-24 19:35:26 -07:00
* @ param int $supplierId
2016-03-25 01:18:05 -07:00
*/
2025-02-18 18:49:05 -08:00
public function edit ( Supplier $supplier ) : View | RedirectResponse
2016-03-25 01:18:05 -07:00
{
2019-10-28 11:44:48 -07:00
$this -> authorize ( 'update' , Supplier :: class );
2025-02-18 19:29:31 -08:00
return view ( 'suppliers/edit' ) -> with ( 'item' , $supplier );
2016-03-25 01:18:05 -07:00
}
/**
* Supplier update form processing page .
*
2018-07-24 19:35:26 -07:00
* @ param int $supplierId
2016-03-25 01:18:05 -07:00
*/
2025-02-18 18:49:05 -08:00
public function update ( ImageUploadRequest $request , Supplier $supplier ) : RedirectResponse
2016-03-25 01:18:05 -07:00
{
2019-10-28 11:44:48 -07:00
$this -> authorize ( 'update' , Supplier :: class );
2016-03-25 01:18:05 -07:00
// Save the data
2021-06-10 13:15:52 -07:00
$supplier -> name = request ( 'name' );
$supplier -> address = request ( 'address' );
$supplier -> address2 = request ( 'address2' );
$supplier -> city = request ( 'city' );
$supplier -> state = request ( 'state' );
$supplier -> country = request ( 'country' );
$supplier -> zip = request ( 'zip' );
$supplier -> contact = request ( 'contact' );
$supplier -> phone = request ( 'phone' );
$supplier -> fax = request ( 'fax' );
$supplier -> email = request ( 'email' );
$supplier -> url = $supplier -> addhttp ( request ( 'url' ));
$supplier -> notes = request ( 'notes' );
2020-08-24 18:32:40 -07:00
$supplier = $request -> handleImages ( $supplier );
2017-11-07 11:28:13 -08:00
2016-03-25 01:18:05 -07:00
if ( $supplier -> save ()) {
2016-12-15 18:20:41 -08:00
return redirect () -> route ( 'suppliers.index' ) -> with ( 'success' , trans ( 'admin/suppliers/message.update.success' ));
2016-03-25 01:18:05 -07:00
}
2016-04-28 21:06:41 -07:00
return redirect () -> back () -> withInput () -> withErrors ( $supplier -> getErrors ());
2016-03-25 01:18:05 -07:00
}
/**
* Delete the given supplier .
*
2018-07-24 19:35:26 -07:00
* @ param int $supplierId
2016-03-25 01:18:05 -07:00
*/
2024-07-04 14:52:49 -07:00
public function destroy ( $supplierId ) : RedirectResponse
2016-03-25 01:18:05 -07:00
{
2018-01-20 04:39:31 -08:00
$this -> authorize ( 'delete' , Supplier :: class );
2021-06-10 13:15:52 -07:00
if ( is_null ( $supplier = Supplier :: with ( 'asset_maintenances' , 'assets' , 'licenses' ) -> withCount ( 'asset_maintenances as asset_maintenances_count' , 'assets as assets_count' , 'licenses as licenses_count' ) -> find ( $supplierId ))) {
2016-12-15 18:18:13 -08:00
return redirect () -> route ( 'suppliers.index' ) -> with ( 'error' , trans ( 'admin/suppliers/message.not_found' ));
2016-03-25 01:18:05 -07:00
}
2017-10-18 05:47:20 -07:00
if ( $supplier -> assets_count > 0 ) {
return redirect () -> route ( 'suppliers.index' ) -> with ( 'error' , trans ( 'admin/suppliers/message.delete.assoc_assets' , [ 'asset_count' => ( int ) $supplier -> assets_count ]));
}
if ( $supplier -> asset_maintenances_count > 0 ) {
return redirect () -> route ( 'suppliers.index' ) -> with ( 'error' , trans ( 'admin/suppliers/message.delete.assoc_maintenances' , [ 'asset_maintenances_count' => $supplier -> asset_maintenances_count ]));
2016-03-25 01:18:05 -07:00
}
2017-10-18 05:47:20 -07:00
if ( $supplier -> licenses_count > 0 ) {
return redirect () -> route ( 'suppliers.index' ) -> with ( 'error' , trans ( 'admin/suppliers/message.delete.assoc_licenses' , [ 'licenses_count' => ( int ) $supplier -> licenses_count ]));
}
$supplier -> delete ();
2021-06-10 13:15:52 -07:00
2017-10-18 05:47:20 -07:00
return redirect () -> route ( 'suppliers.index' ) -> with ( 'success' ,
trans ( 'admin/suppliers/message.delete.success' )
);
2016-03-25 01:18:05 -07:00
}
/**
2016-12-19 22:00:50 -08:00
* Get the asset information to present to the supplier view page
*
* @ param null $supplierId
* @ internal param int $assetId
*/
2025-02-18 18:49:05 -08:00
public function show ( Supplier $supplier ) : View | RedirectResponse
2016-03-25 01:18:05 -07:00
{
2022-02-13 10:58:12 -08:00
$this -> authorize ( 'view' , Supplier :: class );
2025-02-18 18:49:05 -08:00
return view ( 'suppliers/view' , compact ( 'supplier' ));
2016-03-25 01:18:05 -07:00
}
}