From 4ee5a4c5c3fec3c376b8868e2c567c7c2fea6463 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 00:31:50 +0000 Subject: [PATCH 01/15] Added notes to API controllers Signed-off-by: snipe --- app/Http/Controllers/Api/CategoriesController.php | 2 ++ app/Http/Controllers/Api/CompaniesController.php | 1 + app/Http/Controllers/Api/DepartmentsController.php | 5 +++-- app/Http/Controllers/Api/GroupsController.php | 4 +++- app/Http/Controllers/Api/LocationsController.php | 3 +++ app/Http/Controllers/Api/ManufacturersController.php | 4 +++- 6 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/Api/CategoriesController.php b/app/Http/Controllers/Api/CategoriesController.php index e772bec4df..319b51dd11 100644 --- a/app/Http/Controllers/Api/CategoriesController.php +++ b/app/Http/Controllers/Api/CategoriesController.php @@ -39,6 +39,7 @@ class CategoriesController extends Controller 'components_count', 'licenses_count', 'image', + 'notes', ]; $categories = Category::select([ @@ -52,6 +53,7 @@ class CategoriesController extends Controller 'require_acceptance', 'checkin_email', 'image', + 'notes', ]) ->with('adminuser') ->withCount('accessories as accessories_count', 'consumables as consumables_count', 'components as components_count', 'licenses as licenses_count'); diff --git a/app/Http/Controllers/Api/CompaniesController.php b/app/Http/Controllers/Api/CompaniesController.php index 5ba342db33..2f1f0740b3 100644 --- a/app/Http/Controllers/Api/CompaniesController.php +++ b/app/Http/Controllers/Api/CompaniesController.php @@ -38,6 +38,7 @@ class CompaniesController extends Controller 'accessories_count', 'consumables_count', 'components_count', + 'notes', ]; $companies = Company::withCount(['assets as assets_count' => function ($query) { diff --git a/app/Http/Controllers/Api/DepartmentsController.php b/app/Http/Controllers/Api/DepartmentsController.php index a7b30a10fc..167d5cbc2a 100644 --- a/app/Http/Controllers/Api/DepartmentsController.php +++ b/app/Http/Controllers/Api/DepartmentsController.php @@ -23,7 +23,7 @@ class DepartmentsController extends Controller public function index(Request $request) : JsonResponse | array { $this->authorize('view', Department::class); - $allowed_columns = ['id', 'name', 'image', 'users_count']; + $allowed_columns = ['id', 'name', 'image', 'users_count', 'notes']; $departments = Department::select( 'departments.id', @@ -35,7 +35,8 @@ class DepartmentsController extends Controller 'departments.manager_id', 'departments.created_at', 'departments.updated_at', - 'departments.image' + 'departments.image', + 'departments.notes', )->with('users')->with('location')->with('manager')->with('company')->withCount('users as users_count'); if ($request->filled('search')) { diff --git a/app/Http/Controllers/Api/GroupsController.php b/app/Http/Controllers/Api/GroupsController.php index 81217ce8db..5f2e222c70 100644 --- a/app/Http/Controllers/Api/GroupsController.php +++ b/app/Http/Controllers/Api/GroupsController.php @@ -24,7 +24,7 @@ class GroupsController extends Controller $this->authorize('view', Group::class); - $groups = Group::select('id', 'name', 'permissions', 'created_at', 'updated_at', 'created_by')->with('adminuser')->withCount('users as users_count'); + $groups = Group::select('id', 'name', 'permissions', 'notes', 'created_at', 'updated_at', 'created_by')->with('adminuser')->withCount('users as users_count'); if ($request->filled('search')) { $groups = $groups->TextSearch($request->input('search')); @@ -81,6 +81,7 @@ class GroupsController extends Controller $group->name = $request->input('name'); $group->created_by = auth()->id(); + $group->notes = $request->input('notes'); $group->permissions = json_encode($request->input('permissions', $groupPermissions)); if ($group->save()) { @@ -118,6 +119,7 @@ class GroupsController extends Controller $group = Group::findOrFail($id); $group->name = $request->input('name'); + $group->notes = $request->input('notes'); $group->permissions = $request->input('permissions'); // Todo - some JSON validation stuff here if ($group->save()) { diff --git a/app/Http/Controllers/Api/LocationsController.php b/app/Http/Controllers/Api/LocationsController.php index f4f788d563..53990e9a97 100644 --- a/app/Http/Controllers/Api/LocationsController.php +++ b/app/Http/Controllers/Api/LocationsController.php @@ -53,6 +53,7 @@ class LocationsController extends Controller 'updated_at', 'users_count', 'zip', + 'notes', ]; $locations = Location::with('parent', 'manager', 'children')->select([ @@ -73,6 +74,7 @@ class LocationsController extends Controller 'locations.image', 'locations.ldap_ou', 'locations.currency', + 'locations.notes', ]) ->withCount('assignedAssets as assigned_assets_count') ->withCount('assets as assets_count') @@ -190,6 +192,7 @@ class LocationsController extends Controller 'locations.updated_at', 'locations.image', 'locations.currency', + 'locations.notes', ]) ->withCount('assignedAssets as assigned_assets_count') ->withCount('assets as assets_count') diff --git a/app/Http/Controllers/Api/ManufacturersController.php b/app/Http/Controllers/Api/ManufacturersController.php index f716fbbf7f..652fad1cfc 100644 --- a/app/Http/Controllers/Api/ManufacturersController.php +++ b/app/Http/Controllers/Api/ManufacturersController.php @@ -39,7 +39,8 @@ class ManufacturersController extends Controller 'assets_count', 'consumables_count', 'components_count', - 'licenses_count' + 'licenses_count', + 'notes', ]; $manufacturers = Manufacturer::select([ @@ -55,6 +56,7 @@ class ManufacturersController extends Controller 'updated_at', 'image', 'deleted_at', + 'notes', ]) ->with('adminuser') ->withCount('assets as assets_count') From 4e2b22135a1b2d8f7027dc2a71f19e9b8669f3e6 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 00:32:07 +0000 Subject: [PATCH 02/15] Added notes to UI controllers Signed-off-by: snipe --- app/Http/Controllers/CategoriesController.php | 2 ++ app/Http/Controllers/CompaniesController.php | 2 ++ app/Http/Controllers/DepartmentsController.php | 3 ++- app/Http/Controllers/GroupsController.php | 2 ++ app/Http/Controllers/LocationsController.php | 2 ++ app/Http/Controllers/ManufacturersController.php | 2 ++ 6 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/CategoriesController.php b/app/Http/Controllers/CategoriesController.php index 93b3d4a0d0..1b42037f3b 100755 --- a/app/Http/Controllers/CategoriesController.php +++ b/app/Http/Controllers/CategoriesController.php @@ -69,6 +69,7 @@ class CategoriesController extends Controller $category->use_default_eula = $request->input('use_default_eula', '0'); $category->require_acceptance = $request->input('require_acceptance', '0'); $category->checkin_email = $request->input('checkin_email', '0'); + $category->notes = $request->input('notes'); $category->created_by = auth()->id(); $category = $request->handleImages($category); @@ -134,6 +135,7 @@ class CategoriesController extends Controller $category->use_default_eula = $request->input('use_default_eula', '0'); $category->require_acceptance = $request->input('require_acceptance', '0'); $category->checkin_email = $request->input('checkin_email', '0'); + $category->notes = $request->input('notes'); $category = $request->handleImages($category); diff --git a/app/Http/Controllers/CompaniesController.php b/app/Http/Controllers/CompaniesController.php index 238ffc85f5..12655cb2a5 100644 --- a/app/Http/Controllers/CompaniesController.php +++ b/app/Http/Controllers/CompaniesController.php @@ -60,6 +60,7 @@ final class CompaniesController extends Controller $company->phone = $request->input('phone'); $company->fax = $request->input('fax'); $company->email = $request->input('email'); + $company->notes = $request->input('notes'); $company->created_by = auth()->id(); $company = $request->handleImages($company); @@ -111,6 +112,7 @@ final class CompaniesController extends Controller $company->phone = $request->input('phone'); $company->fax = $request->input('fax'); $company->email = $request->input('email'); + $company->notes = $request->input('notes'); $company = $request->handleImages($company); diff --git a/app/Http/Controllers/DepartmentsController.php b/app/Http/Controllers/DepartmentsController.php index 287315ef2c..fe90162c48 100644 --- a/app/Http/Controllers/DepartmentsController.php +++ b/app/Http/Controllers/DepartmentsController.php @@ -55,6 +55,7 @@ class DepartmentsController extends Controller $department->manager_id = ($request->filled('manager_id') ? $request->input('manager_id') : null); $department->location_id = ($request->filled('location_id') ? $request->input('location_id') : null); $department->company_id = ($request->filled('company_id') ? $request->input('company_id') : null); + $department->notes = $request->input('notes'); $department = $request->handleImages($department); if ($department->save()) { @@ -171,7 +172,7 @@ class DepartmentsController extends Controller $department->company_id = ($request->filled('company_id') ? $request->input('company_id') : null); $department->phone = $request->input('phone'); $department->fax = $request->input('fax'); - + $department->notes = $request->input('notes'); $department = $request->handleImages($department); if ($department->save()) { diff --git a/app/Http/Controllers/GroupsController.php b/app/Http/Controllers/GroupsController.php index a85cabf246..6aaf58ebde 100755 --- a/app/Http/Controllers/GroupsController.php +++ b/app/Http/Controllers/GroupsController.php @@ -62,6 +62,7 @@ class GroupsController extends Controller $group->name = $request->input('name'); $group->permissions = json_encode($request->input('permission')); $group->created_by = auth()->id(); + $group->notes = $request->input('notes'); if ($group->save()) { return redirect()->route('groups.index')->with('success', trans('admin/groups/message.success.create')); @@ -108,6 +109,7 @@ class GroupsController extends Controller } $group->name = $request->input('name'); $group->permissions = json_encode($request->input('permission')); + $group->notes = $request->input('notes'); if (! config('app.lock_passwords')) { if ($group->save()) { diff --git a/app/Http/Controllers/LocationsController.php b/app/Http/Controllers/LocationsController.php index 75abce97ed..e250e5cfa5 100755 --- a/app/Http/Controllers/LocationsController.php +++ b/app/Http/Controllers/LocationsController.php @@ -78,6 +78,7 @@ class LocationsController extends Controller $location->created_by = auth()->id(); $location->phone = request('phone'); $location->fax = request('fax'); + $location->notes = $request->input('notes'); $location = $request->handleImages($location); @@ -138,6 +139,7 @@ class LocationsController extends Controller $location->fax = request('fax'); $location->ldap_ou = $request->input('ldap_ou'); $location->manager_id = $request->input('manager_id'); + $location->notes = $request->input('notes'); $location = $request->handleImages($location); diff --git a/app/Http/Controllers/ManufacturersController.php b/app/Http/Controllers/ManufacturersController.php index 68124f644c..eb8c80d877 100755 --- a/app/Http/Controllers/ManufacturersController.php +++ b/app/Http/Controllers/ManufacturersController.php @@ -67,6 +67,7 @@ class ManufacturersController extends Controller $manufacturer->warranty_lookup_url = $request->input('warranty_lookup_url'); $manufacturer->support_phone = $request->input('support_phone'); $manufacturer->support_email = $request->input('support_email'); + $manufacturer->notes = $request->input('notes'); $manufacturer = $request->handleImages($manufacturer); if ($manufacturer->save()) { @@ -123,6 +124,7 @@ class ManufacturersController extends Controller $manufacturer->warranty_lookup_url = $request->input('warranty_lookup_url'); $manufacturer->support_phone = $request->input('support_phone'); $manufacturer->support_email = $request->input('support_email'); + $manufacturer->notes = $request->input('notes'); // Set the model's image property to null if the image is being deleted if ($request->input('image_delete') == 1) { From af1159658de88a45812a3d9cc7cc87489abb7613 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 00:32:37 +0000 Subject: [PATCH 03/15] Added notes to transformers Signed-off-by: snipe --- app/Http/Transformers/CategoriesTransformer.php | 1 + app/Http/Transformers/CompaniesTransformer.php | 1 + app/Http/Transformers/DepartmentsTransformer.php | 1 + app/Http/Transformers/GroupsTransformer.php | 1 + app/Http/Transformers/LocationsTransformer.php | 1 + app/Http/Transformers/ManufacturersTransformer.php | 1 + 6 files changed, 6 insertions(+) diff --git a/app/Http/Transformers/CategoriesTransformer.php b/app/Http/Transformers/CategoriesTransformer.php index 2dd82b3b70..0d1834649d 100644 --- a/app/Http/Transformers/CategoriesTransformer.php +++ b/app/Http/Transformers/CategoriesTransformer.php @@ -66,6 +66,7 @@ class CategoriesTransformer 'id' => (int) $category->adminuser->id, 'name'=> e($category->adminuser->present()->fullName()), ] : null, + 'notes' => Helper::parseEscapedMarkedownInline($category->notes), 'created_at' => Helper::getFormattedDateObject($category->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($category->updated_at, 'datetime'), ]; diff --git a/app/Http/Transformers/CompaniesTransformer.php b/app/Http/Transformers/CompaniesTransformer.php index 530df32044..8ca5344de6 100644 --- a/app/Http/Transformers/CompaniesTransformer.php +++ b/app/Http/Transformers/CompaniesTransformer.php @@ -40,6 +40,7 @@ class CompaniesTransformer 'id' => (int) $company->adminuser->id, 'name'=> e($company->adminuser->present()->fullName()), ] : null, + 'notes' => Helper::parseEscapedMarkedownInline($company->notes), 'created_at' => Helper::getFormattedDateObject($company->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($company->updated_at, 'datetime'), ]; diff --git a/app/Http/Transformers/DepartmentsTransformer.php b/app/Http/Transformers/DepartmentsTransformer.php index 546cedf04f..3d1e4c6f90 100644 --- a/app/Http/Transformers/DepartmentsTransformer.php +++ b/app/Http/Transformers/DepartmentsTransformer.php @@ -44,6 +44,7 @@ class DepartmentsTransformer 'name' => e($department->location->name), ] : null, 'users_count' => e($department->users_count), + 'notes' => Helper::parseEscapedMarkedownInline($department->notes), 'created_at' => Helper::getFormattedDateObject($department->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($department->updated_at, 'datetime'), ]; diff --git a/app/Http/Transformers/GroupsTransformer.php b/app/Http/Transformers/GroupsTransformer.php index 03e96d5622..920c856b1a 100644 --- a/app/Http/Transformers/GroupsTransformer.php +++ b/app/Http/Transformers/GroupsTransformer.php @@ -26,6 +26,7 @@ class GroupsTransformer 'name' => e($group->name), 'permissions' => json_decode($group->permissions), 'users_count' => (int) $group->users_count, + 'notes' => Helper::parseEscapedMarkedownInline($group->notes), 'created_by' => ($group->adminuser) ? [ 'id' => (int) $group->adminuser->id, 'name'=> e($group->adminuser->present()->fullName()), diff --git a/app/Http/Transformers/LocationsTransformer.php b/app/Http/Transformers/LocationsTransformer.php index d6ba2f01b2..331f3839b2 100644 --- a/app/Http/Transformers/LocationsTransformer.php +++ b/app/Http/Transformers/LocationsTransformer.php @@ -55,6 +55,7 @@ class LocationsTransformer 'users_count' => (int) $location->users_count, 'currency' => ($location->currency) ? e($location->currency) : null, 'ldap_ou' => ($location->ldap_ou) ? e($location->ldap_ou) : null, + 'notes' => Helper::parseEscapedMarkedownInline($location->notes), 'created_at' => Helper::getFormattedDateObject($location->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($location->updated_at, 'datetime'), 'parent' => ($location->parent) ? [ diff --git a/app/Http/Transformers/ManufacturersTransformer.php b/app/Http/Transformers/ManufacturersTransformer.php index d6954c1d24..cf17eb7764 100644 --- a/app/Http/Transformers/ManufacturersTransformer.php +++ b/app/Http/Transformers/ManufacturersTransformer.php @@ -37,6 +37,7 @@ class ManufacturersTransformer 'consumables_count' => (int) $manufacturer->consumables_count, 'accessories_count' => (int) $manufacturer->accessories_count, 'components_count' => (int) $manufacturer->components_count, + 'notes' => Helper::parseEscapedMarkedownInline($manufacturer->notes), 'created_by' => ($manufacturer->adminuser) ? [ 'id' => (int) $manufacturer->adminuser->id, 'name'=> e($manufacturer->adminuser->present()->fullName()), From 1f1e1401cf242fb9a9d1370ed741bac6a49f4341 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 00:32:58 +0000 Subject: [PATCH 04/15] Added location notes to importer Signed-off-by: snipe --- app/Importer/LocationImporter.php | 2 ++ app/Livewire/Importer.php | 1 + 2 files changed, 3 insertions(+) diff --git a/app/Importer/LocationImporter.php b/app/Importer/LocationImporter.php index 5a87d069e5..1fcef6625d 100644 --- a/app/Importer/LocationImporter.php +++ b/app/Importer/LocationImporter.php @@ -74,6 +74,8 @@ class LocationImporter extends ItemImporter $this->item['ldap_ou'] = trim($this->findCsvMatch($row, 'ldap_ou')); $this->item['manager'] = trim($this->findCsvMatch($row, 'manager')); $this->item['manager_username'] = trim($this->findCsvMatch($row, 'manager_username')); + $this->item['notes'] = trim($this->findCsvMatch($row, 'notes')); + if ($this->findCsvMatch($row, 'parent_location')) { $this->item['parent_id'] = $this->createOrFetchLocation(trim($this->findCsvMatch($row, 'parent_location'))); diff --git a/app/Livewire/Importer.php b/app/Livewire/Importer.php index aee6b852d4..eea319a400 100644 --- a/app/Livewire/Importer.php +++ b/app/Livewire/Importer.php @@ -342,6 +342,7 @@ class Importer extends Component 'manager_username' => trans('general.importer.manager_username'), 'manager' => trans('general.importer.manager_full_name'), 'parent_location' => trans('admin/locations/table.parent'), + 'notes' => trans('general.notes'), ]; $this->assetmodels_fields = [ From e6ae9cae6bb3c33ba1409c0cb1f32eaa4678551a Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 00:33:51 +0000 Subject: [PATCH 05/15] Added notes to searchable and fillable attributes Signed-off-by: snipe --- app/Models/Category.php | 3 ++- app/Models/Group.php | 5 +++-- app/Models/Location.php | 3 ++- app/Models/Manufacturer.php | 3 ++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/app/Models/Category.php b/app/Models/Category.php index 5965404f59..cfa83328ab 100755 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -71,6 +71,7 @@ class Category extends SnipeModel 'require_acceptance', 'use_default_eula', 'created_by', + 'notes', ]; use Searchable; @@ -80,7 +81,7 @@ class Category extends SnipeModel * * @var array */ - protected $searchableAttributes = ['name', 'category_type']; + protected $searchableAttributes = ['name', 'category_type', 'notes']; /** * The relations and their attributes that should be included when searching the model. diff --git a/app/Models/Group.php b/app/Models/Group.php index 7278152df9..ef60e6737c 100755 --- a/app/Models/Group.php +++ b/app/Models/Group.php @@ -18,7 +18,8 @@ class Group extends SnipeModel protected $fillable = [ 'name', - 'permissions' + 'permissions', + 'notes', ]; /** @@ -37,7 +38,7 @@ class Group extends SnipeModel * * @var array */ - protected $searchableAttributes = ['name', 'created_at']; + protected $searchableAttributes = ['name', 'created_at', 'notes']; /** * The relations and their attributes that should be included when searching the model. diff --git a/app/Models/Location.php b/app/Models/Location.php index f146d37c66..63cb2de39d 100755 --- a/app/Models/Location.php +++ b/app/Models/Location.php @@ -72,6 +72,7 @@ class Location extends SnipeModel 'currency', 'manager_id', 'image', + 'notes', ]; protected $hidden = ['user_id']; @@ -82,7 +83,7 @@ class Location extends SnipeModel * * @var array */ - protected $searchableAttributes = ['name', 'address', 'city', 'state', 'zip', 'created_at', 'ldap_ou', 'phone', 'fax']; + protected $searchableAttributes = ['name', 'address', 'city', 'state', 'zip', 'created_at', 'ldap_ou', 'phone', 'fax', 'notes']; /** * The relations and their attributes that should be included when searching the model. diff --git a/app/Models/Manufacturer.php b/app/Models/Manufacturer.php index 1b31f496d3..6d7b010677 100755 --- a/app/Models/Manufacturer.php +++ b/app/Models/Manufacturer.php @@ -53,6 +53,7 @@ class Manufacturer extends SnipeModel 'support_url', 'url', 'warranty_lookup_url', + 'notes', ]; use Searchable; @@ -62,7 +63,7 @@ class Manufacturer extends SnipeModel * * @var array */ - protected $searchableAttributes = ['name', 'created_at']; + protected $searchableAttributes = ['name', 'created_at', 'notes']; /** * The relations and their attributes that should be included when searching the model. From 63cb4e70bcb7708d1b6d99aaa3eab2c67a169b26 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 00:34:10 +0000 Subject: [PATCH 06/15] Added notes to presenters Signed-off-by: snipe --- app/Presenters/CategoryPresenter.php | 8 +++++++- app/Presenters/CompanyPresenter.php | 8 +++++++- app/Presenters/LocationPresenter.php | 6 ++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/Presenters/CategoryPresenter.php b/app/Presenters/CategoryPresenter.php index f551c0ba1b..d4a9f01a05 100644 --- a/app/Presenters/CategoryPresenter.php +++ b/app/Presenters/CategoryPresenter.php @@ -77,7 +77,13 @@ class CategoryPresenter extends Presenter "title" => trans('admin/categories/general.use_default_eula_column'), 'visible' => true, "formatter" => 'trueFalseFormatter', - ],[ + ], [ + 'field' => 'notes', + 'searchable' => true, + 'sortable' => true, + 'visible' => false, + 'title' => trans('general.notes'), + ], [ 'field' => 'created_by', 'searchable' => false, 'sortable' => true, diff --git a/app/Presenters/CompanyPresenter.php b/app/Presenters/CompanyPresenter.php index 6f9ece2141..fb86166092 100644 --- a/app/Presenters/CompanyPresenter.php +++ b/app/Presenters/CompanyPresenter.php @@ -105,7 +105,13 @@ class CompanyPresenter extends Presenter 'title' => trans('general.components'), 'visible' => true, 'class' => 'css-component', - ],[ + ], [ + 'field' => 'notes', + 'searchable' => true, + 'sortable' => true, + 'visible' => false, + 'title' => trans('general.notes'), + ], [ 'field' => 'created_by', 'searchable' => false, 'sortable' => true, diff --git a/app/Presenters/LocationPresenter.php b/app/Presenters/LocationPresenter.php index af910bfdc1..9283824a28 100644 --- a/app/Presenters/LocationPresenter.php +++ b/app/Presenters/LocationPresenter.php @@ -184,6 +184,12 @@ class LocationPresenter extends Presenter 'title' => trans('admin/users/table.manager'), 'visible' => false, 'formatter' => 'usersLinkObjFormatter', + ], [ + 'field' => 'notes', + 'searchable' => true, + 'sortable' => true, + 'visible' => false, + 'title' => trans('general.notes'), ], [ 'field' => 'created_at', 'searchable' => true, From ff95049f7c2837951ad9fd07e48c91940ce0317a Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 00:34:30 +0000 Subject: [PATCH 07/15] Added notes to factories Signed-off-by: snipe --- database/factories/CategoryFactory.php | 1 + database/factories/CompanyFactory.php | 1 + database/factories/DepartmentFactory.php | 1 + database/factories/GroupFactory.php | 1 + database/factories/LocationFactory.php | 1 + database/factories/ManufacturerFactory.php | 1 + 6 files changed, 6 insertions(+) diff --git a/database/factories/CategoryFactory.php b/database/factories/CategoryFactory.php index 540dcb3085..9897b396c1 100644 --- a/database/factories/CategoryFactory.php +++ b/database/factories/CategoryFactory.php @@ -30,6 +30,7 @@ class CategoryFactory extends Factory 'require_acceptance' => false, 'use_default_eula' => $this->faker->boolean(), 'created_by' => User::factory()->superuser(), + 'notes' => 'Created by DB seeder', ]; } diff --git a/database/factories/CompanyFactory.php b/database/factories/CompanyFactory.php index 5f1ac0c98a..12195d78a5 100644 --- a/database/factories/CompanyFactory.php +++ b/database/factories/CompanyFactory.php @@ -24,6 +24,7 @@ class CompanyFactory extends Factory return [ 'name' => $this->faker->unique()->company(), 'created_by' => 1, + 'notes' => 'Created by DB seeder', ]; } } diff --git a/database/factories/DepartmentFactory.php b/database/factories/DepartmentFactory.php index 011a632669..7e6c2f0025 100644 --- a/database/factories/DepartmentFactory.php +++ b/database/factories/DepartmentFactory.php @@ -27,6 +27,7 @@ class DepartmentFactory extends Factory 'name' => $this->faker->unique()->word() . ' Department', 'created_by' => User::factory()->superuser(), 'location_id' => Location::factory(), + 'notes' => 'Created by DB seeder', ]; } diff --git a/database/factories/GroupFactory.php b/database/factories/GroupFactory.php index 1c6eaa8125..fecf8239bb 100644 --- a/database/factories/GroupFactory.php +++ b/database/factories/GroupFactory.php @@ -24,6 +24,7 @@ class GroupFactory extends Factory return [ 'name' => $this->faker->name(), 'permissions' => json_encode([]), + 'notes' => 'Created by DB seeder', ]; } } diff --git a/database/factories/LocationFactory.php b/database/factories/LocationFactory.php index 3aa0577bd8..3d0b444f70 100644 --- a/database/factories/LocationFactory.php +++ b/database/factories/LocationFactory.php @@ -23,6 +23,7 @@ class LocationFactory extends Factory 'currency' => $this->faker->currencyCode(), 'zip' => $this->faker->postcode(), 'image' => rand(1, 9).'.jpg', + 'notes' => 'Created by DB seeder', ]; } diff --git a/database/factories/ManufacturerFactory.php b/database/factories/ManufacturerFactory.php index 47d4f672f3..a8d6208d7e 100644 --- a/database/factories/ManufacturerFactory.php +++ b/database/factories/ManufacturerFactory.php @@ -28,6 +28,7 @@ class ManufacturerFactory extends Factory 'support_phone' => $this->faker->phoneNumber(), 'url' => $this->faker->url(), 'support_email' => $this->faker->safeEmail(), + 'notes' => 'Created by DB seeder', ]; } From 96e38da875537f61c0e86fcf453c4a45112b4356 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 00:34:50 +0000 Subject: [PATCH 08/15] Created migration Signed-off-by: snipe --- ...25_02_10_230155_add_notes_to_locations.php | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 database/migrations/2025_02_10_230155_add_notes_to_locations.php diff --git a/database/migrations/2025_02_10_230155_add_notes_to_locations.php b/database/migrations/2025_02_10_230155_add_notes_to_locations.php new file mode 100644 index 0000000000..bbffc50305 --- /dev/null +++ b/database/migrations/2025_02_10_230155_add_notes_to_locations.php @@ -0,0 +1,60 @@ +text('notes')->nullable()->default(null); + }); + + Schema::table('companies', function (Blueprint $table) { + $table->text('notes')->nullable()->default(null); + }); + + Schema::table('categories', function (Blueprint $table) { + $table->text('notes')->nullable()->default(null); + }); + + Schema::table('manufacturers', function (Blueprint $table) { + $table->text('notes')->nullable()->default(null); + }); + + Schema::table('permission_groups', function (Blueprint $table) { + $table->text('notes')->nullable()->default(null); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('locations', function (Blueprint $table) { + $table->dropColumn('notes'); + }); + + Schema::table('companies', function (Blueprint $table) { + $table->dropColumn('notes'); + }); + + Schema::table('categories', function (Blueprint $table) { + $table->dropColumn('notes'); + }); + + Schema::table('manufacturers', function (Blueprint $table) { + $table->dropColumn('notes'); + }); + + Schema::table('permission_groups', function (Blueprint $table) { + $table->dropColumn('notes'); + }); + } +}; From e104decf77185066663ed8ac96727be2e1bee762 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 00:35:03 +0000 Subject: [PATCH 09/15] Added placeholder translation array Signed-off-by: snipe --- resources/lang/en-US/general.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/resources/lang/en-US/general.php b/resources/lang/en-US/general.php index 77670b5a7e..cf344273be 100644 --- a/resources/lang/en-US/general.php +++ b/resources/lang/en-US/general.php @@ -561,6 +561,7 @@ return [ 'consumables' => ':count Consumable|:count Consumables', 'components' => ':count Component|:count Components', ], + 'more_info' => 'More Info', 'quickscan_bulk_help' => 'Checking this box will edit the asset record to reflect this new location. Leaving it unchecked will simply note the location in the audit log. Note that if this asset is checked out, it will not change the location of the person, asset or location it is checked out to.', 'whoops' => 'Whoops!', @@ -577,4 +578,9 @@ return [ 'user_managed_passwords_disallow' => 'Disallow users from managing their own passwords', 'user_managed_passwords_allow' => 'Allow users to manage their own passwords', +// Add form placeholders here + 'placeholders' => [ + 'notes' => 'Add a note', + ], + ]; From ef9cc4fceb842f2b16181abe2116707d5734c02b Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 00:39:26 +0000 Subject: [PATCH 10/15] Added notes to blades Signed-off-by: snipe --- resources/views/categories/edit.blade.php | 15 +++++++++++++++ resources/views/companies/edit.blade.php | 16 ++++++++++++++++ resources/views/departments/edit.blade.php | 14 ++++++++++++++ resources/views/departments/index.blade.php | 1 + resources/views/groups/edit.blade.php | 17 +++++++++++++++++ resources/views/locations/edit.blade.php | 17 +++++++++++++++++ resources/views/manufacturers/edit.blade.php | 15 +++++++++++++++ 7 files changed, 95 insertions(+) diff --git a/resources/views/categories/edit.blade.php b/resources/views/categories/edit.blade.php index 1ef3b7aa6a..96ef8e08a8 100755 --- a/resources/views/categories/edit.blade.php +++ b/resources/views/categories/edit.blade.php @@ -33,6 +33,21 @@ @include ('partials.forms.edit.image-upload', ['image_path' => app('categories_upload_path')]) +
+ +
+ + {!! $errors->first('notes', '') !!} +
+
+ @stop diff --git a/resources/views/companies/edit.blade.php b/resources/views/companies/edit.blade.php index 60d5f74ccb..d6b9cf9afd 100644 --- a/resources/views/companies/edit.blade.php +++ b/resources/views/companies/edit.blade.php @@ -14,4 +14,20 @@ @include ('partials.forms.edit.email') @include ('partials.forms.edit.image-upload', ['image_path' => app('companies_upload_path')]) +
+ +
+ + + +
+
+ @stop diff --git a/resources/views/departments/edit.blade.php b/resources/views/departments/edit.blade.php index c1a2b38d56..05d9b49e4c 100644 --- a/resources/views/departments/edit.blade.php +++ b/resources/views/departments/edit.blade.php @@ -26,6 +26,20 @@ @include ('partials.forms.edit.location-select', ['translated_name' => trans('general.location'), 'fieldname' => 'location_id']) @include ('partials.forms.edit.image-upload', ['image_path' => app('departments_upload_path')]) +
+ +
+ + {!! $errors->first('notes', '') !!} +
+
@stop diff --git a/resources/views/departments/index.blade.php b/resources/views/departments/index.blade.php index aa9d09e660..d05d5c9d75 100644 --- a/resources/views/departments/index.blade.php +++ b/resources/views/departments/index.blade.php @@ -43,6 +43,7 @@ {{ trans('admin/departments/table.manager') }} {{ trans('general.users') }} {{ trans('admin/departments/table.location') }} + {{ trans('general.notes') }} {{ trans('table.actions') }} diff --git a/resources/views/groups/edit.blade.php b/resources/views/groups/edit.blade.php index bd6bd85d1c..782d836beb 100755 --- a/resources/views/groups/edit.blade.php +++ b/resources/views/groups/edit.blade.php @@ -60,6 +60,23 @@ {!! $errors->first('name', '') !!} + +
+ +
+ + + {!! $errors->first('notes', '') !!} +
+
+
diff --git a/resources/views/locations/edit.blade.php b/resources/views/locations/edit.blade.php index 4b4e655a52..004053d8ab 100755 --- a/resources/views/locations/edit.blade.php +++ b/resources/views/locations/edit.blade.php @@ -57,6 +57,23 @@ @endif + @include ('partials.forms.edit.image-upload', ['image_path' => app('locations_upload_path')]) + +
+ +
+ + {!! $errors->first('notes', '') !!} +
+
+ @stop diff --git a/resources/views/manufacturers/edit.blade.php b/resources/views/manufacturers/edit.blade.php index b5429e5f34..000fd3a8f6 100755 --- a/resources/views/manufacturers/edit.blade.php +++ b/resources/views/manufacturers/edit.blade.php @@ -63,6 +63,21 @@ @include ('partials.forms.edit.image-upload', ['image_path' => app('manufacturers_upload_path')]) +
+ +
+ + {!! $errors->first('notes', '') !!} +
+
+ @stop From a9d6a5f61888c1336046b5a2cc2dcfa8e0d3d375 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 00:39:46 +0000 Subject: [PATCH 11/15] Updated note partial to use generic notes text Signed-off-by: snipe --- resources/views/partials/forms/edit/notes.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/partials/forms/edit/notes.blade.php b/resources/views/partials/forms/edit/notes.blade.php index f6b08ea1aa..5f82616c2c 100644 --- a/resources/views/partials/forms/edit/notes.blade.php +++ b/resources/views/partials/forms/edit/notes.blade.php @@ -1,6 +1,6 @@
- +
{!! $errors->first('notes', '') !!} From 3de5f5882cd881dad0d7dbea074284d3bb5fd25f Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 01:07:41 +0000 Subject: [PATCH 12/15] Added/updated tests Signed-off-by: snipe --- .../Categories/Api/CreateCategoriesTest.php | 2 + .../Categories/Api/UpdateCategoriesTest.php | 4 ++ .../Categories/Ui/CreateCategoriesTest.php | 7 +-- .../Categories/Ui/UpdateCategoriesTest.php | 11 ++-- .../Departments/Api/CreateDepartmentsTest.php | 19 +++++++ .../Departments/Api/UpdateDepartmentsTest.php | 2 + .../Departments/Ui/CreateDepartmentsTest.php | 5 +- .../Departments/Ui/UpdateDepartmentsTest.php | 3 +- tests/Feature/Groups/Api/StoreGroupTest.php | 3 +- tests/Feature/Groups/Ui/CreateGroupTest.php | 15 ++++++ tests/Feature/Groups/Ui/UpdateGroupTest.php | 18 +++++++ .../Locations/Api/CreateLocationsTest.php | 20 ++++++++ .../Locations/Api/UpdateLocationsTest.php | 6 ++- .../Locations/Ui/CreateLocationsTest.php | 4 +- .../Locations/Ui/UpdateLocationsTest.php | 3 +- .../Api/CreateManufacturersTest.php | 39 +++++++++++++++ .../Api/UpdateManufacturersTest.php | 50 +++++++++++++++++++ .../Ui/CreateManufacturerTest.php | 16 ++++++ .../Ui/UpdateManufacturerTest.php | 19 +++++++ 19 files changed, 230 insertions(+), 16 deletions(-) create mode 100644 tests/Feature/Manufacturers/Api/CreateManufacturersTest.php create mode 100644 tests/Feature/Manufacturers/Api/UpdateManufacturersTest.php diff --git a/tests/Feature/Categories/Api/CreateCategoriesTest.php b/tests/Feature/Categories/Api/CreateCategoriesTest.php index fc464242af..2a4a0661a6 100644 --- a/tests/Feature/Categories/Api/CreateCategoriesTest.php +++ b/tests/Feature/Categories/Api/CreateCategoriesTest.php @@ -27,6 +27,7 @@ class CreateCategoriesTest extends TestCase 'name' => 'Test Category', 'eula_text' => 'Test EULA', 'category_type' => 'accessory', + 'notes' => 'Test Note', ]) ->assertOk() ->assertStatusMessageIs('success') @@ -38,6 +39,7 @@ class CreateCategoriesTest extends TestCase $category = Category::find($response['payload']['id']); $this->assertEquals('Test Category', $category->name); $this->assertEquals('Test EULA', $category->eula_text); + $this->assertEquals('Test Note', $category->notes); $this->assertEquals('accessory', $category->category_type); } diff --git a/tests/Feature/Categories/Api/UpdateCategoriesTest.php b/tests/Feature/Categories/Api/UpdateCategoriesTest.php index 1a784c1179..6d6bc8da10 100644 --- a/tests/Feature/Categories/Api/UpdateCategoriesTest.php +++ b/tests/Feature/Categories/Api/UpdateCategoriesTest.php @@ -17,6 +17,7 @@ class UpdateCategoriesTest extends TestCase ->patchJson(route('api.categories.update', $category), [ 'name' => 'Test Category', 'eula_text' => 'Test EULA', + 'notes' => 'Test Note', ]) ->assertOk() ->assertStatusMessageIs('success') @@ -27,6 +28,7 @@ class UpdateCategoriesTest extends TestCase $category->refresh(); $this->assertEquals('Test Category', $category->name, 'Name was not updated'); $this->assertEquals('Test EULA', $category->eula_text, 'EULA was not updated'); + $this->assertEquals('Test Note', $category->notes, 'Note was not updated'); } @@ -39,6 +41,7 @@ class UpdateCategoriesTest extends TestCase 'name' => 'Test Category', 'eula_text' => 'Test EULA', 'category_type' => 'accessory', + 'note' => 'Test Note', ]) ->assertOk() ->assertStatusMessageIs('error') @@ -48,6 +51,7 @@ class UpdateCategoriesTest extends TestCase $category->refresh(); $this->assertNotEquals('Test Category', $category->name, 'Name was not updated'); $this->assertNotEquals('Test EULA', $category->eula_text, 'EULA was not updated'); + $this->assertNotEquals('Test Note', $category->notes, 'Note was not updated'); $this->assertNotEquals('accessory', $category->category_type, 'EULA was not updated'); } diff --git a/tests/Feature/Categories/Ui/CreateCategoriesTest.php b/tests/Feature/Categories/Ui/CreateCategoriesTest.php index 45e821d9d9..694b61c613 100644 --- a/tests/Feature/Categories/Ui/CreateCategoriesTest.php +++ b/tests/Feature/Categories/Ui/CreateCategoriesTest.php @@ -33,11 +33,12 @@ class CreateCategoriesTest extends TestCase $this->actingAs(User::factory()->superuser()->create()) ->post(route('categories.store'), [ 'name' => 'Test Category', - 'category_type' => 'asset' + 'category_type' => 'asset', + 'notes' => 'Test Note', ]) ->assertRedirect(route('categories.index')); - $this->assertTrue(Category::where('name', 'Test Category')->exists()); + $this->assertTrue(Category::where('name', 'Test Category')->where('notes', 'Test Note')->exists()); } public function testUserCannotCreateCategoriesWithInvalidType() @@ -48,7 +49,7 @@ class CreateCategoriesTest extends TestCase ->from(route('categories.create')) ->post(route('categories.store'), [ 'name' => 'Test Category', - 'category_type' => 'invalid' + 'category_type' => 'invalid', ]) ->assertRedirect(route('categories.create')); diff --git a/tests/Feature/Categories/Ui/UpdateCategoriesTest.php b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php index 901b779582..7e61097793 100644 --- a/tests/Feature/Categories/Ui/UpdateCategoriesTest.php +++ b/tests/Feature/Categories/Ui/UpdateCategoriesTest.php @@ -32,7 +32,7 @@ class UpdateCategoriesTest extends TestCase $this->actingAs(User::factory()->superuser()->create()) ->post(route('categories.store'), [ 'name' => 'Test Category', - 'category_type' => 'asset' + 'category_type' => 'asset', ]) ->assertStatus(302) ->assertSessionHasNoErrors() @@ -49,13 +49,14 @@ class UpdateCategoriesTest extends TestCase $response = $this->actingAs(User::factory()->superuser()->create()) ->put(route('categories.update', ['category' => $category]), [ 'name' => 'Test Category Edited', + 'notes' => 'Test Note Edited', ]) ->assertStatus(302) ->assertSessionHasNoErrors() ->assertRedirect(route('categories.index')); $this->followRedirects($response)->assertSee('Success'); - $this->assertTrue(Category::where('name', 'Test Category Edited')->exists()); + $this->assertTrue(Category::where('name', 'Test Category Edited')->where('notes', 'Test Note Edited')->exists()); } @@ -69,13 +70,14 @@ class UpdateCategoriesTest extends TestCase ->put(route('categories.update', ['category' => $category]), [ 'name' => 'Test Category Edited', 'category_type' => 'accessory', + 'notes' => 'Test Note Edited', ]) ->assertSessionHasNoErrors() ->assertStatus(302) ->assertRedirect(route('categories.index')); $this->followRedirects($response)->assertSee('Success'); - $this->assertTrue(Category::where('name', 'Test Category Edited')->exists()); + $this->assertTrue(Category::where('name', 'Test Category Edited')->where('notes', 'Test Note Edited')->exists()); } @@ -89,6 +91,7 @@ class UpdateCategoriesTest extends TestCase ->put(route('categories.update', ['category' => $category]), [ 'name' => 'Test Category Edited', 'category_type' => 'accessory', + 'notes' => 'Test Note Edited', ]) ->assertSessionHasErrors(['category_type']) ->assertInvalid(['category_type']) @@ -96,7 +99,7 @@ class UpdateCategoriesTest extends TestCase ->assertRedirect(route('categories.edit', ['category' => $category->id])); $this->followRedirects($response)->assertSee(trans('general.error')); - $this->assertFalse(Category::where('name', 'Test Category Edited')->exists()); + $this->assertFalse(Category::where('name', 'Test Category Edited')->where('notes', 'Test Note Edited')->exists()); } diff --git a/tests/Feature/Departments/Api/CreateDepartmentsTest.php b/tests/Feature/Departments/Api/CreateDepartmentsTest.php index a8725c5ff2..e0f975dd7f 100644 --- a/tests/Feature/Departments/Api/CreateDepartmentsTest.php +++ b/tests/Feature/Departments/Api/CreateDepartmentsTest.php @@ -20,4 +20,23 @@ class CreateDepartmentsTest extends TestCase ->assertForbidden(); } + public function testCanCreateDepartment() + { + $response = $this->actingAsForApi(User::factory()->superuser()->create()) + ->postJson(route('api.departments.store'), [ + 'name' => 'Test Department', + 'notes' => 'Test Note', + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->json(); + + $this->assertTrue(Department::where('name', 'Test Department')->exists()); + + $department = Department::find($response['payload']['id']); + $this->assertEquals('Test Department', $department->name); + $this->assertEquals('Test Note', $department->notes); + } + } diff --git a/tests/Feature/Departments/Api/UpdateDepartmentsTest.php b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php index 2a6401e7f1..b4eb38301a 100644 --- a/tests/Feature/Departments/Api/UpdateDepartmentsTest.php +++ b/tests/Feature/Departments/Api/UpdateDepartmentsTest.php @@ -25,6 +25,7 @@ class UpdateDepartmentsTest extends TestCase $this->actingAsForApi(User::factory()->superuser()->create()) ->patchJson(route('api.departments.update', $department), [ 'name' => 'Test Department', + 'notes' => 'Test Note', ]) ->assertOk() ->assertStatusMessageIs('success') @@ -33,6 +34,7 @@ class UpdateDepartmentsTest extends TestCase $department->refresh(); $this->assertEquals('Test Department', $department->name, 'Name was not updated'); + $this->assertEquals('Test Note', $department->notes, 'Note was not updated'); } diff --git a/tests/Feature/Departments/Ui/CreateDepartmentsTest.php b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php index 08dc12ba09..f20a2c7b6a 100644 --- a/tests/Feature/Departments/Ui/CreateDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/CreateDepartmentsTest.php @@ -34,11 +34,12 @@ class CreateDepartmentsTest extends TestCase $this->actingAs(User::factory()->superuser()->create()) ->post(route('departments.store'), [ 'name' => 'Test Department', - 'company_id' => Company::factory()->create()->id + 'company_id' => Company::factory()->create()->id, + 'notes' => 'Test Note', ]) ->assertRedirect(route('departments.index')); - $this->assertTrue(Department::where('name', 'Test Department')->exists()); + $this->assertTrue(Department::where('name', 'Test Department')->where('notes', 'Test Note')->exists()); } diff --git a/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php index 71f7cfe477..bb5fc27e14 100644 --- a/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php +++ b/tests/Feature/Departments/Ui/UpdateDepartmentsTest.php @@ -34,13 +34,14 @@ class UpdateDepartmentsTest extends TestCase $response = $this->actingAs(User::factory()->superuser()->create()) ->put(route('departments.update', ['department' => $department]), [ 'name' => 'Test Department Edited', + 'notes' => 'Test Note Edited', ]) ->assertStatus(302) ->assertSessionHasNoErrors() ->assertRedirect(route('departments.index')); $this->followRedirects($response)->assertSee('Success'); - $this->assertTrue(Department::where('name', 'Test Department Edited')->exists()); + $this->assertTrue(Department::where('name', 'Test Department Edited')->where('notes', 'Test Note Edited')->exists()); } diff --git a/tests/Feature/Groups/Api/StoreGroupTest.php b/tests/Feature/Groups/Api/StoreGroupTest.php index ebcbff71c5..484c921a6c 100644 --- a/tests/Feature/Groups/Api/StoreGroupTest.php +++ b/tests/Feature/Groups/Api/StoreGroupTest.php @@ -21,6 +21,7 @@ class StoreGroupTest extends TestCase $this->actingAsForApi(User::factory()->superuser()->create()) ->postJson(route('api.groups.store'), [ 'name' => 'My Awesome Group', + 'notes' => 'My Awesome Note', 'permissions' => [ 'admin' => '1', 'import' => '1', @@ -29,7 +30,7 @@ class StoreGroupTest extends TestCase ]) ->assertOk(); - $group = Group::where('name', 'My Awesome Group')->first(); + $group = Group::where('name', 'My Awesome Group')->where('notes', 'My Awesome Note')->first(); $this->assertNotNull($group); $this->assertEquals('1', $group->decodePermissions()['admin']); diff --git a/tests/Feature/Groups/Ui/CreateGroupTest.php b/tests/Feature/Groups/Ui/CreateGroupTest.php index 56b3a76053..796905c50f 100644 --- a/tests/Feature/Groups/Ui/CreateGroupTest.php +++ b/tests/Feature/Groups/Ui/CreateGroupTest.php @@ -2,6 +2,7 @@ namespace Tests\Feature\Groups\Ui; +use App\Models\Group; use App\Models\User; use Tests\TestCase; @@ -13,4 +14,18 @@ class CreateGroupTest extends TestCase ->get(route('groups.create')) ->assertOk(); } + + public function testUserCanCreateGroup() + { + $this->assertFalse(Group::where('name', 'Test Group')->exists()); + + $this->actingAs(User::factory()->superuser()->create()) + ->post(route('groups.store'), [ + 'name' => 'Test Group', + 'notes' => 'Test Note', + ]) + ->assertRedirect(route('groups.index')); + + $this->assertTrue(Group::where('name', 'Test Group')->where('notes', 'Test Note')->exists()); + } } diff --git a/tests/Feature/Groups/Ui/UpdateGroupTest.php b/tests/Feature/Groups/Ui/UpdateGroupTest.php index c68d7cb84b..edb2368726 100644 --- a/tests/Feature/Groups/Ui/UpdateGroupTest.php +++ b/tests/Feature/Groups/Ui/UpdateGroupTest.php @@ -14,4 +14,22 @@ class UpdateGroupTest extends TestCase ->get(route('groups.edit', Group::factory()->create()->id)) ->assertOk(); } + + public function testUserCanEditGroups() + { + $group = Group::factory()->create(['name' => 'Test Group']); + $this->assertTrue(Group::where('name', 'Test Group')->exists()); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->put(route('groups.update', ['group' => $group]), [ + 'name' => 'Test Group Edited', + 'notes' => 'Test Note Edited', + ]) + ->assertStatus(302) + ->assertSessionHasNoErrors() + ->assertRedirect(route('groups.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertTrue(Group::where('name', 'Test Group Edited')->where('notes', 'Test Note Edited')->exists()); + } } diff --git a/tests/Feature/Locations/Api/CreateLocationsTest.php b/tests/Feature/Locations/Api/CreateLocationsTest.php index 171508b725..0a75517f31 100644 --- a/tests/Feature/Locations/Api/CreateLocationsTest.php +++ b/tests/Feature/Locations/Api/CreateLocationsTest.php @@ -16,6 +16,26 @@ class CreateLocationsTest extends TestCase ->assertForbidden(); } + + public function testCanCreateLocation() + { + $response = $this->actingAsForApi(User::factory()->superuser()->create()) + ->postJson(route('api.locations.store'), [ + 'name' => 'Test Location', + 'notes' => 'Test Note', + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->json(); + + $this->assertTrue(Location::where('name', 'Test Location')->exists()); + + $department = Location::find($response['payload']['id']); + $this->assertEquals('Test Location', $department->name); + $this->assertEquals('Test Note', $department->notes); + } + public function testCannotCreateNewLocationsWithTheSameName() { $location = Location::factory()->create(); diff --git a/tests/Feature/Locations/Api/UpdateLocationsTest.php b/tests/Feature/Locations/Api/UpdateLocationsTest.php index a3dd8c228c..a169ba87bf 100644 --- a/tests/Feature/Locations/Api/UpdateLocationsTest.php +++ b/tests/Feature/Locations/Api/UpdateLocationsTest.php @@ -22,7 +22,8 @@ class UpdateLocationsTest extends TestCase $this->actingAsForApi(User::factory()->superuser()->create()) ->patchJson(route('api.locations.update', $location), [ - 'name' => 'Test Location', + 'name' => 'Test Updated Location', + 'notes' => 'Test Updated Note', ]) ->assertOk() ->assertStatusMessageIs('success') @@ -30,7 +31,8 @@ class UpdateLocationsTest extends TestCase ->json(); $location->refresh(); - $this->assertEquals('Test Location', $location->name, 'Name was not updated'); + $this->assertEquals('Test Updated Location', $location->name, 'Name was not updated'); + $this->assertEquals('Test Updated Note', $location->notes, 'Note was not updated'); } diff --git a/tests/Feature/Locations/Ui/CreateLocationsTest.php b/tests/Feature/Locations/Ui/CreateLocationsTest.php index 2e2e1e0aa9..794ee06c67 100644 --- a/tests/Feature/Locations/Ui/CreateLocationsTest.php +++ b/tests/Feature/Locations/Ui/CreateLocationsTest.php @@ -33,11 +33,11 @@ class CreateLocationsTest extends TestCase $this->actingAs(User::factory()->superuser()->create()) ->post(route('locations.store'), [ 'name' => 'Test Location', - 'company_id' => Company::factory()->create()->id + 'notes' => 'Test Note', ]) ->assertRedirect(route('locations.index')); - $this->assertTrue(Location::where('name', 'Test Location')->exists()); + $this->assertTrue(Location::where('name', 'Test Location')->where('notes', 'Test Note')->exists()); } public function testUserCannotCreateLocationsWithInvalidParent() diff --git a/tests/Feature/Locations/Ui/UpdateLocationsTest.php b/tests/Feature/Locations/Ui/UpdateLocationsTest.php index 6cead815bc..c38ee25f8e 100644 --- a/tests/Feature/Locations/Ui/UpdateLocationsTest.php +++ b/tests/Feature/Locations/Ui/UpdateLocationsTest.php @@ -33,13 +33,14 @@ class UpdateLocationsTest extends TestCase $response = $this->actingAs(User::factory()->superuser()->create()) ->put(route('locations.update', ['location' => $location]), [ 'name' => 'Test Location Edited', + 'notes' => 'Test Note Edited', ]) ->assertStatus(302) ->assertSessionHasNoErrors() ->assertRedirect(route('locations.index')); $this->followRedirects($response)->assertSee('Success'); - $this->assertTrue(Location::where('name', 'Test Location Edited')->exists()); + $this->assertTrue(Location::where('name', 'Test Location Edited')->where('notes', 'Test Note Edited')->exists()); } public function testUserCannotEditLocationsToMakeThemTheirOwnParent() diff --git a/tests/Feature/Manufacturers/Api/CreateManufacturersTest.php b/tests/Feature/Manufacturers/Api/CreateManufacturersTest.php new file mode 100644 index 0000000000..9dc953148e --- /dev/null +++ b/tests/Feature/Manufacturers/Api/CreateManufacturersTest.php @@ -0,0 +1,39 @@ +actingAsForApi(User::factory()->create()) + ->postJson(route('api.departments.store')) + ->assertForbidden(); + } + + public function testCanCreateManufacturer() + { + $response = $this->actingAsForApi(User::factory()->superuser()->create()) + ->postJson(route('api.manufacturers.store'), [ + 'name' => 'Test Manufacturer', + 'notes' => 'Test Note', + ]) + ->assertOk() + ->assertStatusMessageIs('success') + ->assertStatus(200) + ->json(); + + $this->assertTrue(Manufacturer::where('name', 'Test Manufacturer')->where('notes', 'Test Note')->exists()); + + $manufacturer = Manufacturer::find($response['payload']['id']); + $this->assertEquals('Test Manufacturer', $manufacturer->name); + $this->assertEquals('Test Note', $manufacturer->notes); + } + +} diff --git a/tests/Feature/Manufacturers/Api/UpdateManufacturersTest.php b/tests/Feature/Manufacturers/Api/UpdateManufacturersTest.php new file mode 100644 index 0000000000..d3ab461b4f --- /dev/null +++ b/tests/Feature/Manufacturers/Api/UpdateManufacturersTest.php @@ -0,0 +1,50 @@ +actingAs(User::factory()->create()) + ->post(route('manufacturers.store'), [ + 'name' => 'Test Manufacturer', + ]) + ->assertStatus(403) + ->assertForbidden(); + } + + public function testPageRenders() + { + $this->actingAs(User::factory()->superuser()->create()) + ->get(route('manufacturers.edit', Manufacturer::factory()->create()->id)) + ->assertOk(); + } + + public function testUserCanEditManufacturers() + { + $department = Manufacturer::factory()->create(['name' => 'Test Manufacturer']); + $this->assertTrue(Manufacturer::where('name', 'Test Manufacturer')->exists()); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->put(route('manufacturers.update', ['manufacturer' => $department]), [ + 'name' => 'Test Manufacturer Edited', + 'notes' => 'Test Note Edited', + ]) + ->assertStatus(302) + ->assertSessionHasNoErrors() + ->assertRedirect(route('manufacturers.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertTrue(Manufacturer::where('name', 'Test Manufacturer Edited')->where('notes', 'Test Note Edited')->exists()); + + } + + + +} diff --git a/tests/Feature/Manufacturers/Ui/CreateManufacturerTest.php b/tests/Feature/Manufacturers/Ui/CreateManufacturerTest.php index 133b271ea3..4eb9d4fb7e 100644 --- a/tests/Feature/Manufacturers/Ui/CreateManufacturerTest.php +++ b/tests/Feature/Manufacturers/Ui/CreateManufacturerTest.php @@ -3,6 +3,7 @@ namespace Tests\Feature\Manufacturers\Ui; use App\Models\User; +use App\Models\Manufacturer; use Tests\TestCase; class CreateManufacturerTest extends TestCase @@ -13,4 +14,19 @@ class CreateManufacturerTest extends TestCase ->get(route('manufacturers.create')) ->assertOk(); } + + public function testUserCanCreateManufacturer() + { + $this->assertFalse(Manufacturer::where('name', 'Test Manufacturer')->exists()); + + $this->actingAs(User::factory()->superuser()->create()) + ->post(route('manufacturers.store'), [ + 'name' => 'Test Manufacturer', + 'notes' => 'Test Note', + ]) + ->assertRedirect(route('manufacturers.index')); + + $this->assertTrue(Manufacturer::where('name', 'Test Manufacturer')->where('notes', 'Test Note')->exists()); + } + } diff --git a/tests/Feature/Manufacturers/Ui/UpdateManufacturerTest.php b/tests/Feature/Manufacturers/Ui/UpdateManufacturerTest.php index e2f7724fa3..398b7fe239 100644 --- a/tests/Feature/Manufacturers/Ui/UpdateManufacturerTest.php +++ b/tests/Feature/Manufacturers/Ui/UpdateManufacturerTest.php @@ -14,4 +14,23 @@ class UpdateManufacturerTest extends TestCase ->get(route('manufacturers.edit', Manufacturer::factory()->create()->id)) ->assertOk(); } + + public function testUserCanEditManufacturers() + { + $manufacturer = Manufacturer::factory()->create(['name' => 'Test Manufacturer']); + $this->assertTrue(Manufacturer::where('name', 'Test Manufacturer')->exists()); + + $response = $this->actingAs(User::factory()->superuser()->create()) + ->put(route('manufacturers.update', ['manufacturer' => $manufacturer]), [ + 'name' => 'Test Manufacturer Edited', + 'notes' => 'Test Note Edited', + ]) + ->assertStatus(302) + ->assertSessionHasNoErrors() + ->assertRedirect(route('manufacturers.index')); + + $this->followRedirects($response)->assertSee('Success'); + $this->assertTrue(Manufacturer::where('name', 'Test Manufacturer Edited')->where('notes', 'Test Note Edited')->exists()); + } + } From ddd2ce07f302f593784a61585931b74cf72e087d Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 01:14:35 +0000 Subject: [PATCH 13/15] Fixed branch from weird merge down Signed-off-by: snipe --- config/version.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/version.php b/config/version.php index 05925848b5..d0f4c480e6 100644 --- a/config/version.php +++ b/config/version.php @@ -6,5 +6,5 @@ return array ( 'prerelease_version' => '', 'hash_version' => 'gfb857ccf5', 'full_hash' => 'v7.1.16-510-gfb857ccf5', - 'branch' => 'master', + 'branch' => 'develop', ); \ No newline at end of file From 9dba03646b853bf758ed32b277664d82297c4f57 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 18:32:51 +0000 Subject: [PATCH 14/15] Pointless rename Signed-off-by: snipe --- ...es_to_locations_companies_categories_manufacturers_groups.php} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename database/migrations/{2025_02_10_230155_add_notes_to_locations.php => 2025_02_10_230155_add_notes_to_locations_companies_categories_manufacturers_groups.php} (100%) diff --git a/database/migrations/2025_02_10_230155_add_notes_to_locations.php b/database/migrations/2025_02_10_230155_add_notes_to_locations_companies_categories_manufacturers_groups.php similarity index 100% rename from database/migrations/2025_02_10_230155_add_notes_to_locations.php rename to database/migrations/2025_02_10_230155_add_notes_to_locations_companies_categories_manufacturers_groups.php From 61591633f8fb9e5f74dec432a35129642bfaf9ce Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 11 Feb 2025 19:23:04 +0000 Subject: [PATCH 15/15] Fixed layout sorta Signed-off-by: snipe --- resources/views/groups/edit.blade.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/views/groups/edit.blade.php b/resources/views/groups/edit.blade.php index 782d836beb..4c387f73ef 100755 --- a/resources/views/groups/edit.blade.php +++ b/resources/views/groups/edit.blade.php @@ -54,16 +54,16 @@ @section('inputFields')
- -
+ +
{!! $errors->first('name', '') !!}
- -
+ +