Skip to content

Commit

Permalink
Merge pull request #8327 from snipe/features/checkin_license_from_all…
Browse files Browse the repository at this point in the history
…_users

Checkin license from all users cli tool
  • Loading branch information
snipe authored Aug 14, 2020
2 parents 714576b + 29f3a5c commit e52919c
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 2 deletions.
95 changes: 95 additions & 0 deletions app/Console/Commands/CheckinLicensesFromAllUsers.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
<?php

namespace App\Console\Commands;

use App\Models\LicenseSeat;
use Illuminate\Console\Command;
use App\Models\User;
use App\Models\License;
use Illuminate\Database\Eloquent\Model;

class CheckinLicensesFromAllUsers extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'snipeit:checkin-from-all {--license_id=} {--notify}';

/**
* The console command description.
*
* @var string
*/
protected $description = 'Checks in licenses from all users';

/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}

/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{

$license_id = $this->option('license_id');
$notify = $this->option('notify');

if (!$license_id) {
$this->error('ERROR: License ID is required.');
return false;
}


if (!$license = License::where('id','=',$license_id)->first()) {
$this->error('Invalid license ID');
return false;
}

$this->info('Checking in ALL seats for '.$license->name);


$licenseSeats = LicenseSeat::where('license_id', '=', $license_id)
->whereNotNull('assigned_to')
->with('user')
->get();

$this->info(' There are ' .$licenseSeats->count(). ' seats checked out: ');

if (!$notify) {
$this->info('No mail will be sent.');
}

foreach ($licenseSeats as $seat) {
$this->info($seat->user->username .' has a license seat for '.$license->name);
$seat->assigned_to = null;

if ($seat->save()) {

// Override the email address so we don't notify on checkin
if (!$notify) {
$seat->user->email = null;
}

// Log the checkin
$seat->logCheckin($seat->user, 'Checked in via cli tool');
}




}


}
}
9 changes: 7 additions & 2 deletions app/Models/Loggable.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,9 @@ public function logCheckout($note, $target /* What are we checking out to? */)
$settings = Setting::getSettings();
$log = new Actionlog;
$log = $this->determineLogItemType($log);
if(Auth::user())
if (Auth::user()) {
$log->user_id = Auth::user()->id;
}

if (!isset($target)) {
throw new \Exception('All checkout logs require a target.');
Expand Down Expand Up @@ -144,7 +145,11 @@ public function logCheckin($target, $note)

$log->location_id = null;
$log->note = $note;
$log->user_id = Auth::user()->id;

if (Auth::user()) {
$log->user_id = Auth::user()->id;
}

$log->logaction('checkin from');

$params = [
Expand Down

0 comments on commit e52919c

Please sign in to comment.