File: D:/HostingSpaces/brameda/brameda.nl/app/Komma/Shop/seeds/SampleOrders.php
<?php
namespace App\Komma\Shop\seeds;
use App\Komma\Addresses\Models\Address;
use App\Komma\Shop\Cart\ShoppingCartService;
use App\Komma\Shop\Checkout\CheckoutService;
use App\Komma\Shop\Orders\OrderStatus;
use App\Komma\Shop\Payment\Transaction;
use App\Komma\Shop\Payment\TransactionStatus;
use App\Komma\Shop\Products\Product\Product;
use App\Komma\Shop\Products\ProductComposite\ProductComposite;
use App\Komma\Shop\Products\ProductGroup\ProductGroup;
use App\Komma\Users\Models\KmsUser;
use App\Komma\Users\Models\SiteUser;
use Carbon\Carbon;
use Illuminate\Database\Seeder;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
class SampleOrders extends Seeder
{
/**
* @throws \Throwable
*/
public function run()
{
$checkoutService = new CheckoutService();
$shoppingCartService = new ShoppingCartService();
$sampleOrderAmount = 30;
// $sampleOrderAmount = 50000; //A real life situation
for($index = 0; $index < $sampleOrderAmount; $index++) {
/** @var KmsUser $user */
$user = factory(SiteUser::class)->create();
$items = 3;
$products = Product::inRandomOrder()->take($items)->get();
$group = ProductGroup::inRandomOrder()->take(1)->first();
$composite = ProductComposite::inRandomOrder()->take(1)->first();
$shoppingCartService->clear();
$products->each(function(Product $product) use ($shoppingCartService) {
$shoppingCartService->addProductable($product);
});
$shoppingCartService->addProductable($group);
$shoppingCartService->addProductable($composite);
$status = Arr::random(TransactionStatus::getAsArray());
$addressForShipping = factory(Address::class)->create();
$addressForInvoice = factory(Address::class)->create();
$order = $checkoutService->createOrderFromShoppingCartItems($shoppingCartService->getItems(), $user, $addressForShipping, $addressForInvoice);
$fakeTransaction = new Transaction([
'order_id' => $order->id,
'amount' => $order->total_price,
'psp_payment_reference' => Str::random(),
'psp' => 'example PSP',
'psp_id' => mt_rand(10000, 99999),
'ip' => request()->ip(),
'currency_iso_4217_code' => 'EUR',
'error_code' => '',
'account_reference' => '',
'account_holder_name' => $user->first_name.' '.$user->last_name,
'acccount_brand' => 'fake',
'issuer_id' => 'somebank',
'payment_method' => 'KommaPal',
'status' => $status,
'payment_link' => route('fakepsp', ['order' => $order]),
'expire_date' => Carbon::now()->addMinutes(15)->toDateTimeString(),
'payment_date' => ($status == OrderStatus::COMPLETED) ? Carbon::now()->addMinutes(1)->toDateTimeString() : null
]);
$fakeTransaction->save();
/** @var Transaction $transaction */
$transaction = $order->transactions()->save($fakeTransaction);
}
}
}