Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
UnitMeasurementStoreService
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 1
 store
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace Domain\UnitMeasurement\Services;
4
5use App\Events\ServiceProcessed;
6use App\Models\UnitMeasurement\UnitMeasurement;
7use App\Models\User;
8use Domain\Integration\Services\IntegrationStoreService;
9use Domain\UnitMeasurement\DTOs\UnitMeasurementDTO;
10use Exception;
11use Illuminate\Support\Facades\DB;
12
13readonly class UnitMeasurementStoreService
14{
15
16    /**
17     * @param UnitMeasurementDTO $measurementDTO
18     * @param User $user
19     * @return UnitMeasurement
20     * @throws Exception
21     */
22    public function store(UnitMeasurementDTO $measurementDTO, User $user): UnitMeasurement
23    {
24        try {
25            DB::beginTransaction();
26
27            $measurement = new UnitMeasurement();
28            $measurement->fill($measurementDTO->toArray());
29            $measurement->save();
30
31            (new IntegrationStoreService())->store($measurementDTO->integrationUnitMeasurementDTO, $measurement, $user);
32
33            DB::commit();
34        } catch (Exception $exception) {
35            DB::rollBack();
36            throw $exception;
37        }
38
39        ServiceProcessed::dispatch(self::class, $user);
40        return $measurement;
41    }
42}