diff --git a/app/Console/Commands/FixMismatchedAssetsAndLogs.php b/app/Console/Commands/FixMismatchedAssetsAndLogs.php new file mode 100644 index 0000000000..07461e2472 --- /dev/null +++ b/app/Console/Commands/FixMismatchedAssetsAndLogs.php @@ -0,0 +1,81 @@ +get(); + foreach ($assets as $asset) { + + // get the last checkout of the asset + if ($checkout_log = Actionlog::where('target_type', '=', 'App\\Models\\User') + ->where('action_type', '=', 'checkout') + ->where('item_id', '=', $asset->id) + ->orderBy('created_at', 'DESC') + ->first()) { + + // Now check for a subsequent checkin log - we want to ignore those + if (!$checkin_log = Actionlog::where('target_type', '=', 'App\\Models\\User') + ->where('action_type', '=', 'checkin from') + ->where('item_id', '=', $asset->id) + ->whereDate('created_at', '>', $checkout_log->created_at) + ->orderBy('created_at', 'DESC') + ->first()) { + + // $this->info($checkout_log->id.' is checked out to '.$checkout_log->target_type.' '.$checkout_log->target_id.' and there is no subsequent checkin log.'); + + + //print_r($asset); + if ($checkout_log->target_id != $asset->assigned_to) { + $this->error('Log ID: '.$checkout_log->id.' -- Asset ID '. $checkout_log->item_id.' SHOULD BE checked out to User '.$checkout_log->target_id.' but its assigned_to is '.$asset->assigned_to ); + $mismatch_count++; + } + } else { + $this->info('Asset ID '.$asset->id.': There is a checkin '.$checkin_log->created_at.' after this checkout '.$checkout_log->created_at); + + } + + } + + } + $this->info($mismatch_count.' mismatched assets.'); + + } +}