276 lines
13 KiB
PHP
276 lines
13 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Database\ArcadiaReplicate\Factories\Metap\MetaUtilFactory;
|
|
use Database\ArcadiaReplicate\Factories\Refp\AdditifFactory;
|
|
use Database\ArcadiaReplicate\Factories\Refp\FamVenteFactory;
|
|
use Database\ArcadiaReplicate\Factories\Refp\IncoAllegationsFactory;
|
|
use Database\ArcadiaReplicate\Factories\Refp\IncoAllergeneFactory;
|
|
use Database\ArcadiaReplicate\Factories\Refp\IncoCompoFactory;
|
|
use Database\ArcadiaReplicate\Factories\Refp\IncoFactory;
|
|
use Database\ArcadiaReplicate\Factories\Refp\MarqueFactory;
|
|
use Database\ArcadiaReplicate\Factories\Refp\RuPersonneSirhFactory;
|
|
use Database\ArcadiaReplicate\Factories\Refp\ServiceConsoIncoFactory;
|
|
use Database\ArcadiaReplicate\Tables\Metap\MetaUtilTable;
|
|
use Database\ArcadiaReplicate\Tables\Refp\AdditifTable;
|
|
use Database\ArcadiaReplicate\Tables\Refp\FamVenteTable;
|
|
use Database\ArcadiaReplicate\Tables\Refp\IncoAllegationsTable;
|
|
use Database\ArcadiaReplicate\Tables\Refp\IncoAllergeneTable;
|
|
use Database\ArcadiaReplicate\Tables\Refp\IncoCompoTable;
|
|
use Database\ArcadiaReplicate\Tables\Refp\IncoTable;
|
|
use Database\ArcadiaReplicate\Tables\Refp\MarqueTable;
|
|
use Database\ArcadiaReplicate\Tables\Refp\RuPersonneSirhTable;
|
|
use Database\ArcadiaReplicate\Tables\Refp\ServiceConsoIncoTable;
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\Config;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
final class ArcadiaReplicateSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Seed the replicated Arcadia Oracle meta-model database.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
$connection = Config::string('database.arcadia_meta_model');
|
|
|
|
$this->seedMetaUtil($connection);
|
|
$this->seedSirh($connection);
|
|
$this->seedMarques($connection);
|
|
$this->seedFamVente($connection);
|
|
$this->seedAdditifs($connection);
|
|
$this->seedAllergenesAndAllegations($connection);
|
|
$this->seedServicesConso($connection);
|
|
$this->seedIncoAndCompo($connection);
|
|
}
|
|
|
|
private function seedMetaUtil(string $connection): void
|
|
{
|
|
$users = [
|
|
['COD_UTIL' => 'RA0706430', 'LIB_UTIL' => 'Responsable Qualité', 'EMAIL' => 'qualite@ldc.fr', 'GROUPE' => 65],
|
|
['COD_UTIL' => 'BM6501226', 'LIB_UTIL' => 'Chef de Produit Marketing', 'EMAIL' => 'marketing@ldc.fr', 'GROUPE' => 2],
|
|
['COD_UTIL' => 'SB6501847', 'LIB_UTIL' => 'Responsable Commercial', 'EMAIL' => 'commercial@ldc.fr', 'GROUPE' => 1],
|
|
['COD_UTIL' => 'ME0101979', 'LIB_UTIL' => 'Administrateur SI', 'EMAIL' => 'admin.si@ldc.fr', 'GROUPE' => 0],
|
|
['COD_UTIL' => 'SG6501248', 'LIB_UTIL' => 'Chargé R&D Nutrition', 'EMAIL' => 'rd.nutrition@ldc.fr', 'GROUPE' => 1],
|
|
];
|
|
|
|
foreach ($users as $user) {
|
|
if (! DB::connection($connection)->table(MetaUtilTable::name())->where('COD_UTIL', $user['COD_UTIL'])->exists()) {
|
|
MetaUtilFactory::new($connection)->create($user);
|
|
}
|
|
}
|
|
}
|
|
|
|
private function seedSirh(string $connection): void
|
|
{
|
|
$employees = [
|
|
['MATRICULE_FIC' => '4300710', 'SITE_FIC' => 'AVIGNO', 'ETAB_FIC' => 'ET29A', 'STATUT_FIC' => 'OUV', 'SERVICE_FIC' => '25'],
|
|
['5000920', 'SNVSER', 'ET11G', 'OUV', '13'],
|
|
['3900757', 'EPC', 'ET15', 'AMT', '16'],
|
|
['109873', 'LDCVOL', 'ET50', 'CAD', '25'],
|
|
['4911791', 'SNVVOL', 'ET11E', 'OUV', '11'],
|
|
];
|
|
|
|
foreach ($employees as $emp) {
|
|
$mat = is_array($emp) && isset($emp['MATRICULE_FIC']) ? $emp['MATRICULE_FIC'] : $emp[0];
|
|
if (! DB::connection($connection)->table(RuPersonneSirhTable::name())->where('MATRICULE_FIC', $mat)->exists()) {
|
|
if (isset($emp['MATRICULE_FIC'])) {
|
|
RuPersonneSirhFactory::new($connection)->create($emp);
|
|
} else {
|
|
RuPersonneSirhFactory::new($connection)->create([
|
|
'MATRICULE_FIC' => $emp[0],
|
|
'COD_PERSONNE' => $emp[0],
|
|
'SITE_FIC' => $emp[1],
|
|
'ETAB_FIC' => $emp[2],
|
|
'ETABLISSEMENT' => $emp[2],
|
|
'STATUT_FIC' => $emp[3],
|
|
'SERVICE_FIC' => $emp[4],
|
|
]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private function seedMarques(string $connection): void
|
|
{
|
|
$marques = [
|
|
['COD_MARQ' => 246, 'LIB_MARQ' => 'LE GAULOIS', 'COMMENTAIRE' => 'Marque Le Gaulois (Volailles & Panés)'],
|
|
['COD_MARQ' => 466, 'LIB_MARQ' => 'LOUE', 'COMMENTAIRE' => 'Fermiers de Loué Label Rouge'],
|
|
['COD_MARQ' => 565, 'LIB_MARQ' => 'MARIE', 'COMMENTAIRE' => 'Plats cuisinés & surgelés Marie'],
|
|
['COD_MARQ' => 71, 'LIB_MARQ' => 'ID HALAL', 'COMMENTAIRE' => 'Gamme certifiée Halal'],
|
|
['COD_MARQ' => 793, 'LIB_MARQ' => 'POPROSTU', 'COMMENTAIRE' => 'Marque MDD pour la Pologne'],
|
|
['COD_MARQ' => 631, 'LIB_MARQ' => 'LA MAISON DE MAURICE', 'COMMENTAIRE' => 'Marque distributeur Export'],
|
|
['COD_MARQ' => 179, 'LIB_MARQ' => 'BX FOOD', 'COMMENTAIRE' => 'Marque BX Food'],
|
|
['COD_MARQ' => 725, 'LIB_MARQ' => 'ALPEKER', 'COMMENTAIRE' => 'Marque Export Italie'],
|
|
['COD_MARQ' => 740, 'LIB_MARQ' => 'AQUILA', 'COMMENTAIRE' => 'Marque Export Hongrie'],
|
|
];
|
|
|
|
foreach ($marques as $marque) {
|
|
if (! DB::connection($connection)->table(MarqueTable::name())->where('COD_MARQ', $marque['COD_MARQ'])->exists()) {
|
|
MarqueFactory::new($connection)->create($marque);
|
|
}
|
|
}
|
|
}
|
|
|
|
private function seedFamVente(string $connection): void
|
|
{
|
|
$familles = [
|
|
['COD_FAMVTE' => 406, 'LIB_FAMVTE' => 'FOURNITURES EXPEDITION'],
|
|
['COD_FAMVTE' => 31, 'LIB_FAMVTE' => 'PRODUITS CUITS (TVA 20%)'],
|
|
['COD_FAMVTE' => 94, 'LIB_FAMVTE' => 'DCPE POULET NOIR'],
|
|
['COD_FAMVTE' => 306, 'LIB_FAMVTE' => 'OIE LOUE'],
|
|
['COD_FAMVTE' => 319, 'LIB_FAMVTE' => 'DCPE CANARD GRAS ELABORE'],
|
|
];
|
|
|
|
foreach ($familles as $fam) {
|
|
if (! DB::connection($connection)->table(FamVenteTable::name())->where('COD_FAMVTE', $fam['COD_FAMVTE'])->exists()) {
|
|
FamVenteFactory::new($connection)->create($fam);
|
|
}
|
|
}
|
|
}
|
|
|
|
private function seedAdditifs(string $connection): void
|
|
{
|
|
$additifs = [
|
|
['COD_EUROPEEN' => 'E250', 'MOLECULE' => 'Nitrite de sodium', 'FONCTION' => 'Conservateur', 'RISQUE' => 2],
|
|
['COD_EUROPEEN' => 'E316', 'MOLECULE' => 'Érythorbate de sodium', 'FONCTION' => 'Antioxydant', 'RISQUE' => 1],
|
|
['COD_EUROPEEN' => 'E392', 'MOLECULE' => 'Extrait de romarin', 'FONCTION' => 'Antioxydant', 'RISQUE' => 0],
|
|
['COD_EUROPEEN' => 'E469', 'MOLECULE' => 'Carboxyméthylcellulose enzymatique', 'FONCTION' => 'Épaississant', 'RISQUE' => 1],
|
|
['COD_EUROPEEN' => 'E470a', 'MOLECULE' => 'Sels d\'acides gras', 'FONCTION' => 'Émulsifiant', 'RISQUE' => 1],
|
|
['COD_EUROPEEN' => 'E471', 'MOLECULE' => 'Mono et diglycérides d\'acides gras', 'FONCTION' => 'Émulsifiant', 'RISQUE' => 1],
|
|
['COD_EUROPEEN' => 'E472a', 'MOLECULE' => 'Esters acétiques de mono/diglycérides', 'FONCTION' => 'Émulsifiant', 'RISQUE' => 1],
|
|
['COD_EUROPEEN' => 'E472b', 'MOLECULE' => 'Esters lactiques de mono/diglycérides', 'FONCTION' => 'Émulsifiant', 'RISQUE' => 1],
|
|
];
|
|
|
|
foreach ($additifs as $additif) {
|
|
if (! DB::connection($connection)->table(AdditifTable::name())->where('COD_EUROPEEN', $additif['COD_EUROPEEN'])->exists()) {
|
|
AdditifFactory::new($connection)->create($additif);
|
|
}
|
|
}
|
|
}
|
|
|
|
private function seedAllergenesAndAllegations(string $connection): void
|
|
{
|
|
$allergenes = [
|
|
['ID' => 1, 'LIB' => 'Gluten'],
|
|
['ID' => 2, 'LIB' => 'Crustacés'],
|
|
['ID' => 3, 'LIB' => 'Œufs'],
|
|
['ID' => 4, 'LIB' => 'Poissons'],
|
|
['ID' => 5, 'LIB' => 'Arachides'],
|
|
['ID' => 6, 'LIB' => 'Soja'],
|
|
['ID' => 7, 'LIB' => 'Lait'],
|
|
['ID' => 8, 'LIB' => 'Fruits à coque'],
|
|
['ID' => 9, 'LIB' => 'Céleri'],
|
|
['ID' => 10, 'LIB' => 'Moutarde'],
|
|
['ID' => 11, 'LIB' => 'Graines de sésame'],
|
|
];
|
|
|
|
foreach ($allergenes as $allergene) {
|
|
if (! DB::connection($connection)->table(IncoAllergeneTable::name())->where('ID', $allergene['ID'])->exists()) {
|
|
IncoAllergeneFactory::new($connection)->create($allergene);
|
|
}
|
|
}
|
|
|
|
$allegations = [
|
|
['CODE' => 1, 'LIBELLE' => 'Sans conservateur'],
|
|
['CODE' => 2, 'LIBELLE' => 'Sans huile de palme'],
|
|
['CODE' => 3, 'LIBELLE' => 'Volaille 100% française'],
|
|
['CODE' => 4, 'LIBELLE' => 'Élevé en liberté 84 jours'],
|
|
['CODE' => 5, 'LIBELLE' => 'Sans arôme artificiel'],
|
|
];
|
|
|
|
foreach ($allegations as $allegation) {
|
|
if (! DB::connection($connection)->table(IncoAllegationsTable::name())->where('CODE', $allegation['CODE'])->exists()) {
|
|
IncoAllegationsFactory::new($connection)->create($allegation);
|
|
}
|
|
}
|
|
}
|
|
|
|
private function seedServicesConso(string $connection): void
|
|
{
|
|
$services = [
|
|
[
|
|
'ID' => 24,
|
|
'NOM' => 'Service clients - Groupe Auchan',
|
|
'ADRESSE1' => 'BP 682',
|
|
'CP' => '59650',
|
|
'VILLE' => 'Villeneuve d\'Ascq',
|
|
'TELEPHONE' => '03.59.30.59.30',
|
|
'MAIL' => 'service.conso@auchan.fr',
|
|
'MARQUE' => 210,
|
|
'LIB' => 'Service conso Pouce Auchan',
|
|
'SITE_INT' => 'www.auchan.fr',
|
|
],
|
|
[
|
|
'ID' => 28,
|
|
'NOM' => 'Service consommateurs Carrefour',
|
|
'ADRESSE1' => 'CMI - TSA 91431',
|
|
'CP' => '91300',
|
|
'VILLE' => 'Massy',
|
|
'TELEPHONE' => '06.69.39.70.00',
|
|
'MAIL' => 'service.conso@carrefour.fr',
|
|
'MARQUE' => 448,
|
|
'LIB' => 'Service conso Carrefour',
|
|
'SITE_INT' => 'www.carrefour.fr',
|
|
],
|
|
[
|
|
'ID' => 30,
|
|
'NOM' => 'Service clients Intermarché',
|
|
'ADRESSE1' => '24 rue Auguste Chabrières',
|
|
'CP' => '75000',
|
|
'VILLE' => 'Paris',
|
|
'TELEPHONE' => '08.00.00.81.80',
|
|
'MAIL' => 'service.conso@intermarche.com',
|
|
'MARQUE' => 419,
|
|
'LIB' => 'Service conso Intermarché',
|
|
'SITE_INT' => 'www.intermarche.com',
|
|
],
|
|
[
|
|
'ID' => 54,
|
|
'NOM' => 'Service Consommateurs LDC',
|
|
'ADRESSE1' => 'ZI Saint Laurent - BP 88',
|
|
'CP' => '72302',
|
|
'VILLE' => 'Sablé-sur-Sarthe',
|
|
'TELEPHONE' => '02.43.62.70.00',
|
|
'MAIL' => 'service.conso@ldc.fr',
|
|
'MARQUE' => 246,
|
|
'LIB' => 'Service conso Groupe LDC',
|
|
'SITE_INT' => 'www.ldc.fr',
|
|
],
|
|
];
|
|
|
|
foreach ($services as $service) {
|
|
if (! DB::connection($connection)->table(ServiceConsoIncoTable::name())->where('ID', $service['ID'])->exists()) {
|
|
ServiceConsoIncoFactory::new($connection)->create($service);
|
|
}
|
|
}
|
|
}
|
|
|
|
private function seedIncoAndCompo(string $connection): void
|
|
{
|
|
// 1. Compositions nutritionnelles
|
|
if (! DB::connection($connection)->table(IncoCompoTable::name())->where('ID', 96504)->exists()) {
|
|
IncoCompoFactory::new($connection)->steaksDinde()->create();
|
|
}
|
|
|
|
if (! DB::connection($connection)->table(IncoCompoTable::name())->where('ID', 124503)->exists()) {
|
|
IncoCompoFactory::new($connection)->pouletFermierNoir()->create();
|
|
}
|
|
|
|
// 2. Fiches INCO liées
|
|
if (! DB::connection($connection)->table(IncoTable::name())->where('NO_ART', 47789)->exists()) {
|
|
IncoFactory::new($connection)->nuggetsPoulet()->withCompo(96504)->create();
|
|
}
|
|
|
|
if (! DB::connection($connection)->table(IncoTable::name())->where('NO_ART', 47996)->exists()) {
|
|
IncoFactory::new($connection)->gesiersEtFoies()->withCompo(124503)->create();
|
|
}
|
|
|
|
if (! DB::connection($connection)->table(IncoTable::name())->where('NO_ART', 4)->exists()) {
|
|
IncoFactory::new($connection)->pouletFermierLoue()->create();
|
|
}
|
|
}
|
|
}
|