Passed
Push — test ( 7f1499...ccf3d3 )
by Someshwer
06:32
created

UnionTerritories::getOptimizedTerritoriesData()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 6
ccs 4
cts 4
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Someshwer\WorldCountries\Utils;
4
5
use Illuminate\Encryption\Encrypter;
6
use Someshwer\WorldCountries\Data\DataRepository;
7
use Illuminate\Support\Str;
8
9
/**
10
 * Author: Someshwer Bandapally
11
 * Date: 14-07-2018.
12
 *
13
 * Gives union territories names
14
 *
15
 * Class UnionTerritories
16
 */
17
trait UnionTerritories
18
{
19
    /**
20
     * @var DataRepository
21
     */
22
    private $data;
23
24
    /**
25
     * @var string
26
     */
27
    private $en_key = 'Someshwer1@2#BandapallySomeshwer';
28
29
    /**
30
     * @var string
31
     */
32
    private $cipher = 'AES-256-CBC';
33
34
    /**
35
     * UnionTerritories constructor.
36
     *
37
     * @param DataRepository $dataRepository
38
     */
39
    public function __construct(DataRepository $dataRepository)
40
    {
41
        $this->data = $dataRepository;
42
    }
43
44
    /**
45
     * Optimizes union territories data.
46
     *
47
     * @param $all_territories_data
48
     *
49
     * @return string
50
     */
51 1
    private function optimizeTerritoriesData($all_territories_data)
52
    {
53 1
        $str_length = strlen($all_territories_data) - 4;
54 1
        $all_territories_trimmed_data = substr($all_territories_data, 0, 2).substr($all_territories_data, 3, $str_length);
55 1
        $hash = new Encrypter($this->en_key, $this->cipher);
56
57 1
        return $hash->decrypt($all_territories_trimmed_data);
58
    }
59
60
    /**
61
     * Fetches union territories names from a file.
62
     *
63
     * @return string
64
     */
65 1
    private function getOptimizedTerritoriesData()
66
    {
67 1
        $all_territories_data = $this->data->unionTerritories();
68 1
        $territories_data = $this->optimizeTerritoriesData($all_territories_data);
69
70 1
        return $territories_data;
71
    }
72
73
    /**
74
     * Formats union territories.
75
     *
76
     * @param $territories
77
     *
78
     * @return static
79
     */
80 1
    private function formatTerritories($territories)
81
    {
82
        return collect($territories)->transform(function ($item, $key) {
0 ignored issues
show
Bug Best Practice introduced by
The expression return collect($territor... /* ... */ })->values() returns the type Illuminate\Support\Collection which is incompatible with the documented return type Someshwer\WorldCountries\Utils\UnionTerritories.
Loading history...
83 1
            $data['name'] = $key;
0 ignored issues
show
Comprehensibility Best Practice introduced by
$data was never initialized. Although not strictly required by PHP, it is generally a good practice to add $data = array(); before regardless.
Loading history...
84 1
            $data['display_name'] = str_replace('_', ' ', Str::title($key));
85 1
            $data['capital'] = str_replace('_', ' ', Str::title($item));
86 1
            $data['country'] = 'India';
87
88 1
            return $data;
89 1
        })->values();
90
    }
91
92
    /**
93
     * Returns all union territories names.
94
     *
95
     * @return array
96
     */
97 1
    public function unionTerritories()
98
    {
99 1
        $territories = $this->getOptimizedTerritoriesData();
100 1
        $formatted_territories = $this->formatTerritories($territories);
101
102 1
        return ['union_territories' => ['india' => $formatted_territories]];
103
    }
104
}
105