cloning accessories first bit

This commit is contained in:
akemidx 2023-03-07 16:41:48 -05:00
parent d954c841e6
commit ec5836dab4
4 changed files with 45 additions and 1 deletions

View file

@ -115,6 +115,36 @@ class AccessoriesController extends Controller
}
/**
* Returns a view that presents a form to clone an accessory.
*
* @author [J. Vinsmoke]
* @param int $accessoryId
* @since [v6.0]
* @return View
*/
public function getClone($accessoryId = null)
{
$this->authorize('create', Accesory::class);
// Check if the asset exists
if (is_null($accessory_to_clone = Accessory::find($accessoryId))) {
// Redirect to the asset management page
return redirect()->route('accessory.index')->with('error', trans('admin/accessories/message.does_not_exist'));
}
$accessory = clone $accessory_to_clone;
$accessory->id = null;
$accessory->location_id = null;
//duplicate the image for the cloned accessory
copy('uploads/accessories/usb-keyboard.jpg','uploads/accessories/testimage.jpg');
return view('accessories/edit')
->with('item', $accessory);
}
/**
* Save edited Accessory from form post

View file

@ -4,7 +4,7 @@ namespace App\Http\Transformers;
use App\Helpers\Helper;
use App\Models\Accessory;
use Gate;
use Illuminate\Support\Facades\Gate;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\Storage;
@ -51,6 +51,7 @@ class AccessoriesTransformer
'checkin' => false,
'update' => Gate::allows('update', Accessory::class),
'delete' => Gate::allows('delete', Accessory::class),
'clone' => (Gate::allows('create', Accessory::class) && ($accessory->created_at == 'datetime')),
];
$permissions_array['user_can_checkout'] = false;

View file

@ -39,6 +39,11 @@
<a href="{{ route('accessories.edit', $accessory->id) }}">{{ trans('admin/accessories/general.edit') }}</a>
</li>
@endcan
@can('update', \App\Models\Accessory::class)
<li role="menuitem">
<a href="{{ route('clone/accessories', $accessory->id) }}">Clone</a>
</li>
@endcan
</ul>
</div>
@endcan

View file

@ -42,6 +42,14 @@ Route::group(['prefix' => 'accessories', 'middleware' => ['auth']], function ()
[Accessories\AccessoriesFilesController::class, 'show']
)->name('show.accessoryfile');
Route::get('{accessoryId}/clone',
[Accessories\AccessoriesController::class, 'getClone']
)->name('clone/accessories');
Route::post('{accessoryId}/clone',
[Accessories\AccessoriesController::class, 'postCreate']
);
});
Route::resource('accessories', Accessories\AccessoriesController::class, [