Completed
Push — Recipes ( 1ddc90...b6f9bc )
by Laurent
03:45
created

LoadArticleData::getRandFloat()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 3
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * LoadArticleData Données de l'application GLSR.
4
 *
5
 * PHP Version 7
6
 *
7
 * @author    Quétier Laurent <[email protected]>
8
 * @copyright 2018 Dev-Int GLSR
9
 * @license   http://opensource.org/licenses/gpl-license.php GNU Public License
10
 *
11
 * @version GIT: $Id$
12
 *
13
 * @see https://github.com/Dev-Int/glsr
14
 */
15
16
namespace App\DataFixtures;
17
18
use Doctrine\Bundle\FixturesBundle\Fixture;
19
use Doctrine\Common\Persistence\ObjectManager;
20
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
21
use App\Entity\Settings\Article;
22
use App\Entity\Settings\Diverse\Material;
23
use App\DataFixtures\LoadDiverseData;
24
use App\DataFixtures\LoadSupplierData;
25
26
/**
27
 * Load Article Data.
28
 *
29
 * @category DataFixtures
30
 */
31
class LoadArticleData extends Fixture implements DependentFixtureInterface
32
{
33
    /**
34
     * Load data fixtures with the passed EntityManager.
35
     *
36
     * @param ObjectManager $manager
37
     */
38
    public function load(ObjectManager $manager)
39
    {
40
        $datas = $this->getDatas();
41
        foreach ($datas as $key => $data) {
42
            $article = new Article();
43
            $article->setName($data['name'])
44
                ->setSupplier($data['supplier'])
45
                ->setFamilyLog($data['familyLog'])
46
                ->addZoneStorage($data['zoneStorage'])
47
                ->setUnitStorage($data['unitStorage'])
48
                ->setUnitWorking($data['unitWorking'])
49
                ->setPrice($data['price'])
50
                ->setPackaging($data['packaging'])
51
                ->setTva($data['tva'])
52
                ->setMinStock($data['minStock']);
53
54
            $manager->persist($article);
55
            $order = $key + 1;
56
            $this->addReference('article'.$order, $article);
57
58
            $material = new Material();
59
            $material->setName($data['name'])
60
                ->setUnitWorking($data['unitWorking'])
61
                ->addArticle($this->getReference('article'.$order))
62
                ->setActive(1);
63
64
            $manager->persist($material);
65
            $this->addReference('material'.$order, $material);
66
        }
67
68
        $manager->flush();
69
    }
70
71
    public function getDependencies()
72
    {
73
        return [
74
            LoadDiverseData::class,
75
            LoadSupplierData::class,
76
        ];
77
    }
78
79
    /**
80
     * Return float random.
81
     *
82
     * @param integer $min
83
     * @param integer $max
84
     * @param integer $decimals
85
     */
86
    protected function getRandFloat(int $min = 0, int $max, int $decimals): float
87
    {
88
        $divisor = pow(10, $decimals);
89
        return mt_rand($min, $max * $divisor) / $divisor;
90
    }
91
92
    /**
93
     * Get the array fixture's datas
94
     */
95
    protected function getDatas(): array
96
    {
97
        /**
98
         * Supplier references
99
         */
100
        $davigel = $this->getReference('supplier1');
101
        $davifrais = $this->getReference('supplier2');
102
        $davisec = $this->getReference('supplier3');
103
        $loireBoissons = $this->getReference('supplier4');
104
105
        /**
106
         * Categories references
107
         */
108
        $frais = $this->getReference('family-log4');
109
        $sec = $this->getReference('family-log5');
110
        $viandeSurgele = $this->getReference('family-log9');
111
        $fruitLegumesFrais = $this->getReference('family-log10');
112
        $vins = $this->getReference('family-log16');
113
114
        /**
115
         * Storage area references
116
         */
117
        $zoneSurgele = $this->getReference('zoneStorage1');
118
        $zoneFrais = $this->getReference('zoneStorage2');
119
        $zoneSec = $this->getReference('zoneStorage3');
120
        $zoneBoisson = $this->getReference('zoneStorage4');
121
122
        /**
123
         * Units references
124
         */
125
        $bouteille = $this->getReference('unit2');
126
        $kilogramme = $this->getReference('unit5');
127
        $piece = $this->getReference('unit7');
128
129
        /**
130
         * VAT references
131
         */
132
        $tvaReduit = $this->getReference('tva1');
133
134
        /**
135
         * Articles datas
136
         */
137
        $datas = [
138
            ['name' => 'Salade', 'supplier' => $davifrais,
139
            'familyLog' => $fruitLegumesFrais, 'zoneStorage' => $zoneFrais,
140
            'unitStorage' => $piece, 'unitWorking' => $kilogramme, 'price' => $this->getRandFloat(0, 12, 3),
141
            'packaging' => $this->getRandFloat(5, 125, 3), 'tva' => $tvaReduit, 'minStock' => $this->getRandFloat(3, 25, 3), ],
142
            ['name' => 'Bavette 150gr', 'supplier' => $davigel,
143
            'familyLog' => $viandeSurgele, 'zoneStorage' => $zoneSurgele,
144
            'unitStorage' => $piece, 'unitWorking' => $piece, 'price' => $this->getRandFloat(0, 12, 3),
145
            'packaging' => $this->getRandFloat(5, 125, 3), 'tva' => $tvaReduit, 'minStock' => $this->getRandFloat(3, 25, 3), ],
146
            ['name' => 'Baguettine', 'supplier' => $davigel,
147
            'familyLog' => $viandeSurgele, 'zoneStorage' => $zoneSurgele,
148
            'unitStorage' => $piece, 'unitWorking' => $piece, 'price' => $this->getRandFloat(0, 12, 3),
149
            'packaging' => $this->getRandFloat(5, 125, 3), 'tva' => $tvaReduit, 'minStock' => $this->getRandFloat(3, 25, 3), ],
150
            ['name' => 'Steack haché 20%MG 120g', 'supplier' => $davigel,
151
            'familyLog' => $viandeSurgele, 'zoneStorage' => $zoneSurgele,
152
            'unitStorage' => $piece, 'unitWorking' => $piece, 'price' => $this->getRandFloat(0, 12, 3),
153
            'packaging' => $this->getRandFloat(5, 125, 3), 'tva' => $tvaReduit, 'minStock' => $this->getRandFloat(3, 25, 3), ],
154
            ['name' => 'Ananas poche 2.3 KG', 'supplier' => $davisec,
155
            'familyLog' => $sec, 'zoneStorage' => $zoneSec,
156
            'unitStorage' => $piece, 'unitWorking' => $kilogramme, 'price' => $this->getRandFloat(0, 12, 3),
157
            'packaging' => $this->getRandFloat(5, 125, 3), 'tva' => $tvaReduit, 'minStock' => $this->getRandFloat(3, 25, 3), ],
158
            ['name' => 'Appareil Champigons 2 KG', 'supplier' => $davifrais,
159
            'familyLog' => $frais, 'zoneStorage' => $zoneFrais,
160
            'unitStorage' => $piece, 'unitWorking' => $kilogramme, 'price' => $this->getRandFloat(0, 12, 3),
161
            'packaging' => $this->getRandFloat(5, 125, 3), 'tva' => $tvaReduit, 'minStock' => $this->getRandFloat(3, 25, 3), ],
162
            ['name' => 'Bacon tranche Barq 88G', 'supplier' => $davifrais,
163
            'familyLog' => $frais, 'zoneStorage' => $zoneFrais,
164
            'unitStorage' => $piece, 'unitWorking' => $kilogramme, 'price' => $this->getRandFloat(0, 12, 3),
165
            'packaging' => $this->getRandFloat(5, 125, 3), 'tva' => $tvaReduit, 'minStock' => $this->getRandFloat(3, 25, 3), ],
166
            ['name' => 'Beurre doux 8Gx125', 'supplier' => $davifrais,
167
            'familyLog' => $frais, 'zoneStorage' => $zoneFrais,
168
            'unitStorage' => $kilogramme, 'unitWorking' => $piece, 'price' => $this->getRandFloat(0, 12, 3),
169
            'packaging' => $this->getRandFloat(5, 125, 3), 'tva' => $tvaReduit, 'minStock' => $this->getRandFloat(3, 25, 3), ],
170
            ['name' => 'Boule pour oeuf neige', 'supplier' => $davifrais,
171
            'familyLog' => $frais, 'zoneStorage' => $zoneFrais,
172
            'unitStorage' => $piece, 'unitWorking' => $piece, 'price' => $this->getRandFloat(0, 12, 3),
173
            'packaging' => $this->getRandFloat(5, 125, 3), 'tva' => $tvaReduit, 'minStock' => $this->getRandFloat(3, 25, 3), ],
174
            ['name' => 'Champignons émincé 500G', 'supplier' => $davifrais,
175
            'familyLog' => $fruitLegumesFrais, 'zoneStorage' => $zoneFrais,
176
            'unitStorage' => $kilogramme, 'unitWorking' => $kilogramme,
177
            'price' => $this->getRandFloat(0, 12, 3), 'packaging' => $this->getRandFloat(5, 125, 3), 'tva' => $tvaReduit,
178
            'minStock' => $this->getRandFloat(3, 25, 3), ],
179
            ['name' => 'Chorizo prétr. 500G', 'supplier' => $davifrais,
180
            'familyLog' => $fruitLegumesFrais, 'zoneStorage' => $zoneFrais,
181
            'unitStorage' => $kilogramme, 'unitWorking' => $kilogramme,
182
            'price' => $this->getRandFloat(0, 12, 3), 'packaging' => $this->getRandFloat(5, 125, 3), 'tva' => $tvaReduit, 'minStock' => $this->getRandFloat(3, 25, 3), ],
183
            ['name' => 'V.RG Bourgueil 75cl', 'supplier' => $loireBoissons,
184
            'familyLog' => $vins, 'zoneStorage' => $zoneBoisson,
185
            'unitStorage' => $bouteille, 'unitWorking' => $bouteille,
186
            'price' => 5.11, 'packaging' => $this->getRandFloat(5, 125, 3), 'tva' => $tvaReduit, 'minStock' => $this->getRandFloat(3, 25, 3), ],
187
        ];
188
189
        return $datas;
190
    }
191
}
192