mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-27 14:39:49 -08:00
Merge remote-tracking branch 'origin/develop'
This commit is contained in:
commit
a49e66c689
|
@ -28,6 +28,7 @@ use App\Http\Requests\SlackSettingsRequest;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use Illuminate\Support\Facades\Artisan;
|
use Illuminate\Support\Facades\Artisan;
|
||||||
use Illuminate\Support\Facades\Validator;
|
use Illuminate\Support\Facades\Validator;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This controller handles all actions related to Settings for
|
* This controller handles all actions related to Settings for
|
||||||
|
@ -636,21 +637,21 @@ class SettingsController extends Controller
|
||||||
// Check if the audit interval has changed - if it has, we want to update ALL of the assets audit dates
|
// Check if the audit interval has changed - if it has, we want to update ALL of the assets audit dates
|
||||||
if ($request->input('audit_interval') != $setting->audit_interval) {
|
if ($request->input('audit_interval') != $setting->audit_interval) {
|
||||||
|
|
||||||
// Be careful - this could be a negative number
|
// This could be a negative number if the user is trying to set the audit interval to a lower number than it was before
|
||||||
$audit_diff_months = ((int)$request->input('audit_interval') - (int)($setting->audit_interval));
|
$audit_diff_months = ((int)$request->input('audit_interval') - (int)($setting->audit_interval));
|
||||||
|
|
||||||
// Grab all assets that have an existing next_audit_date, chunking to handle very large datasets
|
|
||||||
Asset::whereNotNull('next_audit_date')->chunk(200, function ($assets) use ($audit_diff_months) {
|
|
||||||
|
|
||||||
// Update assets' next_audit_date values
|
// Batch update the dates. We have to use this method to avoid time limit exceeded errors on very large datasets,
|
||||||
foreach ($assets as $asset) {
|
// but it DOES mean this change doesn't get logged in the action logs, since it skips the observer.
|
||||||
if ($asset->next_audit_date != '') {
|
// @see https://stackoverflow.com/questions/54879160/laravel-observer-not-working-on-bulk-insert
|
||||||
$old_next_audit = new \DateTime($asset->next_audit_date);
|
$affected = Asset::whereNotNull('next_audit_date')
|
||||||
$asset->next_audit_date = $old_next_audit->modify($audit_diff_months . ' month')->format('Y-m-d');
|
->whereNull('deleted_at')
|
||||||
$asset->forceSave();
|
->update(
|
||||||
}
|
['next_audit_date' => DB::raw('DATE_ADD(next_audit_date, INTERVAL '.$audit_diff_months.' MONTH)')]
|
||||||
}
|
);
|
||||||
});
|
|
||||||
|
\Log::debug($affected .' assets affected by audit interval update');
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$alert_email = rtrim($request->input('alert_email'), ',');
|
$alert_email = rtrim($request->input('alert_email'), ',');
|
||||||
|
|
Loading…
Reference in a new issue