From e457b2e98d9b34d335c6d79d0c606c8a8f50d9b5 Mon Sep 17 00:00:00 2001 From: Phan Nguyen Date: Mon, 17 Oct 2022 13:10:09 +0700 Subject: [PATCH 001/140] Correct assignedusers relation setting --- app/Models/License.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/License.php b/app/Models/License.php index d0e6f5c969..d74d69546a 100755 --- a/app/Models/License.php +++ b/app/Models/License.php @@ -357,7 +357,7 @@ class License extends Depreciable */ public function assignedusers() { - return $this->belongsToMany(\App\Models\User::class, 'license_seats', 'assigned_to', 'license_id'); + return $this->belongsToMany(\App\Models\User::class, 'license_seats', 'license_id', 'assigned_to'); } /** From 45636b81148c5bf1d3d62991ea6747d4ab6145e7 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 15 Nov 2022 15:42:57 -0800 Subject: [PATCH 002/140] adds should_autoassign boolean to users table --- .../Commands/CheckoutLicenseToAllUsers.php | 2 +- .../Controllers/Users/UsersController.php | 2 ++ ..._should_autoassign_bool_to_users_table.php | 32 +++++++++++++++++++ resources/lang/en/admin/users/general.php | 2 ++ resources/views/users/edit.blade.php | 13 ++++++++ 5 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php diff --git a/app/Console/Commands/CheckoutLicenseToAllUsers.php b/app/Console/Commands/CheckoutLicenseToAllUsers.php index fab2b318c6..e29b8991b6 100644 --- a/app/Console/Commands/CheckoutLicenseToAllUsers.php +++ b/app/Console/Commands/CheckoutLicenseToAllUsers.php @@ -56,7 +56,7 @@ class CheckoutLicenseToAllUsers extends Command return false; } - $users = User::whereNull('deleted_at')->with('licenses')->get(); + $users = User::whereNull('deleted_at')->where('should_autoassign', '==', 1)->with('licenses')->get(); if ($users->count() > $license->getAvailSeatsCountAttribute()) { $this->info('You do not have enough free seats to complete this task, so we will check out as many as we can. '); diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 52d423036f..b863fb966b 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -121,6 +121,7 @@ class UsersController extends Controller $user->created_by = Auth::user()->id; $user->start_date = $request->input('start_date', null); $user->end_date = $request->input('end_date', null); + $user->should_autoassign= $request->input('should_autoassign', 0); // Strip out the superuser permission if the user isn't a superadmin $permissions_array = $request->input('permission'); @@ -274,6 +275,7 @@ class UsersController extends Controller $user->website = $request->input('website', null); $user->start_date = $request->input('start_date', null); $user->end_date = $request->input('end_date', null); + $user->should_autoassign = $request->input('should_autoassign', 0); // Update the location of any assets checked out to this user Asset::where('assigned_type', User::class) diff --git a/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php b/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php new file mode 100644 index 0000000000..6f6f308e44 --- /dev/null +++ b/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php @@ -0,0 +1,32 @@ +boolean('should_autoassign')->nullable(false)->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('should_autoassign'); + }); + } +} diff --git a/resources/lang/en/admin/users/general.php b/resources/lang/en/admin/users/general.php index daa568e8bf..2ae8709251 100644 --- a/resources/lang/en/admin/users/general.php +++ b/resources/lang/en/admin/users/general.php @@ -19,6 +19,8 @@ return [ 'print_assigned' => 'Print All Assigned', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', + 'auto_assign_label' => 'User should skipped during auto assignment commands', + 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Software Checked out to :name', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', 'view_user' => 'View User :name', diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index 7947d65a68..a689ab8983 100755 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -376,6 +376,19 @@ + +
+
+ +

{{ trans('admin/users/general.auto_assign_help') }} +

+
+
+ @include ('partials.forms.edit.location-select', ['translated_name' => trans('general.location'), 'fieldname' => 'location_id']) From 90828e3a873f548d7bbb16f065c484204303178c Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 15 Nov 2022 15:51:52 -0800 Subject: [PATCH 003/140] fixes variable name --- app/Console/Commands/CheckoutLicenseToAllUsers.php | 4 ++-- resources/lang/en/admin/users/general.php | 2 +- resources/views/users/edit.blade.php | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Console/Commands/CheckoutLicenseToAllUsers.php b/app/Console/Commands/CheckoutLicenseToAllUsers.php index e29b8991b6..003c32c738 100644 --- a/app/Console/Commands/CheckoutLicenseToAllUsers.php +++ b/app/Console/Commands/CheckoutLicenseToAllUsers.php @@ -56,8 +56,8 @@ class CheckoutLicenseToAllUsers extends Command return false; } - $users = User::whereNull('deleted_at')->where('should_autoassign', '==', 1)->with('licenses')->get(); - + $users = User::whereNull('deleted_at')->where('should_autoassign', '==', 0)->with('licenses')->get(); + dd($users); if ($users->count() > $license->getAvailSeatsCountAttribute()) { $this->info('You do not have enough free seats to complete this task, so we will check out as many as we can. '); } diff --git a/resources/lang/en/admin/users/general.php b/resources/lang/en/admin/users/general.php index 2ae8709251..71f56c7a15 100644 --- a/resources/lang/en/admin/users/general.php +++ b/resources/lang/en/admin/users/general.php @@ -19,7 +19,7 @@ return [ 'print_assigned' => 'Print All Assigned', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', - 'auto_assign_label' => 'User should skipped during auto assignment commands', + 'auto_assign_label' => 'User should be skipped during auto assignment commands', 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Software Checked out to :name', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index a689ab8983..f0bbc989f6 100755 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -380,7 +380,7 @@
From 8a0517fb5d83ef055b1a90bdb07903265d8a4011 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 15 Nov 2022 15:59:47 -0800 Subject: [PATCH 004/140] removes data dump --- app/Console/Commands/CheckoutLicenseToAllUsers.php | 2 +- resources/views/users/edit.blade.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Console/Commands/CheckoutLicenseToAllUsers.php b/app/Console/Commands/CheckoutLicenseToAllUsers.php index 003c32c738..44ec72e13c 100644 --- a/app/Console/Commands/CheckoutLicenseToAllUsers.php +++ b/app/Console/Commands/CheckoutLicenseToAllUsers.php @@ -57,7 +57,7 @@ class CheckoutLicenseToAllUsers extends Command } $users = User::whereNull('deleted_at')->where('should_autoassign', '==', 0)->with('licenses')->get(); - dd($users); + if ($users->count() > $license->getAvailSeatsCountAttribute()) { $this->info('You do not have enough free seats to complete this task, so we will check out as many as we can. '); } diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index f0bbc989f6..7126428607 100755 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -380,7 +380,7 @@
From 6fbb484dfd5362c8300d2710fe2a3815a63d87ed Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 18 Jan 2023 08:43:03 -0800 Subject: [PATCH 005/140] renames db column for auto_assign boolean, rewords trans string, default value of 1 now --- ..._11_15_232525_adds_should_autoassign_bool_to_users_table.php | 2 +- resources/lang/en/admin/users/general.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php b/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php index 6f6f308e44..854feebfea 100644 --- a/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php +++ b/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php @@ -14,7 +14,7 @@ class AddsShouldAutoassignBoolToUsersTable extends Migration public function up() { Schema::table('users', function (Blueprint $table) { - $table->boolean('should_autoassign')->nullable(false)->default(0); + $table->boolean('autoassign_licenses')->nullable(false)->default(1); }); } diff --git a/resources/lang/en/admin/users/general.php b/resources/lang/en/admin/users/general.php index 71f56c7a15..58c54a7d27 100644 --- a/resources/lang/en/admin/users/general.php +++ b/resources/lang/en/admin/users/general.php @@ -19,7 +19,7 @@ return [ 'print_assigned' => 'Print All Assigned', 'email_assigned' => 'Email List of All Assigned', 'user_notified' => 'User has been emailed a list of their currently assigned items.', - 'auto_assign_label' => 'User should be skipped during auto assignment commands', + 'auto_assign_label' => 'Include this user when auto-assigning eligible licenses', 'auto_assign_help' => 'Skip this user in auto assignment of licenses', 'software_user' => 'Software Checked out to :name', 'send_email_help' => 'You must provide an email address for this user to send them credentials. Emailing credentials can only be done on user creation. Passwords are stored in a one-way hash and cannot be retrieved once saved.', From 7ce230fadcb47a4d1b5f39184bacdb18125059aa Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 18 Jan 2023 08:57:59 -0800 Subject: [PATCH 006/140] missed a few renames --- app/Console/Commands/CheckoutLicenseToAllUsers.php | 2 +- app/Http/Controllers/Users/UsersController.php | 4 ++-- ...1_15_232525_adds_should_autoassign_bool_to_users_table.php | 2 +- resources/views/users/edit.blade.php | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/Console/Commands/CheckoutLicenseToAllUsers.php b/app/Console/Commands/CheckoutLicenseToAllUsers.php index 44ec72e13c..1ba57895c2 100644 --- a/app/Console/Commands/CheckoutLicenseToAllUsers.php +++ b/app/Console/Commands/CheckoutLicenseToAllUsers.php @@ -56,7 +56,7 @@ class CheckoutLicenseToAllUsers extends Command return false; } - $users = User::whereNull('deleted_at')->where('should_autoassign', '==', 0)->with('licenses')->get(); + $users = User::whereNull('deleted_at')->where('autoassign_licenses', '==', 1)->with('licenses')->get(); if ($users->count() > $license->getAvailSeatsCountAttribute()) { $this->info('You do not have enough free seats to complete this task, so we will check out as many as we can. '); diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index b863fb966b..eecce0aea6 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -121,7 +121,7 @@ class UsersController extends Controller $user->created_by = Auth::user()->id; $user->start_date = $request->input('start_date', null); $user->end_date = $request->input('end_date', null); - $user->should_autoassign= $request->input('should_autoassign', 0); + $user->autoassign_licenses= $request->input('autoassign_licenses', 1); // Strip out the superuser permission if the user isn't a superadmin $permissions_array = $request->input('permission'); @@ -275,7 +275,7 @@ class UsersController extends Controller $user->website = $request->input('website', null); $user->start_date = $request->input('start_date', null); $user->end_date = $request->input('end_date', null); - $user->should_autoassign = $request->input('should_autoassign', 0); + $user->autoassign_licenses = $request->input('autoassign_licenses', 1); // Update the location of any assets checked out to this user Asset::where('assigned_type', User::class) diff --git a/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php b/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php index 854feebfea..b728e1f22b 100644 --- a/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php +++ b/database/migrations/2022_11_15_232525_adds_should_autoassign_bool_to_users_table.php @@ -26,7 +26,7 @@ class AddsShouldAutoassignBoolToUsersTable extends Migration public function down() { Schema::table('users', function (Blueprint $table) { - $table->dropColumn('should_autoassign'); + $table->dropColumn('autoassign_licenses'); }); } } diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index 7126428607..e4666a4d0c 100755 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -379,8 +379,8 @@
-
From b92d1d3ec717f2bd99c62d960c6a64b44167efef Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Tue, 24 Jan 2023 11:54:56 -0800 Subject: [PATCH 008/140] Logically group query when searching users to scope to company --- app/Http/Controllers/Api/UsersController.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index cca829c23f..e0c8d409bb 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -286,9 +286,11 @@ class UsersController extends Controller $users = Company::scopeCompanyables($users); if ($request->filled('search')) { - $users = $users->SimpleNameSearch($request->get('search')) - ->orWhere('username', 'LIKE', '%'.$request->get('search').'%') - ->orWhere('employee_num', 'LIKE', '%'.$request->get('search').'%'); + $users = $users->where(function ($query) use ($request) { + $query->SimpleNameSearch($request->get('search')) + ->orWhere('username', 'LIKE', '%'.$request->get('search').'%') + ->orWhere('employee_num', 'LIKE', '%'.$request->get('search').'%'); + }); } $users = $users->orderBy('last_name', 'asc')->orderBy('first_name', 'asc'); From 3c4f254583d8454a70c50f95538b7f61f4c7ba10 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 24 Jan 2023 13:38:53 -0800 Subject: [PATCH 009/140] Enforce Y-m-d as date format for date fields Signed-off-by: snipe --- app/Models/Accessory.php | 1 + app/Models/Asset.php | 9 +++++---- app/Models/Component.php | 2 +- app/Models/Consumable.php | 1 + app/Models/License.php | 3 +++ app/Models/User.php | 4 ++-- 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/app/Models/Accessory.php b/app/Models/Accessory.php index 3f2004b047..9569917ab3 100755 --- a/app/Models/Accessory.php +++ b/app/Models/Accessory.php @@ -63,6 +63,7 @@ class Accessory extends SnipeModel 'company_id' => 'integer|nullable', 'min_amt' => 'integer|min:0|nullable', 'purchase_cost' => 'numeric|nullable|gte:0', + 'purchase_date' => 'date_format:Y-m-d|nullable', ]; diff --git a/app/Models/Asset.php b/app/Models/Asset.php index f8e0cab314..75e1f38e45 100644 --- a/app/Models/Asset.php +++ b/app/Models/Asset.php @@ -105,16 +105,17 @@ class Asset extends Depreciable 'company_id' => 'integer|nullable', 'warranty_months' => 'numeric|nullable|digits_between:0,240', 'physical' => 'numeric|max:1|nullable', - 'checkout_date' => 'date|max:10|min:10|nullable', - 'checkin_date' => 'date|max:10|min:10|nullable', + 'checkout_date' => 'date_format:Y-m-d|max:10|min:10|nullable', + 'checkin_date' => 'date_format:Y-m-d|max:10|min:10|nullable', 'location_id' => 'exists:locations,id|nullable', 'rtd_location_id' => 'exists:locations,id|nullable', 'asset_tag' => 'required|min:1|max:255|unique_undeleted', 'status' => 'integer', + 'purchase_date' => 'date_format:Y-m-d|nullable', 'serial' => 'unique_serial|nullable', 'purchase_cost' => 'numeric|nullable|gte:0', - 'next_audit_date' => 'date|nullable', - 'last_audit_date' => 'date|nullable', + 'next_audit_date' => 'date_format:Y-m-d|nullable', + 'last_audit_date' => 'date_format:Y-m-d|nullable', 'supplier_id' => 'exists:suppliers,id|nullable', ]; diff --git a/app/Models/Component.php b/app/Models/Component.php index dc353d288c..98230132be 100644 --- a/app/Models/Component.php +++ b/app/Models/Component.php @@ -35,7 +35,7 @@ class Component extends SnipeModel 'category_id' => 'required|integer|exists:categories,id', 'company_id' => 'integer|nullable', 'min_amt' => 'integer|min:0|nullable', - 'purchase_date' => 'date|nullable', + 'purchase_date' => 'date_format:Y-m-d|nullable', 'purchase_cost' => 'numeric|nullable|gte:0', ]; diff --git a/app/Models/Consumable.php b/app/Models/Consumable.php index c04c9b53d5..ea4ac6086b 100644 --- a/app/Models/Consumable.php +++ b/app/Models/Consumable.php @@ -41,6 +41,7 @@ class Consumable extends SnipeModel 'company_id' => 'integer|nullable', 'min_amt' => 'integer|min:0|nullable', 'purchase_cost' => 'numeric|nullable|gte:0', + 'purchase_date' => 'date_format:Y-m-d|nullable', ]; /** diff --git a/app/Models/License.php b/app/Models/License.php index b59387a42e..d3c4d8a1c3 100755 --- a/app/Models/License.php +++ b/app/Models/License.php @@ -50,6 +50,9 @@ class License extends Depreciable 'category_id' => 'required|exists:categories,id', 'company_id' => 'integer|nullable', 'purchase_cost'=> 'numeric|nullable|gte:0', + 'purchase_date' => 'date_format:Y-m-d|nullable', + 'expiration_date' => 'date_format:Y-m-d|nullable', + 'termination_date' => 'date_format:Y-m-d|nullable', ]; /** diff --git a/app/Models/User.php b/app/Models/User.php index 34c0af6b2e..4d430af741 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -98,8 +98,8 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo 'website' => 'url|nullable|max:191', 'manager_id' => 'nullable|exists:users,id|cant_manage_self', 'location_id' => 'exists:locations,id|nullable', - 'start_date' => 'nullable|date', - 'end_date' => 'nullable|date|after_or_equal:start_date', + 'start_date' => 'nullable|date_format:Y-m-d', + 'end_date' => 'nullable|date_format:Y-m-d|after_or_equal:start_date', ]; /** From 91394f72624a501fde291c5631044e4bbb4fa261 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 24 Jan 2023 17:23:06 -0800 Subject: [PATCH 010/140] Removed duplicate comment section Signed-off-by: snipe --- resources/lang/en/validation.php | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php index 04f8d65303..18387310f8 100644 --- a/resources/lang/en/validation.php +++ b/resources/lang/en/validation.php @@ -103,17 +103,6 @@ return [ ], - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - /* |-------------------------------------------------------------------------- | Custom Validation Language Lines From a61ccbb9658da024185575fe017fe81b86b64776 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 24 Jan 2023 17:33:49 -0800 Subject: [PATCH 011/140] Added very clunky but better error messages on that validation for date_format Signed-off-by: snipe --- resources/lang/en/validation.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php index 18387310f8..31c9dcd85d 100644 --- a/resources/lang/en/validation.php +++ b/resources/lang/en/validation.php @@ -120,6 +120,18 @@ return [ 'hashed_pass' => 'Your current password is incorrect', 'dumbpwd' => 'That password is too common.', 'statuslabel_type' => 'You must select a valid status label type', + + // date_format validation with slightly less stupid messages. It duplicates a lot, but it gets the job done :( + // We use this because the default error message for date_format is reflects php Y-m-d, which non-PHP + // people won't know how to format. + 'purchase_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + 'last_audit_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD hh:mm:ss format', + 'expiration_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + 'termination_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + 'expected_checkin.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + 'start_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + 'end_date.date_format' => 'The :attribute must be a valid date in YYYY-MM-DD format', + ], /* From c9f0f5fe8b428e6c4955fc4a8f621f6438e778c0 Mon Sep 17 00:00:00 2001 From: Brady Wetherington Date: Tue, 24 Jan 2023 17:35:44 -0800 Subject: [PATCH 012/140] Change Accessories report to use server-side pagination from URL --- app/Http/Controllers/ReportsController.php | 3 +-- resources/views/reports/accessories.blade.php | 21 ++++++------------- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index 6cf2091f60..399e99612c 100644 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -51,9 +51,8 @@ class ReportsController extends Controller public function getAccessoryReport() { $this->authorize('reports.view'); - $accessories = Accessory::orderBy('created_at', 'DESC')->with('company')->get(); - return view('reports/accessories', compact('accessories')); + return view('reports/accessories'); } /** diff --git a/resources/views/reports/accessories.blade.php b/resources/views/reports/accessories.blade.php index 49db62c7f6..44f90682ba 100644 --- a/resources/views/reports/accessories.blade.php +++ b/resources/views/reports/accessories.blade.php @@ -27,6 +27,7 @@ data-sort-order="asc" id="accessoriesReport" class="table table-striped snipe-table" + data-url="{{ route('api.accessories.index') }}" data-export-options='{ "fileName": "accessory-report-{{ date('Y-m-d') }}", "ignoreColumn": ["actions","image","change","checkbox","checkincheckout","icon"] @@ -34,27 +35,17 @@ - {{ trans('admin/companies/table.title') }} - {{ trans('admin/accessories/table.title') }} - {{ trans('general.model_no') }} - {{ trans('admin/accessories/general.total') }} - {{ trans('admin/accessories/general.remaining') }} + {{ trans('admin/companies/table.title') }} + {{ trans('admin/accessories/table.title') }} + {{ trans('general.model_no') }} + {{ trans('admin/accessories/general.total') }} + {{ trans('admin/accessories/general.remaining') }} - @foreach ($accessories as $accessory) - - {{ is_null($accessory->company) ? '' : $accessory->company->name }} - {{ $accessory->name }} - {{ $accessory->model_number }} - {{ $accessory->qty }} - {{ $accessory->numRemaining() }} - - @endforeach -
From fd2a057d384d9a57b6717fd92020e2f44c4f460f Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 24 Jan 2023 17:36:58 -0800 Subject: [PATCH 013/140] Make audit dates fillable Signed-off-by: snipe --- app/Models/Asset.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Models/Asset.php b/app/Models/Asset.php index 75e1f38e45..e3e2e96b0c 100644 --- a/app/Models/Asset.php +++ b/app/Models/Asset.php @@ -146,6 +146,9 @@ class Asset extends Depreciable 'last_checkout', 'expected_checkin', 'byod', + 'last_audit_date', + 'next_audit_date', + ]; use Searchable; From 9c79fc19cb6eab3f31d587120b1c9c9534a34dd9 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 24 Jan 2023 17:37:15 -0800 Subject: [PATCH 014/140] =?UTF-8?q?Tightened=20up=20and=20removed=20some?= =?UTF-8?q?=20validation=20that=20wasn=E2=80=99t=20needed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: snipe --- app/Models/Asset.php | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/app/Models/Asset.php b/app/Models/Asset.php index e3e2e96b0c..3c1bc9beca 100644 --- a/app/Models/Asset.php +++ b/app/Models/Asset.php @@ -84,11 +84,11 @@ class Asset extends Depreciable protected $casts = [ - 'purchase_date' => 'datetime', + 'purchase_date' => 'date', 'last_checkout' => 'datetime', - 'expected_checkin' => 'datetime', + 'expected_checkin' => 'date', 'last_audit_date' => 'datetime', - 'next_audit_date' => 'datetime', + 'next_audit_date' => 'date', 'model_id' => 'integer', 'status_id' => 'integer', 'company_id' => 'integer', @@ -105,17 +105,14 @@ class Asset extends Depreciable 'company_id' => 'integer|nullable', 'warranty_months' => 'numeric|nullable|digits_between:0,240', 'physical' => 'numeric|max:1|nullable', - 'checkout_date' => 'date_format:Y-m-d|max:10|min:10|nullable', - 'checkin_date' => 'date_format:Y-m-d|max:10|min:10|nullable', + 'last_checkout' => 'date|date_format:Y-m-d H:i:s|nullable', + 'expected_checkin' => 'date|date_format:Y-m-d|nullable', 'location_id' => 'exists:locations,id|nullable', 'rtd_location_id' => 'exists:locations,id|nullable', 'asset_tag' => 'required|min:1|max:255|unique_undeleted', - 'status' => 'integer', - 'purchase_date' => 'date_format:Y-m-d|nullable', + 'purchase_date' => 'date|date_format:Y-m-d|nullable', 'serial' => 'unique_serial|nullable', 'purchase_cost' => 'numeric|nullable|gte:0', - 'next_audit_date' => 'date_format:Y-m-d|nullable', - 'last_audit_date' => 'date_format:Y-m-d|nullable', 'supplier_id' => 'exists:suppliers,id|nullable', ]; From b3635243053327d1cb2dd85095be3c3962c19dff Mon Sep 17 00:00:00 2001 From: akemidx Date: Wed, 25 Jan 2023 15:58:44 -0500 Subject: [PATCH 015/140] vipuser label updated to vip --- app/Http/Controllers/Api/UsersController.php | 2 +- app/Http/Controllers/Users/UsersController.php | 2 +- app/Models/User.php | 4 ++-- app/Presenters/UserPresenter.php | 2 +- database/migrations/2023_01_23_232933_add_vip_to_users.php | 6 +++--- resources/views/users/edit.blade.php | 4 ++-- resources/views/users/view.blade.php | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 8185583868..36ba063674 100644 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -246,7 +246,7 @@ class UsersController extends Controller 'two_factor_optin', 'two_factor_enrolled', 'remote', - 'vipuser', + 'vip', 'start_date', 'end_date', ]; diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 9d322ca4d9..38afc66610 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -271,7 +271,7 @@ class UsersController extends Controller $user->activated = $request->input('activated', 0); $user->zip = $request->input('zip', null); $user->remote = $request->input('remote', 0); - $user->vipuser = $request->input('vipuser', 0); + $user->vipuser = $request->input('vip', 0); $user->website = $request->input('website', null); $user->start_date = $request->input('start_date', null); $user->end_date = $request->input('end_date', null); diff --git a/app/Models/User.php b/app/Models/User.php index b51d23626f..4e6566b2d6 100755 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -62,7 +62,7 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo 'start_date', 'end_date', 'scim_externalid', - 'vipuser', + 'vip', ]; protected $casts = [ @@ -70,7 +70,7 @@ class User extends SnipeModel implements AuthenticatableContract, AuthorizableCo 'manager_id' => 'integer', 'location_id' => 'integer', 'company_id' => 'integer', - 'vipuser' => 'boolean', + 'vip' => 'boolean', ]; diff --git a/app/Presenters/UserPresenter.php b/app/Presenters/UserPresenter.php index dc41050f5b..0811fbc500 100644 --- a/app/Presenters/UserPresenter.php +++ b/app/Presenters/UserPresenter.php @@ -86,7 +86,7 @@ class UserPresenter extends Presenter 'formatter' => 'usersLinkFormatter', ], [ - 'field' => 'vipuser', + 'field' => 'vip', 'searchable' => false, 'sortable' => true, 'switchable' => true, diff --git a/database/migrations/2023_01_23_232933_add_vip_to_users.php b/database/migrations/2023_01_23_232933_add_vip_to_users.php index 40db001b17..344f35d240 100644 --- a/database/migrations/2023_01_23_232933_add_vip_to_users.php +++ b/database/migrations/2023_01_23_232933_add_vip_to_users.php @@ -14,7 +14,7 @@ class AddVipToUsers extends Migration public function up() { Schema::table('users', function (Blueprint $table) { - $table->boolean('vipuser')->nullable()->default(0); + $table->boolean('vip')->nullable()->default(0); }); } @@ -26,8 +26,8 @@ class AddVipToUsers extends Migration public function down() { Schema::table('users', function (Blueprint $table) { - if (Schema::hasColumn('users', 'vipuser')) { - $table->dropColumn('vipuser'); + if (Schema::hasColumn('users', 'vip')) { + $table->dropColumn('vip'); } }); } diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index b06dcad237..8250fe2a58 100755 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -365,8 +365,8 @@
-
- {!! ($user->vipuser=='1') ? ' '.trans('general.yes') : ' '.trans('general.no') !!} + {!! ($user->vip=='1') ? ' '.trans('general.yes') : ' '.trans('general.no') !!}
From 2e22eeade548c18228a9852e63a0472051bad29e Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 25 Jan 2023 14:29:20 -0800 Subject: [PATCH 016/140] adds one input --- app/Http/Livewire/SlackSettingsForm.php | 5 +++++ .../livewire/slack-settings-form.blade.php | 19 ++++++++++++++++++- resources/views/settings/slack.blade.php | 17 +---------------- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/app/Http/Livewire/SlackSettingsForm.php b/app/Http/Livewire/SlackSettingsForm.php index c796ee53cc..0193aa7daf 100644 --- a/app/Http/Livewire/SlackSettingsForm.php +++ b/app/Http/Livewire/SlackSettingsForm.php @@ -11,6 +11,11 @@ class SlackSettingsForm extends Component { public Setting $setting; + protected $rules = [ + 'setting.slack_endpoint' => 'url|required_with:slack_channel|starts_with:https://hooks.slack.com/|nullable', + 'setting.slack_channel' => 'required_with:slack_endpoint|starts_with:#|nullable', + 'setting.slack_botname' => 'string|nullable', + ]; public function render() diff --git a/resources/views/livewire/slack-settings-form.blade.php b/resources/views/livewire/slack-settings-form.blade.php index cdda2ce1ff..4846aa95fb 100644 --- a/resources/views/livewire/slack-settings-form.blade.php +++ b/resources/views/livewire/slack-settings-form.blade.php @@ -1,3 +1,20 @@
- {{-- In work, do what you enjoy. --}} +
+
+
+ {{ Form::label('slack_endpoint', trans('admin/settings/general.slack_endpoint')) }} +
+
+ @if (config('app.lock_passwords')===true) + {{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}} +

{{ trans('general.feature_disabled') }}

+ slack_endpoint)}} > + @else + slack_endpoint)}} > + {{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}} + @endif + {!! $errors->first('slack_endpoint', '') !!} +
+
+
diff --git a/resources/views/settings/slack.blade.php b/resources/views/settings/slack.blade.php index 705510ab8e..f5f21c5aa9 100644 --- a/resources/views/settings/slack.blade.php +++ b/resources/views/settings/slack.blade.php @@ -50,22 +50,7 @@
- -
-
- {{ Form::label('slack_endpoint', trans('admin/settings/general.slack_endpoint')) }} -
-
- @if (config('app.lock_passwords')===true) - {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }} -

{{ trans('general.feature_disabled') }}

- - @else - {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }} - @endif - {!! $errors->first('slack_endpoint', '') !!} -
-
+ @livewire('slack-settings-form', ['setting' => $setting])
From a69cb6204a603edf4d861dffed532f5e8784b62f Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 25 Jan 2023 16:22:34 -0800 Subject: [PATCH 017/140] adds rest of inputs, and corrects Data binding --- app/Http/Livewire/SlackSettingsForm.php | 29 ++++++++++++-- .../livewire/slack-settings-form.blade.php | 40 ++++++++++++++++++- resources/views/settings/slack.blade.php | 34 +--------------- 3 files changed, 65 insertions(+), 38 deletions(-) diff --git a/app/Http/Livewire/SlackSettingsForm.php b/app/Http/Livewire/SlackSettingsForm.php index 0193aa7daf..42d5a70824 100644 --- a/app/Http/Livewire/SlackSettingsForm.php +++ b/app/Http/Livewire/SlackSettingsForm.php @@ -4,23 +4,46 @@ namespace App\Http\Livewire; use Livewire\Component; use App\Models\Setting; +use App\Http\Requests\Request; class SlackSettingsForm extends Component { + public $slack_endpoint; + public $slack_channel; + public $slack_botname; + public Setting $setting; protected $rules = [ - 'setting.slack_endpoint' => 'url|required_with:slack_channel|starts_with:https://hooks.slack.com/|nullable', - 'setting.slack_channel' => 'required_with:slack_endpoint|starts_with:#|nullable', - 'setting.slack_botname' => 'string|nullable', + 'slack_endpoint' => 'url|required_with:slack_channel|starts_with:https://hooks.slack.com/|nullable', + 'slack_channel' => 'required_with:slack_endpoint|starts_with:#|nullable', + 'slack_botname' => 'string|nullable', ]; + public function mount(){ + + $this->setting= Setting::getSettings(); + $this->slack_endpoint = $this->setting->slack_endpoint; + $this->slack_channel = $this->setting->slack_channel; + $this->slack_botname = $this->setting->slack_botname; + + } public function render() { return view('livewire.slack-settings-form'); } + public function submit() + { + + $this->validate(); + + $this->setting->slack_endpoint = $this->slack_endpoint; + $this->setting->slack_channel = $this->slack_channel; + $this->setting->slack_botname = $this->slack_botname; + + } } diff --git a/resources/views/livewire/slack-settings-form.blade.php b/resources/views/livewire/slack-settings-form.blade.php index 4846aa95fb..cd7978f08e 100644 --- a/resources/views/livewire/slack-settings-form.blade.php +++ b/resources/views/livewire/slack-settings-form.blade.php @@ -8,13 +8,49 @@ @if (config('app.lock_passwords')===true) {{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}}

{{ trans('general.feature_disabled') }}

- slack_endpoint)}} > + @else - slack_endpoint)}} > + {{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}} @endif {!! $errors->first('slack_endpoint', '') !!}
+ + +
+
+ {{ Form::label('slack_channel', trans('admin/settings/general.slack_channel')) }} +
+
+ @if (config('app.lock_passwords')===true) + +

{{ trans('general.feature_disabled') }}

+ + @else + + @endif + {!! $errors->first('slack_channel', '') !!} +
+
+ + +
+
+ {{ Form::label('slack_botname', trans('admin/settings/general.slack_botname')) }} +
+
+ @if (config('app.lock_passwords')===true) + {{ Form::text('slack_botname', old('slack_botname', $setting->slack_botname), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'Snipe-Bot')) }} + + +

{{ trans('general.feature_disabled') }}

+ + @else + + @endif + {!! $errors->first('slack_botname', '') !!} +
+
diff --git a/resources/views/settings/slack.blade.php b/resources/views/settings/slack.blade.php index f5f21c5aa9..6bbd321662 100644 --- a/resources/views/settings/slack.blade.php +++ b/resources/views/settings/slack.blade.php @@ -50,41 +50,9 @@
- @livewire('slack-settings-form', ['setting' => $setting]) + @livewire('slack-settings-form') - -
-
- {{ Form::label('slack_channel', trans('admin/settings/general.slack_channel')) }} -
-
- @if (config('app.lock_passwords')===true) - {{ Form::text('slack_channel', old('slack_channel', $setting->slack_channel), array('class' => 'form-control','disabled'=>'disabled','placeholder' => '#IT-Ops')) }} -

{{ trans('general.feature_disabled') }}

- @else - {{ Form::text('slack_channel', old('slack_channel', $setting->slack_channel), array('class' => 'form-control','placeholder' => '#IT-Ops')) }} - @endif - {!! $errors->first('slack_channel', '') !!} -
-
- - -
-
- {{ Form::label('slack_botname', trans('admin/settings/general.slack_botname')) }} -
-
- @if (config('app.lock_passwords')===true) - {{ Form::text('slack_botname', old('slack_botname', $setting->slack_botname), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'Snipe-Bot')) }} -

{{ trans('general.feature_disabled') }}

- - @else - {{ Form::text('slack_botname', old('slack_botname', $setting->slack_botname), array('class' => 'form-control','placeholder' => 'Snipe-Bot')) }} - @endif - {!! $errors->first('slack_botname', '') !!} -
-
-
@@ -88,129 +80,129 @@ @stop -@push('js') - +{{-- --}} -@endpush +{{--@endpush--}} From fc044528b89249efc4852fb8ec992bfa702b7f1c Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Mon, 30 Jan 2023 16:10:02 -0800 Subject: [PATCH 024/140] validation is working, success message appears, database is not updating --- app/Http/Livewire/SlackSettingsForm.php | 11 +- app/Models/Setting.php | 3 + .../livewire/slack-settings-form.blade.php | 138 ++++++++------ resources/views/settings/slack.blade.php | 175 +----------------- 4 files changed, 95 insertions(+), 232 deletions(-) diff --git a/app/Http/Livewire/SlackSettingsForm.php b/app/Http/Livewire/SlackSettingsForm.php index 63b9383a93..ddc38f36b3 100644 --- a/app/Http/Livewire/SlackSettingsForm.php +++ b/app/Http/Livewire/SlackSettingsForm.php @@ -10,6 +10,7 @@ class SlackSettingsForm extends Component public $slack_endpoint; public $slack_channel; public $slack_botname; + public $successMessage; public Setting $setting; @@ -41,13 +42,17 @@ class SlackSettingsForm extends Component public function submit() { - dd("we here now"); - - $this->validate(); + $this->validate([ + 'slack_endpoint' => 'url|required_with:slack_channel|starts_with:https://hooks.slack.com/|nullable', + 'slack_channel' => 'required_with:slack_endpoint|starts_with:#|nullable', + 'slack_botname' => 'string|nullable', + ]); $this->setting->slack_endpoint = $this->slack_endpoint; $this->setting->slack_channel = $this->slack_channel; $this->setting->slack_botname = $this->slack_botname; + $this->successMessage= trans('admin/settings/message.update.success'); + } } diff --git a/app/Models/Setting.php b/app/Models/Setting.php index f2a4184178..8289260647 100755 --- a/app/Models/Setting.php +++ b/app/Models/Setting.php @@ -83,6 +83,9 @@ class Setting extends Model 'email_domain', 'email_format', 'username_format', + 'slack_endpoint', + 'slack_channel', + 'slack_botname', ]; /** diff --git a/resources/views/livewire/slack-settings-form.blade.php b/resources/views/livewire/slack-settings-form.blade.php index a42a99fd7f..5d41ff2a6f 100644 --- a/resources/views/livewire/slack-settings-form.blade.php +++ b/resources/views/livewire/slack-settings-form.blade.php @@ -1,65 +1,85 @@
-
-
-
- {{ Form::label('slack_endpoint', trans('admin/settings/general.slack_endpoint')) }} -
-
- @if (config('app.lock_passwords')===true) - {{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}} -

{{ trans('general.feature_disabled') }}

- - @else - - {{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}} - @endif - {!! $errors->first('slack_endpoint', '') !!} -
-
+
+
+
+
+

+ {{ trans('admin/settings/general.slack') }} +

+
+
+
+ {{$successMessage}} + + {{csrf_field()}} +
+
+ {{ Form::label('slack_endpoint', trans('admin/settings/general.slack_endpoint')) }} +
+
+ @if (config('app.lock_passwords')===true) + {{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}} +

{{ trans('general.feature_disabled') }}

+ + @else + + {{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}} + @endif + {!! $errors->first('slack_endpoint', '') !!} +
+
- -
-
- {{ Form::label('slack_channel', trans('admin/settings/general.slack_channel')) }} -
-
- @if (config('app.lock_passwords')===true) - -

{{ trans('general.feature_disabled') }}

+ +
+
+ {{ Form::label('slack_channel', trans('admin/settings/general.slack_channel')) }} +
+
+ @if (config('app.lock_passwords')===true) + +

{{ trans('general.feature_disabled') }}

- @else - - @endif - {!! $errors->first('slack_channel', '') !!} -
-
- - -
-
- {{ Form::label('slack_botname', trans('admin/settings/general.slack_botname')) }} -
-
- @if (config('app.lock_passwords')===true) - {{ Form::text('slack_botname', old('slack_botname', $setting->slack_botname), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'Snipe-Bot')) }} - - -

{{ trans('general.feature_disabled') }}

- - @else - - @endif - {!! $errors->first('slack_botname', '') !!} -
-
- -
- + +
+
+ {{ Form::label('slack_botname', trans('admin/settings/general.slack_botname')) }} +
+
+ @if (config('app.lock_passwords')===true) + {{ Form::text('slack_botname', old('slack_botname', $setting->slack_botname), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'Snipe-Bot')) }} + +

{{ trans('general.feature_disabled') }}

+ + @else + + @endif + {!! $errors->first('slack_botname', '') !!} +
+
+ + + +
+
+ +
+
+
+
diff --git a/resources/views/settings/slack.blade.php b/resources/views/settings/slack.blade.php index 67a3550536..9e0286c61b 100644 --- a/resources/views/settings/slack.blade.php +++ b/resources/views/settings/slack.blade.php @@ -20,189 +20,24 @@ } - - {{ Form::open(['method' => 'POST', 'files' => false, 'autocomplete' => 'off', 'class' => 'form-horizontal', 'role' => 'form' ]) }} - {{csrf_field()}} - -
-
-
-
-

- {{ trans('admin/settings/general.slack') }} -

-
-
+

{!! trans('admin/settings/general.slack_integration_help',array('slack_link' => 'https://my.slack.com/services/new/incoming-webhook')) !!} - @if (($setting->slack_channel=='') && ($setting->slack_endpoint=='')) - {{ trans('admin/settings/general.slack_integration_help_button') }} - @endif -

+{{-- @if (($setting->slack_channel=='') && ($setting->slack_endpoint==''))--}} +{{-- {{ trans('admin/settings/general.slack_integration_help_button') }}--}} +{{-- @endif--}} +{{--

--}} -
@livewire('slack-settings-form') - -
-
- -
-
-
- - {{Form::close()}} - -@stop - -{{--@push('js')--}} -{{-- --}} - -{{--@endpush--}} From 1e0c58c3cf77beb07c2e9e6624bf233dcd0466ab Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 31 Jan 2023 11:32:05 -0800 Subject: [PATCH 025/140] saves data correctly now --- app/Http/Livewire/SlackSettingsForm.php | 5 +- .../livewire/slack-settings-form.blade.php | 141 ++++++++---------- resources/views/settings/slack.blade.php | 28 +++- 3 files changed, 90 insertions(+), 84 deletions(-) diff --git a/app/Http/Livewire/SlackSettingsForm.php b/app/Http/Livewire/SlackSettingsForm.php index ddc38f36b3..2cb153734c 100644 --- a/app/Http/Livewire/SlackSettingsForm.php +++ b/app/Http/Livewire/SlackSettingsForm.php @@ -52,7 +52,10 @@ class SlackSettingsForm extends Component $this->setting->slack_channel = $this->slack_channel; $this->setting->slack_botname = $this->slack_botname; - $this->successMessage= trans('admin/settings/message.update.success'); + $this->setting->save(); + + session()->flash('message',trans('admin/settings/message.update.success')); + } } diff --git a/resources/views/livewire/slack-settings-form.blade.php b/resources/views/livewire/slack-settings-form.blade.php index 5d41ff2a6f..b01ffa867f 100644 --- a/resources/views/livewire/slack-settings-form.blade.php +++ b/resources/views/livewire/slack-settings-form.blade.php @@ -1,85 +1,76 @@ -
-
-
-
-
-

- {{ trans('admin/settings/general.slack') }} -

-
-
-
- {{$successMessage}} -
- {{csrf_field()}} -
-
- {{ Form::label('slack_endpoint', trans('admin/settings/general.slack_endpoint')) }} -
-
- @if (config('app.lock_passwords')===true) - {{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}} -

{{ trans('general.feature_disabled') }}

- - @else - - {{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}} - @endif - {!! $errors->first('slack_endpoint', '') !!} -
-
- -
-
- {{ Form::label('slack_channel', trans('admin/settings/general.slack_channel')) }} -
-
- @if (config('app.lock_passwords')===true) - -

{{ trans('general.feature_disabled') }}

- @else - - @endif - {!! $errors->first('slack_channel', '') !!} -
+
+ @if (session()->has('message')) +
+ {{session('message')}} +
+ @endif + + {{csrf_field()}} + +
+
+ {{ Form::label('slack_endpoint', trans('admin/settings/general.slack_endpoint')) }}
- - -
-
- {{ Form::label('slack_botname', trans('admin/settings/general.slack_botname')) }} -
-
- @if (config('app.lock_passwords')===true) - {{ Form::text('slack_botname', old('slack_botname', $setting->slack_botname), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'Snipe-Bot')) }} - -

{{ trans('general.feature_disabled') }}

- - @else - - @endif - {!! $errors->first('slack_botname', '') !!} -
+
+ @if (config('app.lock_passwords')===true) +{{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}} +

{{ trans('general.feature_disabled') }}

+
+ @else +
+{{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}} + @endif + {!! $errors->first('slack_endpoint', '') !!}
- +
+ + +
+
+ {{ Form::label('slack_botname', trans('admin/settings/general.slack_botname')) }} +
+
+ @if (config('app.lock_passwords')===true) +{{-- {{ Form::text('slack_botname', old('slack_botname', $setting->slack_botname), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'Snipe-Bot')) }}--}} +
+

{{ trans('general.feature_disabled') }}

+ + @else +
+ @endif + {!! $errors->first('slack_botname', '') !!} +
+
+ + -
-
+
-
-
-
-
diff --git a/resources/views/settings/slack.blade.php b/resources/views/settings/slack.blade.php index 9e0286c61b..25480a1c1e 100644 --- a/resources/views/settings/slack.blade.php +++ b/resources/views/settings/slack.blade.php @@ -19,25 +19,37 @@ padding-right: 40px; } + {{csrf_field()}} - - +
+
+
+
+

+ {{ trans('admin/settings/general.slack') }} +

+
+

{!! trans('admin/settings/general.slack_integration_help',array('slack_link' => 'https://my.slack.com/services/new/incoming-webhook')) !!} +

-{{-- @if (($setting->slack_channel=='') && ($setting->slack_endpoint==''))--}} -{{-- {{ trans('admin/settings/general.slack_integration_help_button') }}--}} -{{-- @endif--}} -{{--

--}} + @livewire('slack-settings-form') + + + +
+
+ + +@stop - @livewire('slack-settings-form') - From 3580bdae86cfcecd0a257d95be861fb3f709af11 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Wed, 1 Feb 2023 11:44:35 -0800 Subject: [PATCH 026/140] Use object accessor instead of array accessor --- app/Models/CheckoutAcceptance.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/CheckoutAcceptance.php b/app/Models/CheckoutAcceptance.php index d68ac7ab7c..4cdc5b073b 100644 --- a/app/Models/CheckoutAcceptance.php +++ b/app/Models/CheckoutAcceptance.php @@ -21,7 +21,7 @@ class CheckoutAcceptance extends Model { // At this point the endpoint is the same for everything. // In the future this may want to be adapted for individual notifications. - return Setting::getSettings()['alert_email']; + return Setting::getSettings()->alert_email; } /** From a45ce468cc8472f98d81fb78983830b064465d52 Mon Sep 17 00:00:00 2001 From: Marcus Moore Date: Wed, 1 Feb 2023 11:44:56 -0800 Subject: [PATCH 027/140] Update return type for routing mail notifications --- app/Models/CheckoutAcceptance.php | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/Models/CheckoutAcceptance.php b/app/Models/CheckoutAcceptance.php index 4cdc5b073b..45fc6ec088 100644 --- a/app/Models/CheckoutAcceptance.php +++ b/app/Models/CheckoutAcceptance.php @@ -16,8 +16,12 @@ class CheckoutAcceptance extends Model 'declined_at' => 'datetime', ]; - // Get the mail recipient from the config - public function routeNotificationForMail(): string + /** + * Get the mail recipient from the config + * + * @return mixed|string|null + */ + public function routeNotificationForMail() { // At this point the endpoint is the same for everything. // In the future this may want to be adapted for individual notifications. From f95a904d90f0523ff70ebb8076fc492152c5f64f Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 1 Feb 2023 12:08:13 -0800 Subject: [PATCH 028/140] adds integration button, working on its functionality --- .../Controllers/Api/SettingsController.php | 22 +++-------- app/Http/Controllers/SettingsController.php | 8 ++-- app/Http/Livewire/SlackSettingsForm.php | 19 +++------- app/Http/Requests/SlackSettingsRequest.php | 1 - .../livewire/slack-settings-form.blade.php | 37 ++++++++++++++++--- resources/views/settings/slack.blade.php | 5 --- 6 files changed, 47 insertions(+), 45 deletions(-) diff --git a/app/Http/Controllers/Api/SettingsController.php b/app/Http/Controllers/Api/SettingsController.php index 62380b2212..26d380353f 100644 --- a/app/Http/Controllers/Api/SettingsController.php +++ b/app/Http/Controllers/Api/SettingsController.php @@ -143,21 +143,11 @@ class SettingsController extends Controller } - public function slacktest(SlackSettingsRequest $request) + public function slacktest($slack_endpoint,$slack_channel,$slack_botname) { - - $validator = Validator::make($request->all(), [ - 'slack_endpoint' => 'url|required_with:slack_channel|starts_with:https://hooks.slack.com/|nullable', - 'slack_channel' => 'required_with:slack_endpoint|starts_with:#|nullable', - ]); - - if ($validator->fails()) { - return response()->json(['message' => 'Validation failed', 'errors' => $validator->errors()], 422); - } - // If validation passes, continue to the curl request $slack = new Client([ - 'base_url' => e($request->input('slack_endpoint')), + 'base_url' => e($slack_endpoint), 'defaults' => [ 'exceptions' => false, ], @@ -165,18 +155,18 @@ class SettingsController extends Controller $payload = json_encode( [ - 'channel' => e($request->input('slack_channel')), + 'channel' => e($slack_channel), 'text' => trans('general.slack_test_msg'), - 'username' => e($request->input('slack_botname')), + 'username' => e($slack_botname), 'icon_emoji' => ':heart:', ]); try { - $slack->post($request->input('slack_endpoint'), ['body' => $payload]); + $slack->post($slack_endpoint, ['body' => $payload]); return response()->json(['message' => 'Success'], 200); } catch (\Exception $e) { - return response()->json(['message' => 'Please check the channel name and webhook endpoint URL ('.e($request->input('slack_endpoint')).'). Slack responded with: '.$e->getMessage()], 400); + return response()->json(['message' => 'Please check the channel name and webhook endpoint URL ('.e($slack_endpoint).'). Slack responded with: '.$e->getMessage()], 400); } //} diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index 9a7c2cc7d5..6daaabdc9f 100755 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -688,15 +688,15 @@ class SettingsController extends Controller * * @return View */ - public function postSlack(SlackSettingsRequest $request) + public function postSlack($slack_endpoint,$slack_channel,$slack_botname) { if (is_null($setting = Setting::getSettings())) { return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error')); } - $setting->slack_endpoint = $request->input('slack_endpoint'); - $setting->slack_channel = $request->input('slack_channel'); - $setting->slack_botname = $request->input('slack_botname'); + $setting->slack_endpoint = $slack_endpoint; + $setting->slack_channel = $slack_channel; + $setting->slack_botname = $slack_botname; if ($setting->save()) { return redirect()->route('settings.index') diff --git a/app/Http/Livewire/SlackSettingsForm.php b/app/Http/Livewire/SlackSettingsForm.php index 2cb153734c..fbc54a0517 100644 --- a/app/Http/Livewire/SlackSettingsForm.php +++ b/app/Http/Livewire/SlackSettingsForm.php @@ -4,28 +4,16 @@ namespace App\Http\Livewire; use Livewire\Component; use App\Models\Setting; +use App\Http\Controllers\Api\SettingsController; class SlackSettingsForm extends Component { public $slack_endpoint; public $slack_channel; public $slack_botname; - public $successMessage; public Setting $setting; - protected $rules = [ - 'slack_endpoint' => 'url|required_with:slack_channel|starts_with:https://hooks.slack.com/|nullable', - 'slack_channel' => 'required_with:slack_endpoint|starts_with:#|nullable', - 'slack_botname' => 'string|nullable', - ]; - protected $messages = [ - 'slack_endpoint.required_with' => 'Slack endpoint is required', - 'slack_endpoint.starts_with' => 'Slack endpoint must start with https://hooks.slack.com', - - - ]; - public function mount(){ $this->setting = Setting::getSettings(); @@ -40,6 +28,11 @@ class SlackSettingsForm extends Component return view('livewire.slack-settings-form'); } + public function testSlack($slack_endpoint, $slack_channel, $slack_botname){ + SettingsController::testSlack($slack_endpoint,$slack_channel,$slack_botname); + + + } public function submit() { $this->validate([ diff --git a/app/Http/Requests/SlackSettingsRequest.php b/app/Http/Requests/SlackSettingsRequest.php index 1f44215198..e8f7d2f0ea 100644 --- a/app/Http/Requests/SlackSettingsRequest.php +++ b/app/Http/Requests/SlackSettingsRequest.php @@ -25,7 +25,6 @@ class SlackSettingsRequest extends Request 'slack_endpoint' => 'url|required_with:slack_channel|starts_with:"https://hooks.slack.com"|nullable', 'slack_channel' => 'required_with:slack_endpoint|starts_with:#|nullable', 'slack_botname' => 'string|nullable', - ]; } diff --git a/resources/views/livewire/slack-settings-form.blade.php b/resources/views/livewire/slack-settings-form.blade.php index b01ffa867f..6562f41b33 100644 --- a/resources/views/livewire/slack-settings-form.blade.php +++ b/resources/views/livewire/slack-settings-form.blade.php @@ -8,6 +8,7 @@ @endif
{{csrf_field()}} +
@@ -17,9 +18,9 @@ @if (config('app.lock_passwords')===true) {{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}}

{{ trans('general.feature_disabled') }}

-
+
@else -
+
{{-- {{ Form::text('slack_endpoint', old('slack_endpoint', $setting->slack_endpoint), array('class' => 'form-control','placeholder' => 'https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXX', 'id' => 'slack_endpoint')) }}--}} @endif {!! $errors->first('slack_endpoint', '') !!} @@ -33,11 +34,11 @@
@if (config('app.lock_passwords')===true) -
+

{{ trans('general.feature_disabled') }}

@else -
+
@endif {!! $errors->first('slack_channel', '') !!}
@@ -51,16 +52,40 @@
@if (config('app.lock_passwords')===true) {{-- {{ Form::text('slack_botname', old('slack_botname', $setting->slack_botname), array('class' => 'form-control','disabled'=>'disabled','placeholder' => 'Snipe-Bot')) }}--}} -
+

{{ trans('general.feature_disabled') }}

@else -
+
@endif {!! $errors->first('slack_botname', '') !!}
+ + @if($slack_endpoint != null && $slack_channel != null && $slack_botname != null) +
+
+ {{ Form::label('test_slack', 'Test Slack') }} +
+
+ +
+ @if($response == 'success') + message here + @endif + @if($response == 'error') + message here + @endif +
+
+ @endif +{{--
--}} +{{-- --}} +{{-- --}} +{{-- --}} +{{--
--}} +