File: D:/HostingSpaces/SBogers10/shop.komma.nl/database/factories/OrderRelatedFactories.php
<?php
/*
|--------------------------------------------------------------------------
| Product Factories
|--------------------------------------------------------------------------
|
| Here you may define all of your model factories.
| Model factories give
| you a convenient way to create models for testing and seeding your
| database. Just tell the factory how a default model should look.
*/
use App\Orders\InvoiceNumberSequence;
use App\Orders\Models\Order;
use App\Orders\OrderNumberSequence;
use App\Orders\OrderStatus;
use App\Orders\Product\OrderedProduct;
use App\Orders\ProductComposite\OrderedProductComposite;
use App\Orders\ProductGroup\OrderedProductGroup;
use App\Users\SiteUser;
use Komma\KMS\Core\Sequence\Sequence;
use Komma\KMS\Globalization\RegionInfo;
use Komma\KMS\Globalization\RegionInfoInterface;
$prefix = '';
$factory->define(OrderedProduct::class, function (Faker\Generator $faker) use ($prefix) {
// $faker->addProvider(ProductNamesFaker::class);
return [
'title' => $prefix.$faker->productName(),
'price' => $faker->randomNumber(4),
'stock_keeping_unit' => $faker->ean13,
'created_at' => \Carbon\Carbon::now()->toDateTimeString(),
'updated_at' => \Carbon\Carbon::now()->toDateTimeString()
];
});
$factory->define(OrderedProductGroup::class, function (Faker\Generator $faker) use ($prefix) {
return [
'active' => true,
'title' => $prefix.$faker->word,
];
});
$factory->define(OrderedProductComposite::class, function (Faker\Generator $faker) use ($prefix) {
return [
'active' => true,
'title' => $prefix.$faker->word,
];
});
$factory->define(Order::class, function (Faker\Generator $faker) use ($prefix) {
/** @var SiteUser $customer */
$customer = factory(SiteUser::class)->create();
/** @var RegionInfoInterface $randomRegion */
$randomRegion = RegionInfo::getNeutralCultures()->random(1)->first();
/** @var Sequence $orderNumberGenerator */
$orderNumberGenerator = app(OrderNumberSequence::class);
/** @var Sequence $orderNumberGenerator */
$invoiceNumberGenerator = app(InvoiceNumberSequence::class);
return [
'site_user_id' => $customer->id,
'status' => $faker->randomElement(OrderStatus::getAsArray()),
'total' => rand(1000, 100000),
'order_number' => $orderNumberGenerator->next(),
'invoice_number' => $invoiceNumberGenerator->next(),
'invoice_street' => $faker->streetName,
'invoice_house_number' => $faker->numberBetween(10, 999),
'invoice_postal_code' => $faker->postcode,
'invoice_city' => $faker->city,
'invoice_country_iso3' => $randomRegion->getThreeLetterISORegionName(),
'shipping_street' => $faker->streetName,
'shipping_house_number' => $faker->numberBetween(10, 999),
'shipping_postal_code' => $faker->postcode,
'shipping_city' => $faker->city,
'shipping_country_iso3' => $randomRegion->getThreeLetterISORegionName(),
];
});