Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
70.00% covered (warning)
70.00%
7 / 10
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
TransferTaskProductUpdateService
70.00% covered (warning)
70.00%
7 / 10
0.00% covered (danger)
0.00%
0 / 1
2.11
0.00% covered (danger)
0.00%
0 / 1
 update
70.00% covered (warning)
70.00%
7 / 10
0.00% covered (danger)
0.00%
0 / 1
2.11
1<?php
2
3namespace Domain\TransferTask\Services;
4
5use App\Events\ServiceProcessed;
6use App\Models\TransferTask\TransferTaskProduct;
7use App\Models\User;
8use Domain\TransferTask\DTOs\TransferTaskProductDTO;
9use Illuminate\Support\Facades\DB;
10use Throwable;
11
12readonly class TransferTaskProductUpdateService
13{
14    /**
15     * @param TransferTaskProductDTO $productDTO
16     * @param TransferTaskProduct $transferTaskProduct
17     * @param User $user
18     * @return TransferTaskProduct
19     * @throws Throwable
20     */
21    public function update(TransferTaskProductDTO $productDTO, TransferTaskProduct $transferTaskProduct, User $user): TransferTaskProduct
22    {
23        try {
24            DB::beginTransaction();
25
26            $transferTaskProduct->fill($productDTO->toArray());
27            $transferTaskProduct->product()->associate($productDTO->product);
28            $transferTaskProduct->save();
29
30            DB::commit();
31        } catch (Throwable $throwable) {
32            DB::rollBack();
33            throw $throwable;
34        }
35
36        ServiceProcessed::dispatch(self::class, $user);
37        return $transferTaskProduct;
38    }
39
40}