From 254a14a3f8f4b9eb461095de48b2ff0a826e9666 Mon Sep 17 00:00:00 2001 From: Alexis Gousseau Date: Thu, 23 Feb 2023 16:23:00 +0100 Subject: [PATCH] generate factories from models --- app/Casts/JsonCast.php | 30 --- app/Enums/KeywordCategoryEnum.php | 12 +- .../Process/ProcessPrimaryPackingEnum.php | 2 +- app/Enums/Process/ProcessTypeEnum.php | 48 ++++ app/Enums/Products/ProductSourceEnum.php | 1 - app/Enums/Promotions/PromotionLabelEnum.php | 38 --- app/Enums/Promotions/PromotionTypeEnum.php | 4 +- app/Models/Brand.php | 29 ++- app/Models/Ingredient.php | 10 +- app/Models/Keywordable.php | 5 +- app/Models/Packaging.php | 7 +- app/Models/Process.php | 9 +- app/Models/ProcessHasProcessType.php | 52 ++++ app/Models/ProcessType.php | 8 +- app/Models/Product.php | 17 +- app/Models/ProductComment.php | 3 + app/Models/Promo.php | 12 + app/Models/PromoDistributionNetwork.php | 3 + app/Models/PromoType.php | 7 +- app/Models/Survey.php | 7 +- app/Models/User.php | 4 +- composer.json | 3 +- composer.lock | 64 ++++- database/factories/BrandFactory.php | 32 +++ database/factories/IngredientFactory.php | 47 ++++ database/factories/KeywordableFactory.php | 33 +++ database/factories/PackagingFactory.php | 52 ++++ database/factories/ProcessFactory.php | 49 ++++ .../ProcessHasProcessTypeFactory.php | 34 +++ database/factories/ProductCommentFactory.php | 37 +++ database/factories/ProductFactory.php | 64 +++++ .../PromoDistributionNetworkFactory.php | 33 +++ database/factories/PromoFactory.php | 55 +++++ database/factories/SurveyFactory.php | 41 +++ database/factories/UserFactory.php | 40 ++- .../2023_02_23_120913_create_brands_table.php | 1 + ..._02_23_120913_create_ingredients_table.php | 2 +- ...023_02_23_120913_create_keywords_table.php | 2 +- ...3_02_23_120913_create_packagings_table.php | 2 +- ...create_process_has_process_types_table.php | 3 +- ...2_23_120913_create_process_types_table.php | 1 + ...23_02_23_120913_create_processes_table.php | 4 +- ...02_23_120913_create_promo_brands_table.php | 32 +++ ..._02_23_120913_create_promo_types_table.php | 2 +- ...add_foreign_keys_to_promo_brands_table.php | 34 +++ database/seeders/BrandSeeder.php | 19 ++ database/seeders/DatabaseSeeder.php | 27 +- database/seeders/IngredientSeeder.php | 19 ++ database/seeders/KeywordSeeder.php | 233 ++++++++++++++++++ database/seeders/PackagingSeeder.php | 19 ++ database/seeders/ProcessHasProcessTypes.php | 33 +++ database/seeders/ProcessSeeder.php | 19 ++ database/seeders/ProcessTypeSeeder.php | 24 ++ database/seeders/ProductCommentSeeder.php | 19 ++ database/seeders/ProductSeeder.php | 19 ++ .../PromoDistributionNetworkSeeder.php | 19 ++ database/seeders/PromoSeeder.php | 32 +++ database/seeders/PromoTypeSeeder.php | 143 +++++++++++ database/seeders/SurveySeeder.php | 28 +++ database/seeders/UserSeeder.php | 19 ++ 60 files changed, 1507 insertions(+), 140 deletions(-) delete mode 100644 app/Casts/JsonCast.php create mode 100644 app/Enums/Process/ProcessTypeEnum.php delete mode 100644 app/Enums/Promotions/PromotionLabelEnum.php create mode 100644 app/Models/ProcessHasProcessType.php create mode 100644 database/factories/BrandFactory.php create mode 100644 database/factories/IngredientFactory.php create mode 100644 database/factories/KeywordableFactory.php create mode 100644 database/factories/PackagingFactory.php create mode 100644 database/factories/ProcessFactory.php create mode 100644 database/factories/ProcessHasProcessTypeFactory.php create mode 100644 database/factories/ProductCommentFactory.php create mode 100644 database/factories/ProductFactory.php create mode 100644 database/factories/PromoDistributionNetworkFactory.php create mode 100644 database/factories/PromoFactory.php create mode 100644 database/factories/SurveyFactory.php create mode 100644 database/migrations/2023_02_23_120913_create_promo_brands_table.php create mode 100644 database/migrations/2023_02_23_120914_add_foreign_keys_to_promo_brands_table.php create mode 100644 database/seeders/BrandSeeder.php create mode 100644 database/seeders/IngredientSeeder.php create mode 100644 database/seeders/KeywordSeeder.php create mode 100644 database/seeders/PackagingSeeder.php create mode 100644 database/seeders/ProcessHasProcessTypes.php create mode 100644 database/seeders/ProcessSeeder.php create mode 100644 database/seeders/ProcessTypeSeeder.php create mode 100644 database/seeders/ProductCommentSeeder.php create mode 100644 database/seeders/ProductSeeder.php create mode 100644 database/seeders/PromoDistributionNetworkSeeder.php create mode 100644 database/seeders/PromoSeeder.php create mode 100644 database/seeders/PromoTypeSeeder.php create mode 100644 database/seeders/SurveySeeder.php create mode 100644 database/seeders/UserSeeder.php diff --git a/app/Casts/JsonCast.php b/app/Casts/JsonCast.php deleted file mode 100644 index 599b4cc..0000000 --- a/app/Casts/JsonCast.php +++ /dev/null @@ -1,30 +0,0 @@ - $attributes - * @return array - */ - public function get(Model $model, string $key, mixed $value, array $attributes): array - { - return json_decode($value, true); - } - - /** - * Prepare the given value for storage. - * - * @param array $attributes - */ - public function set(Model $model, string $key, mixed $value, array $attributes): string - { - return json_encode($value); - } -} diff --git a/app/Enums/KeywordCategoryEnum.php b/app/Enums/KeywordCategoryEnum.php index 29e8cc4..5a7ab9e 100644 --- a/app/Enums/KeywordCategoryEnum.php +++ b/app/Enums/KeywordCategoryEnum.php @@ -1,11 +1,12 @@ __('IngredientPleasure'), self::ingredientPracticality => __('IngredientPracticality'), self::ingredientHealth => __('IngredientHealth'), + self::ingredienEthics => __('IngredientEthics'), self::productPleasure => __('ProductPleasure'), self::productShape => __('ProductShape'), self::productPracticality => __('ProductPracticality'), self::productHealth => __('ProductHealth'), - self::productEthics => __('productEthics'), - self::packagingPleasure => __('packagingPleasure'), - self::packagingPracticality => __('packagingPracticality'), - self::packagingEthics => __('packagingEthics'), + self::productEthics => __('ProductEthics'), + self::packagingPleasure => __('PackagingPleasure'), + self::packagingPracticality => __('PackagingPracticality'), + self::packagingEthics => __('PackagingEthics'), self::packagingDesign => __('PackagingDesign'), }; } diff --git a/app/Enums/Process/ProcessPrimaryPackingEnum.php b/app/Enums/Process/ProcessPrimaryPackingEnum.php index ccefb94..7aea055 100644 --- a/app/Enums/Process/ProcessPrimaryPackingEnum.php +++ b/app/Enums/Process/ProcessPrimaryPackingEnum.php @@ -16,7 +16,7 @@ enum ProcessPrimaryPackingEnum : int { public static function getLabel(self $value): string { return match ($value) { - self::sealing => __('Sealing'), + self::sealing => __('Operculage'), self::thermoforming => __('Thermoformage'), self::verticalBagging => __('Ensachage Vertical'), self::horizontalBagging => __('Ensachage Horizontal'), diff --git a/app/Enums/Process/ProcessTypeEnum.php b/app/Enums/Process/ProcessTypeEnum.php new file mode 100644 index 0000000..762cb18 --- /dev/null +++ b/app/Enums/Process/ProcessTypeEnum.php @@ -0,0 +1,48 @@ + __('Abbattage/Découpe'), + self::beef => __('Préparation de viande'), + self::slicing => __('Tranchage/Émincage'), + self::cook => __('Cuisson'), + self::freezing => __('Refroidissement/Surgélation'), + self::forming => __('Formage/Embossage/Portionnage'), + self::mainPackaging => __('Conditionnement primaire'), + self::secondPackaging => __('Conditionnement secondaire'), + self::calibring => __('Pesage/Calibrage'), + self::inspection => __('Contrôles/Inspection'), + self::identification => __('Identification (Marqueurs/Jets d\'encres)'), + self::labeling => __('Étiquetage'), + self::conveyance => __('Convoyage/Transitique'), + self::logistics => __('Logistiques'), + self::robotization => __('Robotisation'), + self::others => __('Autres') + }; + } + +} diff --git a/app/Enums/Products/ProductSourceEnum.php b/app/Enums/Products/ProductSourceEnum.php index a68e00c..03e6b44 100644 --- a/app/Enums/Products/ProductSourceEnum.php +++ b/app/Enums/Products/ProductSourceEnum.php @@ -26,5 +26,4 @@ enum ProductSourceEnum : int { self::catalogArgumentary => __('Catalogue Argumentaire'), }; } - } diff --git a/app/Enums/Promotions/PromotionLabelEnum.php b/app/Enums/Promotions/PromotionLabelEnum.php deleted file mode 100644 index 74f601f..0000000 --- a/app/Enums/Promotions/PromotionLabelEnum.php +++ /dev/null @@ -1,38 +0,0 @@ - __('Animation'), - self::reduction => __('Réduction'), - self::fidelity => __('Fidélité'), - self::consoGames => __('Jeux Conso'), - self::promotionalFormats => __('Formats promo'), - self::flyer => __('OP Trade / Prospectus'), - self::coBranding => __('Co-branding'), - self::perchandising => __('PLV / Merchandising'), - self::goodies => __('Primes / Goodies'), - self::promotionalMaterials => __('Argumentaires Promo'), - self::ephemeralProducts => __('Produits éphèmères'), - }; - } - -} diff --git a/app/Enums/Promotions/PromotionTypeEnum.php b/app/Enums/Promotions/PromotionTypeEnum.php index 3b75a7a..0418e7e 100644 --- a/app/Enums/Promotions/PromotionTypeEnum.php +++ b/app/Enums/Promotions/PromotionTypeEnum.php @@ -10,7 +10,7 @@ enum PromotionTypeEnum : int { case promotionalFormats = 5; case flyer = 6; case coBranding = 7; - case perchandising = 8; + case merchandising = 8; case goodies = 9; case promotionalMaterials = 10; case ephemeralProducts = 11; @@ -28,7 +28,7 @@ enum PromotionTypeEnum : int { self::promotionalFormats => __('Formats promo'), self::flyer => __('OP Trade / Prospectus'), self::coBranding => __('Co-branding'), - self::perchandising => __('PLV / Merchandising'), + self::merchandising => __('PLV / Merchandising'), self::goodies => __('Primes / Goodies'), self::promotionalMaterials => __('Argumentaires Promo'), self::ephemeralProducts => __('Produits éphèmères'), diff --git a/app/Models/Brand.php b/app/Models/Brand.php index 72681c8..5abc75d 100644 --- a/app/Models/Brand.php +++ b/app/Models/Brand.php @@ -2,29 +2,54 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** * @property integer $id * @property string $brand * @property string $filter + * @property string $created_at + * @property string $updated_at * @property Promo[] $promos + * @property Promo[] $promo + * @property Product[] $products */ class Brand extends Model { + use HasFactory; + /** * @var array */ protected $fillable = [ 'brand', - 'filter' + 'filter', + 'created_at', + 'updated_at' ]; + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function promos() + { + return $this->belongsToMany('App\Models\Promo', 'promo_brands'); + } + /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ - public function promos() + public function promo() { return $this->hasMany('App\Models\Promo'); } + + /** + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function products() + { + return $this->hasMany('App\Models\Product'); + } } diff --git a/app/Models/Ingredient.php b/app/Models/Ingredient.php index 70145d7..7510dda 100644 --- a/app/Models/Ingredient.php +++ b/app/Models/Ingredient.php @@ -2,9 +2,9 @@ namespace App\Models; -use App\Casts\JsonCast; use App\Enums\Ingredients\IngredientOriginEnum; use App\Enums\Ingredients\IngredientFamilyEnum; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** @@ -29,6 +29,8 @@ use Illuminate\Database\Eloquent\Model; */ class Ingredient extends Model { + use HasFactory; + /** * @var array */ @@ -60,9 +62,9 @@ class Ingredient extends Model 'origin' => IngredientOriginEnum::class, 'is_sample' => 'boolean', 'family' => IngredientFamilyEnum::class, - 'packing' => JsonCast::class, - 'function' => JsonCast::class, - 'documents' => JsonCast::class, + 'packing' => 'json', + 'function' => 'json', + 'documents' => 'json', 'created_at' => 'datetime:Y-m-d', 'updated_at' => 'datetime:Y-m-d', 'deleted_at' => 'datetime:Y-m-d', diff --git a/app/Models/Keywordable.php b/app/Models/Keywordable.php index 2ac6202..a2bdb63 100644 --- a/app/Models/Keywordable.php +++ b/app/Models/Keywordable.php @@ -2,19 +2,22 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** * @property integer $id * @property integer $keyword_id - * @property string $model * @property integer $keywordable_id + * @property string $model * @property string $created_at * @property string $updated_at * @property Keyword $keyword */ class Keywordable extends Model { + use HasFactory; + /** * @var array */ diff --git a/app/Models/Packaging.php b/app/Models/Packaging.php index cb8b5eb..e11664f 100644 --- a/app/Models/Packaging.php +++ b/app/Models/Packaging.php @@ -7,6 +7,7 @@ use App\Enums\Packaging\PackagingWatchTypeEnum; use App\Enums\Packaging\PackagingTypeEnum; use App\Enums\Packaging\PackagingMaterialEnum; use App\Enums\Packaging\PackagingBenefitEnum; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** @@ -33,6 +34,8 @@ use Illuminate\Database\Eloquent\Model; */ class Packaging extends Model { + use HasFactory; + /** * @var array */ @@ -69,8 +72,8 @@ class Packaging extends Model 'type_packaging' => PackagingTypeEnum::class, 'material' => PackagingMaterialEnum::class, 'benefit' => PackagingBenefitEnum::class, - 'picture' => JsonCast::class, - 'documents' => JsonCast::class, + 'picture' => 'json', + 'documents' => 'json', ]; /** diff --git a/app/Models/Process.php b/app/Models/Process.php index f3cb3c8..51c7f9d 100644 --- a/app/Models/Process.php +++ b/app/Models/Process.php @@ -5,6 +5,7 @@ namespace App\Models; use App\Enums\Process\ProcessWatchTypeEnum; use App\Enums\Process\ProcessOriginEnum; use App\Enums\Process\ProcessBenefitEnum; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** @@ -31,6 +32,8 @@ use Illuminate\Database\Eloquent\Model; */ class Process extends Model { + use HasFactory; + /** * @var array */ @@ -65,8 +68,8 @@ class Process extends Model 'is_test_machine' => 'boolean', 'is_quotation' => 'boolean', 'profit' => ProcessBenefitEnum::class, - 'picture' => JsonCast::class, - 'documents' => JsonCast::class, + 'picture' => 'json', + 'documents' => 'json', 'created_at' => 'datetime:Y-m-d', 'updated_at' => 'datetime:Y-m-d', 'deleted_at' => 'datetime:Y-m-d', @@ -77,7 +80,7 @@ class Process extends Model */ public function processHasProcessTypes() { - return $this->hasMany('App\Models\ProcessHasProcessType'); + return $this->hasMany('App\Models\ProcessHasProcessType', 'process_id'); } /** diff --git a/app/Models/ProcessHasProcessType.php b/app/Models/ProcessHasProcessType.php new file mode 100644 index 0000000..d063645 --- /dev/null +++ b/app/Models/ProcessHasProcessType.php @@ -0,0 +1,52 @@ + 'json' + ]; + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function processType() + { + return $this->belongsTo('App\Models\ProcessType'); + } + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function process() + { + return $this->belongsTo('App\Models\Process'); + } +} diff --git a/app/Models/ProcessType.php b/app/Models/ProcessType.php index b0bf1fc..f272018 100644 --- a/app/Models/ProcessType.php +++ b/app/Models/ProcessType.php @@ -7,6 +7,8 @@ use Illuminate\Database\Eloquent\Model; /** * @property integer $id * @property string $name + * @property string $created_at + * @property string $updated_at * @property ProcessHasProcessType[] $processHasProcessTypes */ class ProcessType extends Model @@ -15,7 +17,9 @@ class ProcessType extends Model * @var array */ protected $fillable = [ - 'name' + 'name', + 'created_at', + 'updated_at' ]; /** @@ -23,6 +27,6 @@ class ProcessType extends Model */ public function processHasProcessTypes() { - return $this->hasMany('App\Models\ProcessHasProcessType'); + return $this->hasMany('App\Models\ProcessHasProcessType', 'process_type_id'); } } diff --git a/app/Models/Product.php b/app/Models/Product.php index faad1ec..bc9ed61 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -9,6 +9,7 @@ use App\Enums\Products\ProductRayEnum; use App\Enums\Products\ProductRangeEnum; use App\Enums\Products\ProductGeoAreaEnum; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Factories\HasFactory; /** * @property integer $id @@ -46,6 +47,8 @@ use Illuminate\Database\Eloquent\Model; */ class Product extends Model { + use HasFactory; + /** * @var array */ @@ -88,10 +91,10 @@ class Product extends Model */ protected $casts = [ 'source' => ProductSourceEnum::class, - 'docs' => JsonCast::class, + 'docs' => 'json', 'certification' => ProductCertificationEnum::class, - 'origins' => JsonCast::class, - 'claims' => JsonCast::class, + 'origins' => 'json', + 'claims' => 'json', 'distribution_network' => ProductDistributionNetworkEnum::class, 'ray' => ProductRayEnum::class, 'product_range' => ProductRangeEnum::class, @@ -118,4 +121,12 @@ class Product extends Model { return $this->belongsTo('App\Models\User'); } + + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsTo + */ + public function brand() + { + return $this->belongsTo('App\Models\Brand'); + } } diff --git a/app/Models/ProductComment.php b/app/Models/ProductComment.php index e416aec..53a482c 100644 --- a/app/Models/ProductComment.php +++ b/app/Models/ProductComment.php @@ -2,6 +2,7 @@ namespace App\Models; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** @@ -18,6 +19,8 @@ use Illuminate\Database\Eloquent\Model; */ class ProductComment extends Model { + use HasFactory; + /** * @var array */ diff --git a/app/Models/Promo.php b/app/Models/Promo.php index dedd457..927a25c 100644 --- a/app/Models/Promo.php +++ b/app/Models/Promo.php @@ -6,6 +6,7 @@ use App\Enums\Promotions\PromotionSourceEnum; use App\Enums\Promotions\PromotionTargetEnum; use App\Enums\Promotions\PromotionAngleEnum; use App\Enums\Promotions\PromotionEventEnum; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** @@ -33,9 +34,12 @@ use Illuminate\Database\Eloquent\Model; * @property PromoType $promoType * @property PromoDistributionNetwork $promoDistributionNetwork * @property User $user + * @property Brand $brand */ class Promo extends Model { + use HasFactory; + /** * @var array */ @@ -77,6 +81,14 @@ class Promo extends Model 'deleted_at' => 'datetime:Y-m-d', ]; + /** + * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany + */ + public function brands() + { + return $this->belongsToMany('App\Models\Brand', 'promo_brands'); + } + /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ diff --git a/app/Models/PromoDistributionNetwork.php b/app/Models/PromoDistributionNetwork.php index d0fbadf..3c54c1f 100644 --- a/app/Models/PromoDistributionNetwork.php +++ b/app/Models/PromoDistributionNetwork.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Enums\Promotions\PromotionDistributionNetworkEnum; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** @@ -15,6 +16,8 @@ use Illuminate\Database\Eloquent\Model; */ class PromoDistributionNetwork extends Model { + use HasFactory; + /** * @var array */ diff --git a/app/Models/PromoType.php b/app/Models/PromoType.php index f6ceafc..9098c6c 100644 --- a/app/Models/PromoType.php +++ b/app/Models/PromoType.php @@ -3,6 +3,7 @@ namespace App\Models; use App\Enums\Promotions\PromotionTypeEnum; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** @@ -15,6 +16,8 @@ use Illuminate\Database\Eloquent\Model; */ class PromoType extends Model { + use HasFactory; + /** * Indicates if the IDs are auto-incrementing. * @@ -26,7 +29,7 @@ class PromoType extends Model * @var array */ protected $fillable = [ - 'name', + 'value', 'label', 'created_at', 'updated_at' @@ -38,7 +41,7 @@ class PromoType extends Model * @var array */ protected $casts = [ - 'name' => PromotionTypeEnum::class + 'value' => PromotionTypeEnum::class ]; /** diff --git a/app/Models/Survey.php b/app/Models/Survey.php index d45aa68..430f88d 100644 --- a/app/Models/Survey.php +++ b/app/Models/Survey.php @@ -2,6 +2,8 @@ namespace App\Models; +use App\Enums\Surveys\SurveyCustomerEnum; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; /** @@ -22,6 +24,8 @@ use Illuminate\Database\Eloquent\Model; */ class Survey extends Model { + use HasFactory; + /** * @var array */ @@ -47,9 +51,10 @@ class Survey extends Model */ protected $casts = [ 'date' => 'datetime:Y-m-d', - 'documents' => JsonCast::class, + 'documents' => 'json', 'is_distributor' => 'boolean', 'is_customer' => 'boolean', + 'type' => SurveyCustomerEnum::class, 'created_at' => 'datetime:Y-m-d', 'updated_at' => 'datetime:Y-m-d', 'deleted_at' => 'datetime:Y-m-d', diff --git a/app/Models/User.php b/app/Models/User.php index feee286..3a25eca 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -2,14 +2,14 @@ namespace App\Models; -// use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; class User extends Authenticatable { - use HasFactory, Notifiable; + use HasFactory; + use Notifiable; /** * The attributes that are mass assignable. diff --git a/composer.json b/composer.json index 9992cfb..9ff5df4 100644 --- a/composer.json +++ b/composer.json @@ -16,13 +16,14 @@ "require-dev": { "fakerphp/faker": "^1.9.1", "kitloong/laravel-migrations-generator": "^6.8", + "krlove/eloquent-model-generator": "dev-l10-compatibility", "laravel/pint": "^1.0", "laravel/sail": "^1.18", "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^7.0", "phpunit/phpunit": "^10.0", "spatie/laravel-ignition": "^2.0", - "krlove/eloquent-model-generator": "dev-l10-compatibility" + "thedoctor0/laravel-factory-generator": "^1.2" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 3f7756a..eb0ce2a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6b1066153741c0a141964ac76eff452f", + "content-hash": "6795aca887705adf5c7324775eff9a2c", "packages": [ { "name": "brick/math", @@ -8298,6 +8298,68 @@ ], "time": "2023-01-10T18:53:53+00:00" }, + { + "name": "thedoctor0/laravel-factory-generator", + "version": "1.2.5", + "source": { + "type": "git", + "url": "https://github.com/TheDoctor0/laravel-factory-generator.git", + "reference": "cf911ee7dcaf4b6b99dfeb5f77fc0af9501de8e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/TheDoctor0/laravel-factory-generator/zipball/cf911ee7dcaf4b6b99dfeb5f77fc0af9501de8e1", + "reference": "cf911ee7dcaf4b6b99dfeb5f77fc0af9501de8e1", + "shasum": "" + }, + "require": { + "doctrine/dbal": "^2.9|^2.10|^3.0", + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/filesystem": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", + "php": ">=7.4" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "TheDoctor0\\LaravelFactoryGenerator\\FactoryGeneratorServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "TheDoctor0\\LaravelFactoryGenerator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Automatically generate Laravel factories for your models.", + "keywords": [ + "factories", + "factory", + "generator", + "laravel", + "tests" + ], + "support": { + "issues": "https://github.com/TheDoctor0/laravel-factory-generator/issues", + "source": "https://github.com/TheDoctor0/laravel-factory-generator/tree/1.2.5" + }, + "funding": [ + { + "url": "https://www.paypal.me/thedoctor0", + "type": "custom" + }, + { + "url": "https://github.com/thedoctor0", + "type": "github" + } + ], + "time": "2023-02-22T11:34:34+00:00" + }, { "name": "theseer/tokenizer", "version": "1.2.1", diff --git a/database/factories/BrandFactory.php b/database/factories/BrandFactory.php new file mode 100644 index 0000000..fadb152 --- /dev/null +++ b/database/factories/BrandFactory.php @@ -0,0 +1,32 @@ + + */ +final class BrandFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Brand::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'brand' => fake()->word, + 'filter' => fake()->word, + ]; + } +} diff --git a/database/factories/IngredientFactory.php b/database/factories/IngredientFactory.php new file mode 100644 index 0000000..c5bb43f --- /dev/null +++ b/database/factories/IngredientFactory.php @@ -0,0 +1,47 @@ + + */ +final class IngredientFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Ingredient::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'user_id' => fake()->randomElement(User::pluck('id')), + 'name' => fake()->word, + 'supplier' => fake()->word, + 'origin' => \collect(IngredientOriginEnum::cases())->random(), + 'is_sample' => fake()->boolean, + 'family' => \collect(IngredientFamilyEnum::cases())->random(), + 'packing' => fake()->word, + 'function' => fake()->word, + 'observation' => fake()->word, + 'picture' => fake()->word, + 'url' => fake()->url, + 'documents' => [fake()->word], + 'fair' => fake()->word, + 'deleted_at' => fake()->dateTime(), + ]; + } +} diff --git a/database/factories/KeywordableFactory.php b/database/factories/KeywordableFactory.php new file mode 100644 index 0000000..8a8aa7b --- /dev/null +++ b/database/factories/KeywordableFactory.php @@ -0,0 +1,33 @@ + + */ +final class KeywordableFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Keywordable::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'keyword_id' => fake()->randomElement(Keyword::pluck('id')), + 'keywordable_id' => fake()->randomNumber() + ]; + } +} diff --git a/database/factories/PackagingFactory.php b/database/factories/PackagingFactory.php new file mode 100644 index 0000000..d5dcea1 --- /dev/null +++ b/database/factories/PackagingFactory.php @@ -0,0 +1,52 @@ + + */ +final class PackagingFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Packaging::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'user_id' => fake()->randomElement(User::pluck('id')), + 'watch_type' => \collect(PackagingWatchTypeEnum::cases())->random(), + 'supplier' => fake()->word, + 'name' => fake()->name, + 'product_description' => fake()->word, + 'origin' => \collect(PackagingOriginEnum::cases())->random(), + 'is_sample' => fake()->boolean, + 'type_packaging' => \collect(PackagingTypeEnum::cases())->random(), + 'material' => \collect(PackagingMaterialEnum::cases())->random(), + 'benefit' => \collect(PackagingBenefitEnum::cases())->random(), + 'observation' => fake()->word, + 'picture' => [fake()->word], + 'url' => fake()->url, + 'documents' => [fake()->word], + 'fair' => fake()->word, + 'deleted_at' => fake()->dateTime(), + ]; + } +} diff --git a/database/factories/ProcessFactory.php b/database/factories/ProcessFactory.php new file mode 100644 index 0000000..1a87941 --- /dev/null +++ b/database/factories/ProcessFactory.php @@ -0,0 +1,49 @@ + + */ +final class ProcessFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Process::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'user_id' => fake()->randomElement(User::pluck('id')), + 'watch_type' => \collect(ProcessWatchTypeEnum::cases())->random(), + 'supplier' => fake()->word, + 'name' => fake()->name, + 'description' => fake()->text, + 'origin' => \collect(ProcessOriginEnum::cases())->random(), + 'is_test_machine' => fake()->boolean, + 'is_quotation' => fake()->boolean, + 'quotation_document' => fake()->word, + 'profit' => \collect(ProcessBenefitEnum::cases())->random(), + 'observation' => fake()->word, + 'picture' => [fake()->word], + 'documents' => [fake()->word], + 'url' => fake()->url, + 'deleted_at' => fake()->dateTime(), + ]; + } +} diff --git a/database/factories/ProcessHasProcessTypeFactory.php b/database/factories/ProcessHasProcessTypeFactory.php new file mode 100644 index 0000000..6d15e02 --- /dev/null +++ b/database/factories/ProcessHasProcessTypeFactory.php @@ -0,0 +1,34 @@ + + */ +final class ProcessHasProcessTypeFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = ProcessHasProcessType::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'process_id' => fake()->randomElement(Process::pluck('id')), + 'process_type_id' => fake()->randomElement(ProcessType::pluck('id')), + ]; + } +} diff --git a/database/factories/ProductCommentFactory.php b/database/factories/ProductCommentFactory.php new file mode 100644 index 0000000..d1eba16 --- /dev/null +++ b/database/factories/ProductCommentFactory.php @@ -0,0 +1,37 @@ + + */ +final class ProductCommentFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = ProductComment::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'product_id' => fake()->randomElement(Product::pluck('id')), + 'evaluation' => fake()->word, + 'aspect' => fake()->word, + 'taste' => fake()->word, + 'odor' => fake()->word, + 'texture' => fake()->word, + ]; + } +} diff --git a/database/factories/ProductFactory.php b/database/factories/ProductFactory.php new file mode 100644 index 0000000..b886f6f --- /dev/null +++ b/database/factories/ProductFactory.php @@ -0,0 +1,64 @@ + + */ +final class ProductFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Product::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'user_id' => fake()->randomElement(User::pluck('id')), + 'brand_id' => fake()->randomElement(Brand::pluck('id')), + 'name' => fake()->word, + 'entry_date' => fake()->dateTime(), + 'source' => \collect(ProductSourceEnum::cases())->random(), + 'fair' => fake()->word, + 'shop' => fake()->word, + 'catalogue' => fake()->word, + 'gencod' => fake()->word, + 'picture' => fake()->word, + 'docs' => fake()->text, + 'url' => fake()->url, + 'certification' => \collect(ProductCertificationEnum::cases())->random(), + 'origins' => fake()->word, + 'claims' => fake()->word, + 'specified_claim' => fake()->word, + 'distribution_network' => \collect(ProductDistributionNetworkEnum::cases())->random(), + 'ray' => \collect(ProductRayEnum::cases())->random(), + 'product_range' => \collect(ProductRangeEnum::cases())->random(), + 'geo_area' => \collect(ProductGeoAreaEnum::cases())->random(), + 'weight' => fake()->randomNumber(), + 'pvc' => fake()->randomNumber(), + 'comment' => fake()->word, + 'is_tasted' => fake()->boolean, + 'tasters_number' => fake()->numberBetween(0, 15), + 'deleted_at' => fake()->dateTime(), + ]; + } +} diff --git a/database/factories/PromoDistributionNetworkFactory.php b/database/factories/PromoDistributionNetworkFactory.php new file mode 100644 index 0000000..a93c5e0 --- /dev/null +++ b/database/factories/PromoDistributionNetworkFactory.php @@ -0,0 +1,33 @@ + + */ +final class PromoDistributionNetworkFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = PromoDistributionNetwork::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => \collect(PromotionDistributionNetworkEnum::cases())->random(), + 'label' => fake()->word, + ]; + } +} diff --git a/database/factories/PromoFactory.php b/database/factories/PromoFactory.php new file mode 100644 index 0000000..6c41c4e --- /dev/null +++ b/database/factories/PromoFactory.php @@ -0,0 +1,55 @@ + + */ +final class PromoFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Promo::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'user_id' => fake()->randomElement(User::pluck('id')), + 'promo_type_id' => fake()->randomElement(PromoType::pluck('id')), + 'promo_distribution_network_id' => fake()->randomElement(PromoDistributionNetwork::pluck('id')), + 'brand_id' => fake()->randomElement(Brand::pluck('id')), + 'date' => fake()->dateTime(), + 'source' => \collect(PromotionSourceEnum::cases())->random(), + 'shop_name' => fake()->word, + 'shop_city' => fake()->word, + 'sector_chief' => fake()->word, + 'name' => fake()->word, + 'target' => \collect(PromotionTargetEnum::cases())->random(), + 'angle' => \collect(PromotionAngleEnum::cases())->random(), + 'event' => \collect(PromotionEventEnum::cases())->random(), + 'url' => fake()->url, + 'press' => fake()->word, + 'fair' => fake()->word, + 'deleted_at' => fake()->dateTime(), + ]; + } +} diff --git a/database/factories/SurveyFactory.php b/database/factories/SurveyFactory.php new file mode 100644 index 0000000..c9ef5f8 --- /dev/null +++ b/database/factories/SurveyFactory.php @@ -0,0 +1,41 @@ + + */ +final class SurveyFactory extends Factory +{ + /** + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = Survey::class; + + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + $is = fake()->boolean; + return [ + 'user_id' => fake()->randomElement(User::pluck('id')), + 'name' => fake()->word, + 'author' => fake()->word, + 'comment' => fake()->word, + 'date' => fake()->dateTime(), + 'documents' => [fake()->word], + 'is_distributor' => ($is) ? 1 : 0, + 'is_customer' => (!$is) ? 1 : 0, + 'deleted_at' => fake()->dateTime(), + ]; + } +} diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index d4e8835..b16879b 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -2,39 +2,31 @@ namespace Database\Factories; +use App\Models\User; use Illuminate\Database\Eloquent\Factories\Factory; -use Illuminate\Support\Str; /** - * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\User> + * @extends Factory<\App\Models\User> */ -class UserFactory extends Factory +final class UserFactory extends Factory { /** - * Define the model's default state. - * - * @return array - */ + * The name of the factory's corresponding model. + * + * @var string + */ + protected $model = User::class; + + /** + * Define the model's default state. + * + * @return array + */ public function definition(): array { return [ - 'name' => fake()->name(), - 'email' => fake()->unique()->safeEmail(), - 'email_verified_at' => now(), - 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password - 'remember_token' => Str::random(10), + 'firstname' => fake()->firstName, + 'lastname' => fake()->lastName, ]; } - - /** - * Indicate that the model's email address should be unverified. - * - * @return $this - */ - public function unverified(): static - { - return $this->state(fn (array $attributes) => [ - 'email_verified_at' => null, - ]); - } } diff --git a/database/migrations/2023_02_23_120913_create_brands_table.php b/database/migrations/2023_02_23_120913_create_brands_table.php index 6d901e7..f472ff6 100644 --- a/database/migrations/2023_02_23_120913_create_brands_table.php +++ b/database/migrations/2023_02_23_120913_create_brands_table.php @@ -18,6 +18,7 @@ return new class extends Migration $table->bigInteger('id', true); $table->string('brand')->comment('Nom de la marque, auto suggestion sur la table brand'); $table->string('filter')->nullable()->comment('Champ pour gérer le filtrage des marques dans les différents select de l\'application'); + $table->timestamps(); }); } diff --git a/database/migrations/2023_02_23_120913_create_ingredients_table.php b/database/migrations/2023_02_23_120913_create_ingredients_table.php index 95897f2..184d171 100644 --- a/database/migrations/2023_02_23_120913_create_ingredients_table.php +++ b/database/migrations/2023_02_23_120913_create_ingredients_table.php @@ -27,7 +27,7 @@ return new class extends Migration $table->text('observation')->nullable()->comment('Observations - texte libre'); $table->string('picture')->nullable()->comment('Image de l\'ingrédient - 1 path de visuel de référence - 1 doc JPG ou JPEG (recommandé) - redimenssioner 1200x900'); $table->string('url')->nullable()->comment('url nullable - si not null:validation URL'); - $table->text('documents')->nullable()->comment('Doc complémentaires (Annexes) - Tableau de string contenant les paths des docs uploadés associés (docs complémentaires) - 0 a 5 docs '); + $table->json('documents')->nullable()->comment('Doc complémentaires (Annexes) - Tableau de string contenant les paths des docs uploadés associés (docs complémentaires) - 0 a 5 docs '); $table->string('fair')->nullable()->comment('not null si origin (InformationOriginEnum) == salon'); $table->timestamps(); $table->softDeletes(); diff --git a/database/migrations/2023_02_23_120913_create_keywords_table.php b/database/migrations/2023_02_23_120913_create_keywords_table.php index 5271b5a..0de7f5a 100644 --- a/database/migrations/2023_02_23_120913_create_keywords_table.php +++ b/database/migrations/2023_02_23_120913_create_keywords_table.php @@ -17,7 +17,7 @@ return new class extends Migration $table->comment(''); $table->bigInteger('id', true); $table->string('label')->comment('unique with keyword_cat'); - $table->string('keyword_cat')->comment(' unique with label (valeur de l\'enum KeywordCategoryEnum)'); + $table->string('keyword_cat')->comment('unique with label (valeur de l\'enum KeywordCategoryEnum)'); $table->timestamps(); $table->unique(['label', 'keyword_cat']); diff --git a/database/migrations/2023_02_23_120913_create_packagings_table.php b/database/migrations/2023_02_23_120913_create_packagings_table.php index 93d1725..0877ce7 100644 --- a/database/migrations/2023_02_23_120913_create_packagings_table.php +++ b/database/migrations/2023_02_23_120913_create_packagings_table.php @@ -29,7 +29,7 @@ return new class extends Migration $table->text('observation')->nullable()->comment('Texte libre - nullable'); $table->string('picture')->nullable()->comment('Image - 1 path du visuel de référence - Redimensioner 1200x900'); $table->string('url')->nullable()->comment('url nullable - si not null: valider url avec une validation laravel'); - $table->text('documents')->nullable()->comment('Documents - Tableau de string contenant les paths des docs uploadés associés (docs complémentaires) - 0 a 5 docs (recommandé)'); + $table->json('documents')->nullable()->comment('Documents - Tableau de string contenant les paths des docs uploadés associés (docs complémentaires) - 0 a 5 docs (recommandé)'); $table->string('fair')->nullable()->comment('not null si origin (valeur de l\'enum InformationOriginEnum) == salon'); $table->timestamps(); $table->softDeletes(); diff --git a/database/migrations/2023_02_23_120913_create_process_has_process_types_table.php b/database/migrations/2023_02_23_120913_create_process_has_process_types_table.php index 36805c4..169512b 100644 --- a/database/migrations/2023_02_23_120913_create_process_has_process_types_table.php +++ b/database/migrations/2023_02_23_120913_create_process_has_process_types_table.php @@ -17,7 +17,8 @@ return new class extends Migration $table->comment(''); $table->bigInteger('process_id')->index(); $table->bigInteger('process_type_id')->index(); - $table->string('value_enum')->comment('Not Null si process_type = "Préparation Viande": Tableau de INT contenant les valeurs de MeatPreparationEnum - Not Null si process_type = "Conditionnement primaire": Tableau de INT contenant les valeurs de PrimaryPackingEnum'); + $table->string('value_enum')->nullable()->comment('Not Null si process_type = "Préparation Viande": Tableau de INT contenant les valeurs de MeatPreparationEnum - Not Null si process_type = "Conditionnement primaire": Tableau de INT contenant les valeurs de PrimaryPackingEnum'); + $table->timestamps(); }); } diff --git a/database/migrations/2023_02_23_120913_create_process_types_table.php b/database/migrations/2023_02_23_120913_create_process_types_table.php index 588d5f2..69c5e56 100644 --- a/database/migrations/2023_02_23_120913_create_process_types_table.php +++ b/database/migrations/2023_02_23_120913_create_process_types_table.php @@ -17,6 +17,7 @@ return new class extends Migration $table->comment(''); $table->bigInteger('id', true); $table->string('name')->comment('sur le front cela correspond au select "Type de process"'); + $table->timestamps(); }); } diff --git a/database/migrations/2023_02_23_120913_create_processes_table.php b/database/migrations/2023_02_23_120913_create_processes_table.php index e8d4d43..65d8578 100644 --- a/database/migrations/2023_02_23_120913_create_processes_table.php +++ b/database/migrations/2023_02_23_120913_create_processes_table.php @@ -27,8 +27,8 @@ return new class extends Migration $table->string('quotation_document')->nullable()->comment('Devis - Nullable si `is_quotation` = 0 - Not null si `is_quotation`= 1: 1 doc - 1 path à stocker en string'); $table->unsignedTinyInteger('profit')->comment('Benefice - Required (valeur de l\'enum BenefitEnum)'); $table->text('observation')->nullable()->comment('observations - nullable'); - $table->text('picture')->nullable()->comment('Tableau de string contenant les paths des docs uploadés associés (visuels de référence) - 0 a 5 docs JPG ou JPEG (recommandé) - Redimenssioner 1200x900 (h)'); - $table->text('documents')->nullable()->comment('Tableau de string contenant les paths des docs uploadés associés (docs complémentaires) - 0 a 5 docs (recommandé)'); + $table->json('picture')->nullable()->comment('Tableau de string contenant les paths des docs uploadés associés (visuels de référence) - 0 a 5 docs JPG ou JPEG (recommandé) - Redimenssioner 1200x900 (h)'); + $table->json('documents')->nullable()->comment('Tableau de string contenant les paths des docs uploadés associés (docs complémentaires) - 0 a 5 docs (recommandé)'); $table->string('url')->nullable()->comment('url nullable - si not null: valider url avec une validation laravel'); $table->timestamps(); $table->softDeletes(); diff --git a/database/migrations/2023_02_23_120913_create_promo_brands_table.php b/database/migrations/2023_02_23_120913_create_promo_brands_table.php new file mode 100644 index 0000000..fab8d58 --- /dev/null +++ b/database/migrations/2023_02_23_120913_create_promo_brands_table.php @@ -0,0 +1,32 @@ +comment(''); + $table->bigInteger('promo_id')->index(); + $table->bigInteger('brand_id')->index(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('promo_brands'); + } +}; diff --git a/database/migrations/2023_02_23_120913_create_promo_types_table.php b/database/migrations/2023_02_23_120913_create_promo_types_table.php index 25e4d3e..b2baa2e 100644 --- a/database/migrations/2023_02_23_120913_create_promo_types_table.php +++ b/database/migrations/2023_02_23_120913_create_promo_types_table.php @@ -16,7 +16,7 @@ return new class extends Migration Schema::create('promo_types', function (Blueprint $table) { $table->comment(''); $table->bigInteger('id')->primary(); - $table->tinyInteger('name')->comment('Required - Niveau 1 - (valeur de l\'enum TypePromoEnum) - Seeder niveau 2: champ label (valeur de l\'enum LabelTypePromoEnum)'); + $table->tinyInteger('value')->comment('Required - Niveau 1 - (valeur de l\'enum TypePromoEnum) - Seeder niveau 2: champ label (valeur de l\'enum LabelTypePromoEnum)'); $table->string('label')->comment('Seedé dans l\'application en fonction de name'); $table->timestamps(); }); diff --git a/database/migrations/2023_02_23_120914_add_foreign_keys_to_promo_brands_table.php b/database/migrations/2023_02_23_120914_add_foreign_keys_to_promo_brands_table.php new file mode 100644 index 0000000..c5294de --- /dev/null +++ b/database/migrations/2023_02_23_120914_add_foreign_keys_to_promo_brands_table.php @@ -0,0 +1,34 @@ +foreign(['promo_id'])->references(['id'])->on('promos'); + $table->foreign(['brand_id'])->references(['id'])->on('brands'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('promo_brands', function (Blueprint $table) { + $table->dropForeign('promos_promo_id_foreign'); + $table->dropForeign('promos_brand_id_foreign'); + }); + } +}; diff --git a/database/seeders/BrandSeeder.php b/database/seeders/BrandSeeder.php new file mode 100644 index 0000000..7fa703c --- /dev/null +++ b/database/seeders/BrandSeeder.php @@ -0,0 +1,19 @@ +create(); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index a9f4519..790d628 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -2,21 +2,32 @@ namespace Database\Seeders; -// use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Seed the application's database. + * + * @return void */ - public function run(): void + public function run() { - // \App\Models\User::factory(10)->create(); - - // \App\Models\User::factory()->create([ - // 'name' => 'Test User', - // 'email' => 'test@example.com', - // ]); + $this->call([ + UserSeeder::class, + KeywordSeeder::class, + BrandSeeder::class, + IngredientSeeder::class, + PackagingSeeder::class, + ProcessSeeder::class, + ProcessTypeSeeder::class, + ProcessHasProcessTypes::class, + ProductSeeder::class, + ProductCommentSeeder::class, + PromoDistributionNetworkSeeder::class, + PromoTypeSeeder::class, + PromoSeeder::class, + SurveySeeder::class, + ]); } } diff --git a/database/seeders/IngredientSeeder.php b/database/seeders/IngredientSeeder.php new file mode 100644 index 0000000..2ea7827 --- /dev/null +++ b/database/seeders/IngredientSeeder.php @@ -0,0 +1,19 @@ +create(); + } +} diff --git a/database/seeders/KeywordSeeder.php b/database/seeders/KeywordSeeder.php new file mode 100644 index 0000000..94ce6bb --- /dev/null +++ b/database/seeders/KeywordSeeder.php @@ -0,0 +1,233 @@ +keyword_cat = \collect(KeywordCategoryEnum::cases())[0]; + $keyword->label = "Sophistication"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[0]; + $keyword->label = "Exotisme"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[0]; + $keyword->label = "Fun"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[1]; + $keyword->label = "Clean label/naturalité"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[1]; + $keyword->label = "Végétarien/vegan"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[1]; + $keyword->label = "Bien être"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[2]; + $keyword->label = "Solidarité"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[2]; + $keyword->label = "Écologie"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[3]; + $keyword->label = "Emballage individuel"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[3]; + $keyword->label = "Facilité de mise en oeuvre"; + $keyword->save(); + + /** + * * PRODUCTS + */ + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[4]; + $keyword->label = "Sophistication"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[4]; + $keyword->label = "Exotisme"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[4]; + $keyword->label = "Variété des sens"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[4]; + $keyword->label = "Fun"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[5]; + $keyword->label = "Minceur"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[5]; + $keyword->label = "Énergie/Bien-être"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[5]; + $keyword->label = "Cosmétique"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[6]; + $keyword->label = "Manipulation produit"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[6]; + $keyword->label = "Gain de temps"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[6]; + $keyword->label = "Nomadisme"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[7]; + $keyword->label = "Naturalité"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[7]; + $keyword->label = "Végétal"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[7]; + $keyword->label = "Médical"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[8]; + $keyword->label = "Solidarité"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[8]; + $keyword->label = "Écologie"; + $keyword->save(); + + /** + * * PACKAGING + */ + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[9]; + $keyword->label = "Sophistication"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[9]; + $keyword->label = "Exotisme"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[9]; + $keyword->label = "Fun"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[10]; + $keyword->label = "Manipulation produit"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[10]; + $keyword->label = "Gain de temps"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[10]; + $keyword->label = "Nomadisme"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[11]; + $keyword->label = "Décor/forme"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[11]; + $keyword->label = "Matériaux"; + $keyword->save(); + + $keyword = new Keyword(); + $keyword->keyword_cat = \collect(KeywordCategoryEnum::cases())[12]; + $keyword->label = "Écologie"; + $keyword->save(); + + // Seeder for keywordables table. + Keyword::query()->get()->each(function (Keyword $keyword) { + Keywordable::factory(mt_rand(1, 3))->make()->each(function (Keywordable $keywordable) use ($keyword) { + if ( + $keyword->keyword_cat->value === \collect(KeywordCategoryEnum::cases())[1]->value || + $keyword->keyword_cat->value === \collect(KeywordCategoryEnum::cases())[2]->value || + $keyword->keyword_cat->value === \collect(KeywordCategoryEnum::cases())[3]->value || + $keyword->keyword_cat->value === \collect(KeywordCategoryEnum::cases())[4]->value + ) { + $keywordable->keyword()->associate($keyword); + $keywordable->model = 'App\Models\Ingredients'; + $keywordable->saveOrFail(); + } elseif ( + $keyword->keyword_cat->value === \collect(KeywordCategoryEnum::cases())[5]->value || + $keyword->keyword_cat->value === \collect(KeywordCategoryEnum::cases())[6]->value || + $keyword->keyword_cat->value === \collect(KeywordCategoryEnum::cases())[7]->value || + $keyword->keyword_cat->value === \collect(KeywordCategoryEnum::cases())[8]->value || + $keyword->keyword_cat->value === \collect(KeywordCategoryEnum::cases())[9]->value + ) { + $keywordable->keyword()->associate($keyword); + $keywordable->model = 'App\Models\Products'; + $keywordable->saveOrFail(); + } elseif ( + $keyword->keyword_cat->value === \collect(KeywordCategoryEnum::cases())[10]->value || + $keyword->keyword_cat->value === \collect(KeywordCategoryEnum::cases())[11]->value || + $keyword->keyword_cat->value === \collect(KeywordCategoryEnum::cases())[12]->value + ) { + $keywordable->keyword()->associate($keyword); + $keywordable->model = 'App\Models\Packaging'; + $keywordable->saveOrFail(); + } + }); + }); + } +} diff --git a/database/seeders/PackagingSeeder.php b/database/seeders/PackagingSeeder.php new file mode 100644 index 0000000..b8eeae0 --- /dev/null +++ b/database/seeders/PackagingSeeder.php @@ -0,0 +1,19 @@ +create(); + } +} diff --git a/database/seeders/ProcessHasProcessTypes.php b/database/seeders/ProcessHasProcessTypes.php new file mode 100644 index 0000000..157a7e4 --- /dev/null +++ b/database/seeders/ProcessHasProcessTypes.php @@ -0,0 +1,33 @@ +make()->each(function (ProcessHasProcessType $processHasProcessType) { + if ($processHasProcessType->processType->name === ProcessTypeEnum::beef->label()) { + $processHasProcessType->value_enum = \collect(ProcessMeatPreparationEnum::cases()); + $processHasProcessType->saveOrFail(); + } elseif ($processHasProcessType->processType->name === ProcessTypeEnum::mainPackaging->label()) { + $processHasProcessType->value_enum = \collect(ProcessPrimaryPackingEnum::cases()); + $processHasProcessType->saveOrFail(); + } else { + $processHasProcessType->value_enum = null; + $processHasProcessType->saveOrFail(); + }; + }); + } +} diff --git a/database/seeders/ProcessSeeder.php b/database/seeders/ProcessSeeder.php new file mode 100644 index 0000000..75aa652 --- /dev/null +++ b/database/seeders/ProcessSeeder.php @@ -0,0 +1,19 @@ +create(); + } +} diff --git a/database/seeders/ProcessTypeSeeder.php b/database/seeders/ProcessTypeSeeder.php new file mode 100644 index 0000000..9e793bf --- /dev/null +++ b/database/seeders/ProcessTypeSeeder.php @@ -0,0 +1,24 @@ + $value) { + $processType = new ProcessType(); + $processType->name = $value->label(); + $processType->save(); + } + } +} diff --git a/database/seeders/ProductCommentSeeder.php b/database/seeders/ProductCommentSeeder.php new file mode 100644 index 0000000..cfa5e8b --- /dev/null +++ b/database/seeders/ProductCommentSeeder.php @@ -0,0 +1,19 @@ +create(); + } +} diff --git a/database/seeders/ProductSeeder.php b/database/seeders/ProductSeeder.php new file mode 100644 index 0000000..223c190 --- /dev/null +++ b/database/seeders/ProductSeeder.php @@ -0,0 +1,19 @@ +create(); + } +} diff --git a/database/seeders/PromoDistributionNetworkSeeder.php b/database/seeders/PromoDistributionNetworkSeeder.php new file mode 100644 index 0000000..831caa4 --- /dev/null +++ b/database/seeders/PromoDistributionNetworkSeeder.php @@ -0,0 +1,19 @@ +create(); + } +} diff --git a/database/seeders/PromoSeeder.php b/database/seeders/PromoSeeder.php new file mode 100644 index 0000000..f3d8bf3 --- /dev/null +++ b/database/seeders/PromoSeeder.php @@ -0,0 +1,32 @@ +create(); + + // Seeder for news_product table. + $brands = Brand::query()->get(); + Promo::each(function (Promo $promo) use ($brands, $countPromo) { + if ($promo->promotype->value->value === PromotionTypeEnum::coBranding->value) { + $offset = rand(1, $countPromo); + $length = 1; + $promo->brands()->saveMany($brands->slice($offset, $length)); + } + }); + } +} diff --git a/database/seeders/PromoTypeSeeder.php b/database/seeders/PromoTypeSeeder.php new file mode 100644 index 0000000..1a23099 --- /dev/null +++ b/database/seeders/PromoTypeSeeder.php @@ -0,0 +1,143 @@ + $label) { + $id = $id + $key; + $promotype = new PromoType(); + $promotype->id = $id; + $promotype->value = PromotionTypeEnum::animation->value; + $promotype->label = $label; + $promotype->save(); + } + + // * REDUCTION + $id = $id + count($promotypeAnimation); + $promotypeReduction = ['BRI', 'BRD', 'BR croisé', '100% remboursé', 'Autres']; + foreach ($promotypeReduction as $key => $label) { + $id = $id + $key; + $promotype = new PromoType(); + $promotype->id = $id; + $promotype->value = PromotionTypeEnum::reduction->value; + $promotype->label = $label; + $promotype->save(); + } + + // * FIDELITY + $id = $id + count($promotypeReduction); + $promotypeFidelity = ['Programme marque', 'Programme enseigne']; + foreach ($promotypeFidelity as $key => $label) { + $id = $id + $key; + $promotype = new PromoType(); + $promotype->id = $id; + $promotype->value = PromotionTypeEnum::fidelity->value; + $promotype->label = $label; + $promotype->save(); + } + + // * CONSOGAMES + $id = $id + count($promotypeFidelity); + $promotypeConsogames = ['Réseaux sociaux', 'Site web', 'Magasin']; + foreach ($promotypeConsogames as $key => $label) { + $id = $id + $key; + $promotype = new PromoType(); + $promotype->id = $id; + $promotype->value = PromotionTypeEnum::consoGames->value; + $promotype->label = $label; + $promotype->save(); + } + + // * PROMOTIONALFORMATS + $id = $id + count($promotypeConsogames); + $promotypePromotionalformats = ['Lots', 'Gratuit']; + foreach ($promotypePromotionalformats as $key => $label) { + $id = $id + $key; + $promotype = new PromoType(); + $promotype->id = $id; + $promotype->value = PromotionTypeEnum::promotionalFormats->value; + $promotype->label = $label; + $promotype->save(); + } + + // * FLYER + $id = $id + count($promotypePromotionalformats); + $promotypeFlyer = ['Monomarques', 'Multi-marque']; + foreach ($promotypeFlyer as $key => $label) { + $id = $id + $key; + $promotype = new PromoType(); + $promotype->id = $id; + $promotype->value = PromotionTypeEnum::flyer->value; + $promotype->label = $label; + $promotype->save(); + } + + // * COBRANDING + $id = $id + count($promotypeFlyer); + $promotypeCobranding = ['Selectionnez vos marques']; + foreach ($promotypeCobranding as $key => $label) { + $id = $id + $key; + $promotype = new PromoType(); + $promotype->id = $id; + $promotype->value = PromotionTypeEnum::coBranding->value; + $promotype->label = $label; + $promotype->save(); + } + + // * MERCHANDISING + $id = $id + count($promotypeCobranding); + $promotypeMerchandising = ['Démarche merchandising rayon', 'PLV bas-ilôt', 'PLV dédié produit']; + foreach ($promotypeMerchandising as $key => $label) { + $id = $id + $key; + $promotype = new PromoType(); + $promotype->id = $id; + $promotype->value = PromotionTypeEnum::merchandising->value; + $promotype->label = $label; + $promotype->save(); + } + + // * GOODIES + $id = $id + count($promotypeMerchandising); + $promotypeGoodies = ['Objet collector', 'Primes in pack', 'Primes contenant', 'Goodies animation']; + foreach ($promotypeGoodies as $key => $label) { + $id = $id + $key; + $promotype = new PromoType(); + $promotype->id = $id; + $promotype->value = PromotionTypeEnum::goodies->value; + $promotype->label = $label; + $promotype->save(); + } + + // * PROMOTIONALMATERIALS + $id = $id + count($promotypeGoodies) + $key; + $promotype = new PromoType(); + $promotype->id = $id; + $promotype->value = PromotionTypeEnum::promotionalMaterials->value; + $promotype->label = 'Pas de niveau 2'; + $promotype->save(); + + // * EPHEMERALPRODUCTS + $id = $id + $key; + $promotype = new PromoType(); + $promotype->id = $id; + $promotype->value = PromotionTypeEnum::ephemeralProducts->value; + $promotype->label = 'Pas de niveau 2'; + $promotype->save(); + } +} diff --git a/database/seeders/SurveySeeder.php b/database/seeders/SurveySeeder.php new file mode 100644 index 0000000..206b76d --- /dev/null +++ b/database/seeders/SurveySeeder.php @@ -0,0 +1,28 @@ +make()->each(function (Survey $survey) { + if ($survey->is_distributor) { + $survey->type = \collect(SurveyDistributionNetworkEnum::cases())->random(); + } elseif ($survey->is_customer) { + $survey->type = \collect(SurveyCustomerEnum::cases())->random(); + } + $survey->save(); + }); + } +} diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php new file mode 100644 index 0000000..2dd61d4 --- /dev/null +++ b/database/seeders/UserSeeder.php @@ -0,0 +1,19 @@ +create(); + } +}