Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

General cleanup - Docblock fixes, adding type hinting, added tests, added asset model form validator #15029

Merged
merged 42 commits into from
Jul 8, 2024
Merged
Show file tree
Hide file tree
Changes from 40 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
89f01d7
Updated test names, added tests
snipe Jul 4, 2024
e98284f
Modernized helpers and use statements
snipe Jul 4, 2024
ae9085b
Modernize use statements, switch to auth()
snipe Jul 4, 2024
cc6f1cd
Added asset model request :(
snipe Jul 4, 2024
066ec8e
Added (failing) tests
snipe Jul 4, 2024
c570759
Fixed tests
snipe Jul 4, 2024
0f43b3f
Added another test
snipe Jul 4, 2024
ef56f59
Use asset model request
snipe Jul 4, 2024
d834ef5
Updated string
snipe Jul 4, 2024
7330bf5
Check for invalid
snipe Jul 4, 2024
a1eafc1
Moar typehinting
snipe Jul 4, 2024
d3b62aa
Few more
snipe Jul 4, 2024
1f28bf1
Added category tests
snipe Jul 4, 2024
6761ff4
Removed parens
snipe Jul 4, 2024
7215746
Prevent users from editing category types if there are still items
snipe Jul 4, 2024
8baef8d
Derp. Fixed typo
snipe Jul 4, 2024
96d1aea
More cleanup
snipe Jul 4, 2024
4089b4c
Added category tests
snipe Jul 5, 2024
6da6411
Added location API index test
snipe Jul 5, 2024
5ebcc3b
More type hinting
snipe Jul 5, 2024
1d45e0d
Added model create test
snipe Jul 5, 2024
75da626
Check for category ID
snipe Jul 5, 2024
34bde52
Fixed typos
snipe Jul 5, 2024
efb9d10
Removed debugging
snipe Jul 5, 2024
a0914cc
Fleshed out tests
snipe Jul 5, 2024
2a796fd
Format error
snipe Jul 5, 2024
b3cc7b1
More tests
snipe Jul 5, 2024
0d6fd26
More tweaks to the form request
snipe Jul 5, 2024
1d65781
More type-hinting
snipe Jul 5, 2024
0a7e053
Added basic Department UI tests
snipe Jul 5, 2024
16d6563
Removed duplicate tests
snipe Jul 5, 2024
24ad74f
Updated factories
snipe Jul 5, 2024
7455bf3
Added more locations tests
snipe Jul 5, 2024
97775fb
Location test additions
snipe Jul 5, 2024
283f24b
Derp. Renamed file
snipe Jul 5, 2024
978a027
Sigh. Renamed again
snipe Jul 5, 2024
f32bf35
Fixed another rename :-/
snipe Jul 5, 2024
a8ddb2f
Added non-circular tests
snipe Jul 5, 2024
e98823f
Added 403 to sad panda page
snipe Jul 5, 2024
8c6ecd3
Added more basic tests
snipe Jul 5, 2024
4c19b4d
Added aria-hidden="true" to error icon for accessibility
snipe Jul 8, 2024
202f507
Removed return
snipe Jul 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions app/Helpers/StorageHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,13 @@
namespace App\Helpers;

use Illuminate\Support\Facades\Storage;

use Illuminate\Http\Response;
use Illuminate\Http\RedirectResponse;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\StreamedResponse;
class StorageHelper
{
public static function downloader($filename, $disk = 'default')
public static function downloader($filename, $disk = 'default') : BinaryFileResponse | RedirectResponse | StreamedResponse
{
if ($disk == 'default') {
$disk = config('filesystems.default');
Expand Down
39 changes: 11 additions & 28 deletions app/Http/Controllers/Accessories/AccessoriesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
use App\Http\Requests\ImageUploadRequest;
use App\Models\Accessory;
use App\Models\Company;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Redirect;
use \Illuminate\Contracts\View\View;
use \Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Log;

/** This controller handles all actions related to Accessories for
Expand All @@ -27,24 +27,19 @@ class AccessoriesController extends Controller
* @author [A. Gianotto] [<[email protected]>]
* @see AccessoriesController::getDatatable() method that generates the JSON response
* @since [v1.0]
* @return View
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function index()
public function index() : View
{
$this->authorize('index', Accessory::class);

return view('accessories/index');
}

/**
* Returns a view with a form to create a new Accessory.
*
* @author [A. Gianotto] [<[email protected]>]
* @return View
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function create()
public function create() : View
{
$this->authorize('create', Accessory::class);
$category_type = 'accessory';
Expand All @@ -58,10 +53,8 @@ public function create()
*
* @author [A. Gianotto] [<[email protected]>]
* @param ImageUploadRequest $request
* @return \Illuminate\Http\RedirectResponse
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function store(ImageUploadRequest $request)
public function store(ImageUploadRequest $request) : RedirectResponse
{
$this->authorize(Accessory::class);

Expand All @@ -80,7 +73,7 @@ public function store(ImageUploadRequest $request)
$accessory->purchase_date = request('purchase_date');
$accessory->purchase_cost = request('purchase_cost');
$accessory->qty = request('qty');
$accessory->user_id = Auth::user()->id;
$accessory->user_id = auth()->id();
$accessory->supplier_id = request('supplier_id');
$accessory->notes = request('notes');

Expand All @@ -100,15 +93,12 @@ public function store(ImageUploadRequest $request)
*
* @author [A. Gianotto] [<[email protected]>]
* @param int $accessoryId
* @return View
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function edit($accessoryId = null)
public function edit($accessoryId = null) : View | RedirectResponse
{

if ($item = Accessory::find($accessoryId)) {
$this->authorize($item);

return view('accessories/edit', compact('item'))->with('category_type', 'accessory');
}

Expand All @@ -122,9 +112,8 @@ public function edit($accessoryId = null)
* @author [J. Vinsmoke]
* @param int $accessoryId
* @since [v6.0]
* @return View
*/
public function getClone($accessoryId = null)
public function getClone($accessoryId = null) : View | RedirectResponse
{

$this->authorize('create', Accessory::class);
Expand All @@ -151,10 +140,8 @@ public function getClone($accessoryId = null)
* @author [A. Gianotto] [<[email protected]>]
* @param ImageUploadRequest $request
* @param int $accessoryId
* @return \Illuminate\Http\RedirectResponse
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function update(ImageUploadRequest $request, $accessoryId = null)
public function update(ImageUploadRequest $request, $accessoryId = null) : RedirectResponse
{
if ($accessory = Accessory::withCount('users as users_count')->find($accessoryId)) {

Expand Down Expand Up @@ -205,10 +192,8 @@ public function update(ImageUploadRequest $request, $accessoryId = null)
*
* @author [A. Gianotto] [<[email protected]>]
* @param int $accessoryId
* @return \Illuminate\Http\RedirectResponse
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function destroy($accessoryId)
public function destroy($accessoryId) : RedirectResponse
{
if (is_null($accessory = Accessory::find($accessoryId))) {
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.not_found'));
Expand Down Expand Up @@ -243,10 +228,8 @@ public function destroy($accessoryId)
* @param int $accessoryID
* @see AccessoriesController::getDataView() method that generates the JSON response
* @since [v1.0]
* @return View
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function show($accessoryID = null)
public function show($accessoryID = null) : View | RedirectResponse
{
$accessory = Accessory::withCount('users as users_count')->find($accessoryID);
$this->authorize('view', $accessory);
Expand Down
20 changes: 7 additions & 13 deletions app/Http/Controllers/Accessories/AccessoriesFilesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@
use App\Http\Requests\UploadFileRequest;
use App\Models\Actionlog;
use App\Models\Accessory;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Storage;
use Symfony\Accessory\HttpFoundation\JsonResponse;
use Illuminate\Support\Facades\Log;
use \Illuminate\Contracts\View\View;
use \Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Response;

class AccessoriesFilesController extends Controller
{
Expand All @@ -19,20 +20,17 @@ class AccessoriesFilesController extends Controller
*
* @param UploadFileRequest $request
* @param int $accessoryId
* @return \Illuminate\Http\RedirectResponse
* @throws \Illuminate\Auth\Access\AuthorizationException
*@author [A. Gianotto] [<[email protected]>]
* @author [A. Gianotto] [<[email protected]>]
* @since [v1.0]
* @todo Switch to using the AssetFileRequest form request validator.
*/
public function store(UploadFileRequest $request, $accessoryId = null)
public function store(UploadFileRequest $request, $accessoryId = null) : RedirectResponse
{

if (config('app.lock_passwords')) {
return redirect()->route('accessories.show', ['accessory'=>$accessoryId])->with('error', trans('general.feature_disabled'));
}


$accessory = Accessory::find($accessoryId);

if (isset($accessory->id)) {
Expand Down Expand Up @@ -69,10 +67,8 @@ public function store(UploadFileRequest $request, $accessoryId = null)
* @since [v1.0]
* @param int $accessoryId
* @param int $fileId
* @return \Illuminate\Http\RedirectResponse
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function destroy($accessoryId = null, $fileId = null)
public function destroy($accessoryId = null, $fileId = null) : RedirectResponse
{
$accessory = Accessory::find($accessoryId);

Expand Down Expand Up @@ -107,10 +103,8 @@ public function destroy($accessoryId = null, $fileId = null)
* @since [v1.4]
* @param int $accessoryId
* @param int $fileId
* @return \Symfony\Accessory\HttpFoundation\Response
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function show($accessoryId = null, $fileId = null, $download = true)
public function show($accessoryId = null, $fileId = null, $download = true) : View | RedirectResponse | Response
{

Log::debug('Private filesystem is: '.config('filesystems.default'));
Expand Down
19 changes: 5 additions & 14 deletions app/Http/Controllers/Accessories/AccessoryCheckinController.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
use App\Models\Accessory;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use \Illuminate\Contracts\View\View;
use \Illuminate\Http\RedirectResponse;

class AccessoryCheckinController extends Controller
{
Expand All @@ -19,15 +20,10 @@ class AccessoryCheckinController extends Controller
* @param Request $request
* @param int $accessoryUserId
* @param string $backto
* @return View
* @internal param int $accessoryId
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function create($accessoryUserId = null, $backto = null)
public function create($accessoryUserId = null, $backto = null) : View | RedirectResponse
{
// Check if the accessory exists
if (is_null($accessory_user = DB::table('accessories_users')->find($accessoryUserId))) {
// Redirect to the accessory management page with error
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.not_found'));
}

Expand All @@ -44,15 +40,10 @@ public function create($accessoryUserId = null, $backto = null)
* @author [A. Gianotto] [<[email protected]>]
* @param null $accessoryUserId
* @param string $backto
* @return \Illuminate\Http\RedirectResponse
* @throws \Illuminate\Auth\Access\AuthorizationException
* @internal param int $accessoryId
*/
public function store(Request $request, $accessoryUserId = null, $backto = null)
public function store(Request $request, $accessoryUserId = null, $backto = null) : RedirectResponse
{
// Check if the accessory exists
if (is_null($accessory_user = DB::table('accessories_users')->find($accessoryUserId))) {
// Redirect to the accessory management page with error
return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.does_not_exist'));
}

Expand All @@ -70,7 +61,7 @@ public function store(Request $request, $accessoryUserId = null, $backto = null)
if (DB::table('accessories_users')->where('id', '=', $accessory_user->id)->delete()) {
$return_to = e($accessory_user->assigned_to);

event(new CheckoutableCheckedIn($accessory, User::find($return_to), Auth::user(), $request->input('note'), $checkin_at));
event(new CheckoutableCheckedIn($accessory, User::find($return_to), auth()->user(), $request->input('note'), $checkin_at));

return redirect()->route('accessories.show', $accessory->id)->with('success', trans('admin/accessories/message.checkin.success'));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Input;
use \Illuminate\Contracts\View\View;
use \Illuminate\Http\RedirectResponse;

class AccessoryCheckoutController extends Controller
{
Expand All @@ -19,10 +20,8 @@ class AccessoryCheckoutController extends Controller
*
* @author [A. Gianotto] [<[email protected]>]
* @param int $id
* @return View
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function create($id)
public function create($id) : View | RedirectResponse
{

if ($accessory = Accessory::withCount('users as users_count')->find($id)) {
Expand Down Expand Up @@ -59,10 +58,8 @@ public function create($id)
* @author [A. Gianotto] [<[email protected]>]
* @param Request $request
* @param int $accessoryId
* @return \Illuminate\Http\RedirectResponse
* @throws \Illuminate\Auth\Access\AuthorizationException
*/
public function store(Request $request, $accessoryId)
public function store(Request $request, $accessoryId) : RedirectResponse
{
// Check if the accessory exists
if (is_null($accessory = Accessory::withCount('users as users_count')->find($accessoryId))) {
Expand Down Expand Up @@ -95,7 +92,7 @@ public function store(Request $request, $accessoryId)

DB::table('accessories_users')->where('assigned_to', '=', $accessory->assigned_to)->where('accessory_id', '=', $accessory->id)->first();

event(new CheckoutableCheckedOut($accessory, $user, Auth::user(), $request->input('note')));
event(new CheckoutableCheckedOut($accessory, $user, auth()->user(), $request->input('note')));

// Redirect to the new accessory page
return redirect()->route('accessories.index')->with('success', trans('admin/accessories/message.checkout.success'));
Expand Down
20 changes: 8 additions & 12 deletions app/Http/Controllers/Account/AcceptanceController.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,30 +28,27 @@
use App\Http\Controllers\SettingsController;
use Barryvdh\DomPDF\Facade\Pdf;
use Carbon\Carbon;
use phpDocumentor\Reflection\Types\Compound;
use \Illuminate\Contracts\View\View;
use \Illuminate\Http\RedirectResponse;
use Illuminate\Support\Facades\Log;

class AcceptanceController extends Controller
{
/**
* Show a listing of pending checkout acceptances for the current user
*
* @return View
*/
public function index()
public function index() : View
{
$acceptances = CheckoutAcceptance::forUser(Auth::user())->pending()->get();

$acceptances = CheckoutAcceptance::forUser(auth()->user())->pending()->get();
return view('account/accept.index', compact('acceptances'));
}

/**
* Shows a form to either accept or decline the checkout acceptance
*
* @param int $id
* @return mixed
*/
public function create($id)
public function create($id) : View | RedirectResponse
{
$acceptance = CheckoutAcceptance::find($id);

Expand All @@ -64,7 +61,7 @@ public function create($id)
return redirect()->route('account.accept')->with('error', trans('admin/users/message.error.asset_already_accepted'));
}

if (! $acceptance->isCheckedOutTo(Auth::user())) {
if (! $acceptance->isCheckedOutTo(auth()->user())) {
return redirect()->route('account.accept')->with('error', trans('admin/users/message.error.incorrect_user_accepted'));
}

Expand All @@ -80,9 +77,8 @@ public function create($id)
*
* @param Request $request
* @param int $id
* @return \Illuminate\Http\RedirectResponse
*/
public function store(Request $request, $id)
public function store(Request $request, $id) : RedirectResponse
{
$acceptance = CheckoutAcceptance::find($id);

Expand All @@ -94,7 +90,7 @@ public function store(Request $request, $id)
return redirect()->route('account.accept')->with('error', trans('admin/users/message.error.asset_already_accepted'));
}

if (! $acceptance->isCheckedOutTo(Auth::user())) {
if (! $acceptance->isCheckedOutTo(auth()->user())) {
return redirect()->route('account.accept')->with('error', trans('admin/users/message.error.incorrect_user_accepted'));
}

Expand Down
Loading
Loading