Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
63.64% covered (warning)
63.64%
7 / 11
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
TransferTaskStartService
63.64% covered (warning)
63.64%
7 / 11
0.00% covered (danger)
0.00%
0 / 1
3.43
0.00% covered (danger)
0.00%
0 / 1
 start
63.64% covered (warning)
63.64%
7 / 11
0.00% covered (danger)
0.00%
0 / 1
3.43
1<?php
2
3namespace Domain\TransferTask\Services;
4
5use App\Events\ServiceProcessed;
6use App\Models\TransferTask\TransferTask;
7use App\Models\User;
8use Domain\StockIO\Enums\StockStatusEnum;
9use Domain\TransferTask\Enums\TransferTaskStatusEnum;
10use Illuminate\Support\Facades\DB;
11use Throwable;
12
13readonly class TransferTaskStartService
14{
15    /**
16     * @param TransferTask $transferTask
17     * @param User $user
18     * @return void
19     * @throws Throwable
20     */
21    public function start(TransferTask $transferTask, User $user): void
22    {
23        try {
24            DB::beginTransaction();
25
26            if ($transferTask->responsible()->doesntExist()) {
27                $transferTask->responsible()->associate($user);
28            }
29
30            $transferTask->setAttribute('status', StockStatusEnum::STARTED);
31            $transferTask->setAttribute('start_date', now());
32            $transferTask->save();
33
34            DB::commit();
35        } catch (Throwable $throwable) {
36            DB::rollBack();
37            throw $throwable;
38        }
39
40        ServiceProcessed::dispatch(self::class, $user);
41    }
42}