mirror of
https://github.com/snipe/snipe-it.git
synced 2024-12-25 05:34:06 -08:00
Added comments to explain the potential race condition
Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
parent
b96e77268a
commit
c14a01eb8b
|
@ -120,17 +120,29 @@ class AssetObserver
|
||||||
$logAction->user_id = Auth::id();
|
$logAction->user_id = Auth::id();
|
||||||
$logAction->logaction('delete');
|
$logAction->logaction('delete');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Executes every time an asset is saved.
|
||||||
|
*
|
||||||
|
* This matters specifically because any database fields affected here MUST already exist on
|
||||||
|
* the assets table (and/or any related models), or related migrations WILL fail.
|
||||||
|
*
|
||||||
|
* For example, if there is a database migration that's a bit older and modifies an asset, if the save
|
||||||
|
* fires before a field gets created in a later migration and that field in the later migration
|
||||||
|
* is used in this observer, it doesn't actually exist yet and the migration will break.
|
||||||
|
*
|
||||||
|
* @see https://github.com/snipe/snipe-it/issues/13723#issuecomment-1761315938
|
||||||
|
*/
|
||||||
public function saving(Asset $asset)
|
public function saving(Asset $asset)
|
||||||
{
|
{
|
||||||
//determine if calculated eol and then calculate it - this should only happen on a new asset
|
// determine if calculated eol and then calculate it - this should only happen on a new asset
|
||||||
if(is_null($asset->asset_eol_date) && !is_null($asset->purchase_date) && !is_null($asset->model->eol)){
|
if (is_null($asset->asset_eol_date) && !is_null($asset->purchase_date) && !is_null($asset->model->eol)){
|
||||||
$asset->asset_eol_date = $asset->purchase_date->addMonths($asset->model->eol)->format('Y-m-d');
|
$asset->asset_eol_date = $asset->purchase_date->addMonths($asset->model->eol)->format('Y-m-d');
|
||||||
$asset->eol_explicit = false;
|
$asset->eol_explicit = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//determine if explicit and set eol_explit to true
|
// determine if explicit and set eol_explicit to true
|
||||||
if(!is_null($asset->asset_eol_date) && !is_null($asset->purchase_date)) {
|
if (!is_null($asset->asset_eol_date) && !is_null($asset->purchase_date)) {
|
||||||
if($asset->model->eol) {
|
if($asset->model->eol) {
|
||||||
$months = Carbon::parse($asset->asset_eol_date)->diffInMonths($asset->purchase_date);
|
$months = Carbon::parse($asset->asset_eol_date)->diffInMonths($asset->purchase_date);
|
||||||
if($months != $asset->model->eol) {
|
if($months != $asset->model->eol) {
|
||||||
|
|
Loading…
Reference in a new issue