Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
72.73% covered (warning)
72.73%
8 / 11
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
OriginUpdateService
72.73% covered (warning)
72.73%
8 / 11
0.00% covered (danger)
0.00%
0 / 1
3.18
0.00% covered (danger)
0.00%
0 / 1
 update
72.73% covered (warning)
72.73%
8 / 11
0.00% covered (danger)
0.00%
0 / 1
3.18
1<?php
2
3namespace Domain\Category\Services;
4
5use App\Events\ServiceProcessed;
6use App\Models\Category\Origin;
7use App\Models\User;
8use Domain\Category\DTOs\OriginDTO;
9use Domain\Integration\Services\IntegrationUpdateService;
10use Illuminate\Support\Facades\DB;
11use Throwable;
12
13class OriginUpdateService
14{
15    /**
16     * @param OriginDTO $originDTO
17     * @param Origin $origin
18     * @param User $user
19     * @return Origin
20     * @throws Throwable
21     */
22    public function update(OriginDTO $originDTO, Origin $origin, User $user): Origin
23    {
24        try {
25            DB::beginTransaction();
26
27            $origin->fill($originDTO->toArray());
28            if ($origin->isDirty()) {
29                $origin->save();
30            }
31
32            (new IntegrationUpdateService())->update($originDTO->integrationOriginDTO, $origin->integration, $user);
33
34            DB::commit();
35        } catch (Throwable $exception) {
36            DB::rollBack();
37            throw $exception;
38        }
39
40        ServiceProcessed::dispatch(self::class, $user);
41        return $origin;
42    }
43}