Prevent deleting manufactureres via API if they have items/models

This commit is contained in:
snipe 2018-09-24 19:04:00 -07:00
parent c97db3259f
commit d5cf0f1fbd

View file

@ -83,7 +83,7 @@ class ManufacturersController extends Controller
public function show($id) public function show($id)
{ {
$this->authorize('view', Manufacturer::class); $this->authorize('view', Manufacturer::class);
$manufacturer = Manufacturer::findOrFail($id); $manufacturer = Manufacturer::withCount('assets as assets_count', 'licenses as licenses_count', 'consumables as consumables_count', 'accessories as accessories_count', 'models as models_count' )->findOrFail($id);
return (new ManufacturersTransformer)->transformManufacturer($manufacturer); return (new ManufacturersTransformer)->transformManufacturer($manufacturer);
} }
@ -120,11 +120,21 @@ class ManufacturersController extends Controller
*/ */
public function destroy($id) public function destroy($id)
{ {
$this->authorize('delete', Manufacturer::class); $this->authorize('delete', Manufacturer::class);
$manufacturer = Manufacturer::findOrFail($id); $manufacturer = Manufacturer::withCount('assets as assets_count', 'licenses as licenses_count', 'consumables as consumables_count', 'accessories as accessories_count', 'models as models_count' )->findOrFail($id);
$this->authorize('delete', $manufacturer); $this->authorize('delete', $manufacturer);
if (($manufacturer->assets_count == 0) && ($manufacturer->licenses_count==0) && ($manufacturer->consumables_count==0) && ($manufacturer->accessories_count==0) && ($manufacturer->models==0) && ($manufacturer->deleted_at=='')) {
$manufacturer->delete(); $manufacturer->delete();
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/manufacturers/message.delete.success'))); return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/manufacturers/message.delete.success')));
}
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/manufacturers/message.delete.error')));
} }