Completed
Push — dependabot/npm_and_yarn/tippy.... ( 40037f...deaa3c )
by
unknown
400:02 queued 379:38
created

HasDetails::details()   A

Complexity

Conditions 5
Paths 16

Size

Total Lines 20
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 14
CRAP Score 5

Importance

Changes 2
Bugs 0 Features 1
Metric Value
cc 5
eloc 13
c 2
b 0
f 1
nc 16
nop 0
dl 0
loc 20
ccs 14
cts 14
cp 1
crap 5
rs 9.5222
1
<?php
2
3
namespace Thinktomorrow\Chief\Management\Details;
4
5
use Illuminate\Support\Str;
6
use Thinktomorrow\Chief\FlatReferences\ProvidesFlatReference;
7
8
trait HasDetails
9
{
10
    /**
11
     * Details of the model such as naming, key and class.
12
     * Used in several dynamic parts of the admin application.
13
     */
14 118
    public function details(): Details
15
    {
16
        // Generic model details
17
        // might be able to remove this as id isnt general info
18 118
        $id = Str::slug($this->registration->key().'-'.$this->model->id);
19 118
        $key = $this->registration->key();
20 118
        $labelSingular = property_exists($this->model, 'labelSingular') ? $this->model->labelSingular : Str::singular($key);
21 118
        $labelPlural = property_exists($this->model, 'labelPlural') ? $this->model->labelPlural : Str::plural($key);
22 118
        $internal_label = contract($this->model, ProvidesFlatReference::class) ? $this->model->flatReferenceLabel() : $key;
23
24
        // Manager index and header info
25 118
        $title = $this->model->title ?? ($this->model->id ? $labelSingular . ' ' . $this->model->id : $labelSingular);
26
27 118
        return new Details(
28 118
            $id,
29 118
            $key,
30 118
            $labelSingular.'',
31 118
            $labelPlural.'',
32 118
            $internal_label,
33 118
            $title.''
34
        );
35
    }
36
}
37