Skip to content
Open
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion app/Http/Controllers/Assets/AssetsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,8 @@ public function edit($assetId = null)

return view('hardware/edit', compact('item'))
->with('statuslabel_list', Helper::statusLabelList())
->with('statuslabel_types', Helper::statusTypeList());
->with('statuslabel_types', Helper::statusTypeList())
->with('settings', Setting::getSettings());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

}


Expand Down
1 change: 1 addition & 0 deletions app/Http/Controllers/SettingsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,7 @@ public function postSettings(Request $request)

$setting->full_multiple_companies_support = $request->input('full_multiple_companies_support', '0');
$setting->unique_serial = $request->input('unique_serial', '0');
$setting->required_serial = $request->input('required_serial', '0');
$setting->show_images_in_email = $request->input('show_images_in_email', '0');
$setting->show_archived_in_list = $request->input('show_archived_in_list', '0');
$setting->dashboard_message = $request->input('dashboard_message');
Expand Down
4 changes: 2 additions & 2 deletions app/Models/Asset.php
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ public function declinedCheckout(User $declinedBy, $signature)
'deleted_at' => 'datetime',
];


protected $rules = [
'model_id' => 'required|integer|exists:models,id,deleted_at,NULL|not_array',
'status_id' => 'required|integer|exists:status_labels,id',
Expand All @@ -112,7 +113,7 @@ public function declinedCheckout(User $declinedBy, $signature)
'location_id' => 'nullable|exists:locations,id',
'rtd_location_id' => 'nullable|exists:locations,id',
'purchase_date' => 'nullable|date|date_format:Y-m-d',
'serial' => 'nullable|unique_undeleted:assets,serial',
'serial' => 'unique_undeleted:assets,serial|potentially_required:required_serial',
'purchase_cost' => 'nullable|numeric|gte:0',
'supplier_id' => 'nullable|exists:suppliers,id',
'asset_eol_date' => 'nullable|date',
Expand All @@ -124,7 +125,6 @@ public function declinedCheckout(User $declinedBy, $signature)
'requestable' => 'nullable|boolean',
];


/**
* The attributes that are mass assignable.
*
Expand Down
19 changes: 19 additions & 0 deletions app/Providers/ValidationServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,25 @@ public function boot()
return $count < 1;
}
});
/**
* Required or nullable field
*
* This checks for a boolean if something should be required. passing the boolean column name from the settings as the parameter
* will check the settings table and apply a requirement if true.
*/
Validator::extend('potentially_required', function ($attribute, $value, $parameters, $validator) {
$required_bool = $parameters[0] ?? null;

if ($required_bool && Setting::getSettings()->{$required_bool}) {
return !empty($value);
}

return true;
});
Validator::replacer('potentially_required', function ($message, $attribute, $rule, $parameters) {
return str_replace(':attribute', $attribute, ':attribute is required.');
});


/**
* Unique if undeleted for two columns
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('settings', function (Blueprint $table) {
$table->boolean('required_serial')->after('unique_serial')->nullable()->default(0);
});
}

/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('settings', function (Blueprint $table) {
$table->dropColumn('required_serial');
});
}
};
2 changes: 2 additions & 0 deletions resources/lang/en-US/admin/settings/general.php
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,8 @@
'vertical' => 'vertical',
'horizontal' => 'horizontal',
'unique_serial' => 'Unique serial numbers',
'required_serial' => 'Require Serial numbers',
'require_serial_help_text' => 'Checking this box will enforce all assets to require a serial.',
'unique_serial_help_text' => 'Checking this box will enforce a uniqueness constraint on asset serials',
'zerofill_count' => 'Length of asset tags, including zerofill',
'username_format_help' => 'This setting will only be used by the import process if a username is not provided and we have to generate a username for you.',
Expand Down
3 changes: 1 addition & 2 deletions resources/views/hardware/edit.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,7 @@
@endif
</div>

@include ('partials.forms.edit.serial', ['fieldname'=> 'serials[1]', 'old_val_name' => 'serials.1', 'translated_serial' => trans('admin/hardware/form.serial')])

@include ('partials.forms.edit.serial', ['fieldname'=> 'serials[1]', 'old_val_name' => 'serials.1', 'translated_serial' => trans('admin/hardware/form.serial'), 'settings' => $settings])
<div class="input_fields_wrap">
</div>

Expand Down
2 changes: 1 addition & 1 deletion resources/views/partials/forms/edit/serial.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<div class="form-group {{ $errors->has('serial') ? ' has-error' : '' }}">
<label for="{{ $fieldname }}" class="col-md-3 control-label">{{ trans('admin/hardware/form.serial') }} </label>
<div class="col-md-7 col-sm-12{{ (Helper::checkIfRequired($item, 'serial')) ? ' required' : '' }}">
<input class="form-control" type="text" name="{{ $fieldname }}" id="{{ $fieldname }}" value="{{ old((isset($old_val_name) ? $old_val_name : $fieldname), $item->serial) }}" />
<input class="form-control" type="text" name="{{ $fieldname }}" id="{{ $fieldname }}" value="{{ old((isset($old_val_name) ? $old_val_name : $fieldname), $item->serial) }}" {{$settings->required_serial ? 'required' : ''}} />
{!! $errors->first('serial', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
</div>
</div>
18 changes: 18 additions & 0 deletions resources/views/settings/general.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,24 @@
</div>
</div>

<!-- required serial -->
<div class="form-group">
<div class="col-md-3">
<strong>{{ trans('admin/settings/general.required_serial') }}</strong>
</div>
<div class="col-md-9">
<label class="form-control">
{{ Form::checkbox('required_serial', '1', Request::old('required_serial', $setting->required_serial),array('class' => 'minimal')) }}
{{ trans('general.yes') }}
{!! $errors->first('required_serial', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
</label>

<p class="help-block">
{{ trans('admin/settings/general.require_serial_help_text') }}
</p>
</div>
</div>


<!-- Per Page -->
<div class="form-group {{ $errors->has('per_page') ? 'error' : '' }}">
Expand Down