Basic sanity checking on some of the API controllers

This commit is contained in:
snipe 2017-03-11 08:03:16 -08:00
parent 9027bd1d9d
commit 2a4bf65883
6 changed files with 104 additions and 6 deletions

View file

@ -148,6 +148,11 @@ class AssetModelsController extends Controller
$this->authorize('delete', AssetModel::class);
$assetmodel = AssetModel::findOrFail($id);
$this->authorize('delete', $assetmodel);
if ($assetmodel->assets()->count() > 0) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/models/message.assoc_users')));
}
$assetmodel->delete();
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/assetmodels/message.delete.success')));

View file

@ -113,7 +113,16 @@ class CategoriesController extends Controller
{
$this->authorize('delete', Category::class);
$category = Category::findOrFail($id);
$this->authorize('delete', $category);
if ($category->has_models() > 0) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/categories/message.assoc_items', ['asset_type'=>'model'])));
} elseif ($category->accessories()->count() > 0) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/categories/message.assoc_items', ['asset_type'=>'accessory'])));
} elseif ($category->consumables()->count() > 0) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/categories/message.assoc_items', ['asset_type'=>'consumable'])));
} elseif ($category->components()->count() > 0) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/categories/message.assoc_items', ['asset_type'=>'component'])));
}
$category->delete();
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/categories/message.delete.success')));

View file

@ -117,9 +117,24 @@ class CompaniesController extends Controller
$this->authorize('delete', Company::class);
$company = Company::findOrFail($id);
$this->authorize('delete', $company);
try {
$company->delete();
return response()
->json(Helper::formatStandardApiResponse('success', null, trans('admin/companies/message.delete.success')));
} catch (\Illuminate\Database\QueryException $exception) {
/*
* NOTE: This happens when there's a foreign key constraint violation
* For example when rows in other tables are referencing this company
*/
if ($exception->getCode() == 23000) {
return response()
->json(Helper::formatStandardApiResponse('error', null, trans('admin/companies/message.assoc_users')));
} else {
throw $exception;
}
}
}
}

View file

@ -35,4 +35,26 @@ class CustomFieldsController extends Controller
return $fieldset->fields()->sync($fields);
}
/**
* Delete a custom field.
*
* @author [Brady Wetherington] [<uberbrady@gmail.com>]
* @since [v1.8]
* @return Redirect
*/
public function destroy($field_id)
{
$field = CustomField::find($field_id);
if ($field->fieldset->count() >0) {
return response()->json(Helper::formatStandardApiResponse('error', null, 'Field is in use.'));
} else {
$field->delete();
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/custom_fields/message.field.delete.success')));
}
}
}

View file

@ -6,8 +6,7 @@ use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Helpers\Helper;
use App\Models\Depreciation;
use App\Models\Asset;
use App\Http\Transformers\DatatablesTransformer;
use App\Http\Transformers\DepreciationsTransformer;
class DepreciationsController extends Controller
{
@ -23,7 +22,7 @@ class DepreciationsController extends Controller
$this->authorize('view', Depreciation::class);
$allowed_columns = ['id','name','created_at'];
$depreciations = Depreciation::select('id','name','months');
$depreciations = Depreciation::select('id','name','months','user_id','created_at','updated_at');
if ($request->has('search')) {
$depreciations = $depreciations->TextSearch($request->input('search'));
@ -37,7 +36,7 @@ class DepreciationsController extends Controller
$total = $depreciations->count();
$depreciations = $depreciations->skip($offset)->take($limit)->get();
return (new DatatablesTransformer)->transformDatatables($depreciations, $total);
return (new DepreciationsTransformer)->transformDepreciations($depreciations, $total);
}
@ -74,7 +73,7 @@ class DepreciationsController extends Controller
{
$this->authorize('view', Depreciation::class);
$depreciation = Depreciation::findOrFail($id);
return $depreciation;
return (new DepreciationsTransformer)->transformDepreciation($depreciation);
}
@ -113,6 +112,11 @@ class DepreciationsController extends Controller
$this->authorize('delete', Depreciation::class);
$depreciation = Depreciation::findOrFail($id);
$this->authorize('delete', $depreciation);
if ($depreciation->has_models() > 0) {
return response()->json(Helper::formatStandardApiResponse('error', trans('admin/depreciations/message.assoc_users')));
}
$depreciation->delete();
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/depreciations/message.delete.success')));

View file

@ -0,0 +1,43 @@
<?php
namespace App\Http\Transformers;
use App\Models\Depreciation;
use Illuminate\Database\Eloquent\Collection;
use Gate;
use App\Helpers\Helper;
class DepreciationsTransformer
{
public function transformDepreciations (Collection $depreciations)
{
$array = array();
foreach ($depreciations as $depreciation) {
$array[] = self::transformDepreciation($depreciation);
}
return (new DatatablesTransformer)->transformDatatables($array);
}
public function transformDepreciation (Depreciation $depreciation)
{
$array = [
'id' => e($depreciation->id),
'name' => e($depreciation->name),
'months' => $depreciation->months . ' '. trans('general.months'),
'created_at' => Helper::getFormattedDateObject($depreciation->created_at, 'datetime'),
'updated_at' => Helper::getFormattedDateObject($depreciation->updated_at, 'datetime'),
];
$permissions_array['available_actions'] = [
'update' => Gate::allows('update', Depreciation::class) ? true : false,
'delete' => Gate::allows('delete', Depreciation::class) ? true : false,
];
$array += $permissions_array;
return $array;
}
}