Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
ItemChangeStatusService
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 1
 change
0.00% covered (danger)
0.00%
0 / 9
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace Domain\Item\Services;
4
5use App\Events\ServiceProcessed;
6use App\Models\Item\Item;
7use App\Models\User;
8use Domain\Item\Enums\ItemSyncEnum;
9use Illuminate\Support\Facades\DB;
10use Throwable;
11
12readonly class ItemChangeStatusService
13{
14    /**
15     * @param Item $item
16     * @param ItemSyncEnum $itemSyncEnum
17     * @param User $user
18     * @return Item
19     * @throws Throwable
20     */
21    public function change(Item $item, ItemSyncEnum $itemSyncEnum, User $user): Item
22    {
23        try {
24            DB::beginTransaction();
25
26            $item->setAttribute('sync', $itemSyncEnum);
27            $item->save();
28
29            DB::commit();
30        } catch (Throwable $throwable) {
31            DB::rollBack();
32            throw $throwable;
33        }
34
35        ServiceProcessed::dispatch(self::class, $user);
36        return $item;
37    }
38}