PropertyFixtures::getPropertyData()   B
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 105
Code Lines 74

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 74
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 105
rs 8.5672

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
declare(strict_types=1);
4
5
namespace App\DataFixtures;
6
7
use App\Entity\Property;
8
use App\Entity\PropertyDescription;
9
use App\Utils\Slugger;
10
use Doctrine\Bundle\FixturesBundle\Fixture;
11
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
12
use Doctrine\Persistence\ObjectManager;
13
14
final class PropertyFixtures extends Fixture implements DependentFixtureInterface
15
{
16
    public function load(ObjectManager $manager): void
17
    {
18
        foreach ($this->getPropertyData() as [$author, $dealType, $category, $bedrooms, $guests, $city, $district,
19
                 $neighborhood, $metro, $title, $address, $latitude, $longitude, $price, $priceType, ]) {
20
            $property = new Property();
21
            $property->setAuthor($author);
22
            $property->setDealType($dealType);
23
            $property->setCategory($category);
24
            $property->setBedroomsNumber($bedrooms);
25
            $property->setMaxGuests($guests);
26
            $property->setCity($city);
27
            $property->setNeighborhood($neighborhood);
28
            $property->setDistrict($district);
29
            $property->setMetroStation($metro);
30
            $property->setSlug(Slugger::slugify($title));
31
            $property->setAddress($address);
32
            $property->setLatitude($latitude);
33
            $property->setLongitude($longitude);
34
            $property->setShowMap(true);
35
            $property->setPrice($price);
36
            $property->setPriceType($priceType);
37
            $property->setState('published');
38
            $property->setCreatedAt(new \DateTime('now'));
39
            $property->setUpdatedAt(new \DateTime('now'));
40
            $property->addFeature($this->getReference('Air conditioning'));
41
            $property->addFeature($this->getReference('Balcony'));
42
            $property->addFeature($this->getReference('Fire Alarm'));
43
            $property->addFeature($this->getReference('High Impact Doors'));
44
            $property->addFeature($this->getReference('Secure parking'));
45
            $property->setPriorityNumber(0);
46
            $property->setPropertyDescription((new PropertyDescription())
47
                ->setTitle($title)
48
                ->setMetaDescription($title)
49
                ->setContent($this->getPropertyContent())
50
            );
51
            $manager->persist($property);
52
            $this->addReference(Slugger::slugify($title), $property);
53
        }
54
        $manager->flush();
55
    }
56
57
    private function getPropertyData(): array
58
    {
59
        return [
60
            /*
61
                $propertyData = [$author, $dealType, $category, $bedrooms, $guests, $city,
62
                                $district $neighborhood, $metro, $title, $address,
63
                                $latitude, $longitude, $price, $priceType];
64
            */
65
            [
66
                $this->getReference('admin'),
67
                $this->getReference('Sale'),
68
                $this->getReference('Villa'),
69
                5,
70
                null,
71
                $this->getReference('Tampa'),
72
                $this->getReference('South Tampa'),
73
                $this->getReference('Culbreath Isles'),
74
                null,
75
                'Beautiful villa for sale in Tampa',
76
                '4935 New Providence Ave, Tampa, FL',
77
                '27.932255', '-82.533187', 1600, 'sq. foot',
78
            ],
79
            [
80
                $this->getReference('admin'),
81
                $this->getReference('Rent'),
82
                $this->getReference('Penthouse'),
83
                2,
84
                5,
85
                $this->getReference('Palm Beach'),
86
                null,
87
                null,
88
                null,
89
                'Stylish two-level penthouse in Palm Beach',
90
                '101 Worth Ave, Palm Beach, FL 33480',
91
                '26.701320', '-80.033688', 2000, 'mo',
92
            ],
93
            [
94
                $this->getReference('admin'),
95
                $this->getReference('Rent'),
96
                $this->getReference('Apartment'),
97
                null,
98
                4,
99
                $this->getReference('Miami'),
100
                null,
101
                $this->getReference('South Beach'),
102
                null,
103
                'Bright and Cheerful alcove studio',
104
                '1451 Ocean Dr, Miami Beach, FL 33139',
105
                '25.785107', '-80.129460', 200, 'day',
106
            ],
107
            [
108
                $this->getReference('admin'),
109
                $this->getReference('Rent'),
110
                $this->getReference('Apartment'),
111
                1,
112
                2,
113
                $this->getReference('Miami'),
114
                null,
115
                $this->getReference('South Beach'),
116
                null,
117
                'Modern one-bedroom apartment in Miami',
118
                '1451 Ocean Dr, Miami Beach, FL 33139',
119
                '25.785107', '-80.129460', 250, 'day',
120
            ],
121
            [
122
                $this->getReference('admin'),
123
                $this->getReference('Rent'),
124
                $this->getReference('Apartment'),
125
                1,
126
                3,
127
                $this->getReference('Palm Beach'),
128
                null,
129
                null,
130
                null,
131
                'Bright fully furnished 1-bedroom flat on the 2nd floor',
132
                '300 S Ocean Blvd, Palm Beach, FL',
133
                '26.705007', '-80.033574', 180, 'day',
134
            ],
135
            [
136
                $this->getReference('user'),
137
                $this->getReference('Sale'),
138
                $this->getReference('Apartment'),
139
                2,
140
                null,
141
                $this->getReference('Miami'),
142
                null,
143
                $this->getReference('Downtown'),
144
                $this->getReference('Government Center'),
145
                'Interesting two-bedroom apartment for sale',
146
                '111 NE 2nd Ave, Miami, FL 33132',
147
                '25.775565', '-80.190125', 190000, '',
148
            ],
149
            [
150
                $this->getReference('user'),
151
                $this->getReference('Rent'),
152
                $this->getReference('Apartment'),
153
                2,
154
                6,
155
                $this->getReference('Tampa'),
156
                null,
157
                $this->getReference('Ballast Point'),
158
                null,
159
                'Furnished renovated 2-bedroom 2-bathroom flat',
160
                '5411 Bayshore Blvd, Tampa, FL 33611',
161
                '27.885095', '-82.486153', 2200, 'mo',
162
            ],
163
        ];
164
    }
165
166
    private function getPropertyContent(): string
167
    {
168
        return '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit,
169
                sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
170
                Ut enim ad minim veniam, quis nostrud exercitation ullamco
171
                laboris nisi ut aliquip ex ea commodo consequat.
172
                Duis aute irure dolor in reprehenderit in voluptate
173
                velit esse cillum dolore eu fugiat nulla pariatur.
174
                Excepteur sint occaecat cupidatat non proident, sunt in culpa qui
175
                officia deserunt mollit anim id est laborum.</p>
176
                <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem
177
                accusantium doloremque laudantium, totam rem aperiam,
178
                eaque ipsa quae ab illo inventore veritatis et quasi
179
                architecto beatae vitae dicta sunt explicabo.
180
                Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut
181
                odit aut fugit, sed quia consequuntur magni dolores eos qui
182
                ratione voluptatem sequi nesciunt. Neque porro quisquam est,
183
                qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit,
184
                sed quia non numquam eius modi tempora incidunt ut labore et dolore
185
                magnam aliquam quaerat voluptatem. Ut enim ad minima veniam,
186
                quis nostrum exercitationem ullam corporis suscipit laboriosam,
187
                nisi ut aliquid ex ea commodi consequatur.</p>';
188
    }
189
190
    public function getDependencies()
191
    {
192
        return [
193
            CategoryFixtures::class,
194
            CityFixtures::class,
195
            DealTypeFixtures::class,
196
            DistrictFixtures::class,
197
            FeatureFixtures::class,
198
            MetroFixtures::class,
199
            NeighborhoodFixtures::class,
200
            UserFixtures::class,
201
        ];
202
    }
203
}
204