mirror of
https://github.com/snipe/snipe-it.git
synced 2025-02-21 03:15:45 -08:00
Clear pending checkout acceptances when checking in asset via api
This commit is contained in:
parent
dba837b1d2
commit
4caadcfa19
|
@ -5,6 +5,8 @@ namespace App\Http\Controllers\Api;
|
||||||
use App\Events\CheckoutableCheckedIn;
|
use App\Events\CheckoutableCheckedIn;
|
||||||
use App\Http\Requests\StoreAssetRequest;
|
use App\Http\Requests\StoreAssetRequest;
|
||||||
use App\Http\Traits\MigratesLegacyLocations;
|
use App\Http\Traits\MigratesLegacyLocations;
|
||||||
|
use App\Models\CheckoutAcceptance;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Support\Facades\Crypt;
|
use Illuminate\Support\Facades\Crypt;
|
||||||
use Illuminate\Support\Facades\Gate;
|
use Illuminate\Support\Facades\Gate;
|
||||||
|
@ -919,6 +921,19 @@ class AssetsController extends Controller
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get all pending Acceptances for this asset and delete them
|
||||||
|
CheckoutAcceptance::pending()
|
||||||
|
->whereHasMorph(
|
||||||
|
'checkoutable',
|
||||||
|
[Asset::class],
|
||||||
|
function (Builder $query) use ($asset) {
|
||||||
|
$query->where('id', $asset->id);
|
||||||
|
})
|
||||||
|
->get()
|
||||||
|
->map(function ($acceptance) {
|
||||||
|
$acceptance->delete();
|
||||||
|
});
|
||||||
|
|
||||||
if ($asset->save()) {
|
if ($asset->save()) {
|
||||||
event(new CheckoutableCheckedIn($asset, $target, Auth::user(), $request->input('note'), $checkin_at, $originalValues));
|
event(new CheckoutableCheckedIn($asset, $target, Auth::user(), $request->input('note'), $checkin_at, $originalValues));
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ namespace Tests\Feature\Api\Assets;
|
||||||
|
|
||||||
use App\Events\CheckoutableCheckedIn;
|
use App\Events\CheckoutableCheckedIn;
|
||||||
use App\Models\Asset;
|
use App\Models\Asset;
|
||||||
|
use App\Models\CheckoutAcceptance;
|
||||||
use App\Models\LicenseSeat;
|
use App\Models\LicenseSeat;
|
||||||
use App\Models\Location;
|
use App\Models\Location;
|
||||||
use App\Models\Statuslabel;
|
use App\Models\Statuslabel;
|
||||||
|
@ -130,7 +131,14 @@ class AssetCheckinTest extends TestCase
|
||||||
|
|
||||||
public function testPendingCheckoutAcceptancesAreClearedUponCheckin()
|
public function testPendingCheckoutAcceptancesAreClearedUponCheckin()
|
||||||
{
|
{
|
||||||
$this->markTestIncomplete('Not currently in controller');
|
$asset = Asset::factory()->assignedToUser()->create();
|
||||||
|
|
||||||
|
$acceptance = CheckoutAcceptance::factory()->for($asset, 'checkoutable')->pending()->create();
|
||||||
|
|
||||||
|
$this->actingAsForApi(User::factory()->checkinAssets()->create())
|
||||||
|
->postJson(route('api.asset.checkin', $asset));
|
||||||
|
|
||||||
|
$this->assertFalse($acceptance->exists(), 'Acceptance was not deleted');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCheckinTimeAndActionLogNoteCanBeSet()
|
public function testCheckinTimeAndActionLogNoteCanBeSet()
|
||||||
|
|
Loading…
Reference in a new issue