PHP code example of omniconva / laravel

1. Go to this page and download the library: Download omniconva/laravel library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

omniconva / laravel example snippets


namespace App\OmniConva;

use App\Models\Product;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use OmniConva\Laravel\Data\ProductData;
use OmniConva\Laravel\Data\VariantData;
use OmniConva\Laravel\Sources\EloquentProductSource;

class Products extends EloquentProductSource
{
    public function query(): Builder
    {
        // Only what OmniConva may sell; eager-load what map() reads.
        return Product::query()->where('is_active', true)->with(['variants', 'images', 'categories']);
    }

    public function map(Model $product): ProductData
    {
        return ProductData::make($product->id, $product->name)
            ->url(route('products.show', $product))
            ->description($product->description)
            ->sku($product->sku)
            ->price($product->price)
            ->salePrice($product->sale_price)       // only counts when below the price
            ->stockQuantity($product->stock)        // or ->inStock(true) if you don't count stock
            ->images($product->images->pluck('url'))
            ->categories($product->categories->pluck('name'))
            ->brand($product->brand)
            ->variants($product->variants->map(
                fn ($variant) => VariantData::make($variant->id, $variant->name)
                    ->sku($variant->sku)
                    ->price($variant->price)
                    ->stockQuantity($variant->stock)
                    ->image($variant->image_url)
                    ->options(['Size' => $variant->size, 'Color' => $variant->color])
            ))
            ->updatedAt($product->updated_at);
    }
}

namespace App\OmniConva;

use App\Models\Order;
use OmniConva\Laravel\Contracts\OrderHandler;
use OmniConva\Laravel\Data\OrderData;
use OmniConva\Laravel\Data\OrderResult;

class Orders implements OrderHandler
{
    public function createOrder(OrderData $order): OrderResult
    {
        $saved = Order::create([
            'customer_name' => $order->customer->name,
            'phone' => $order->customer->phone,
            'address' => $order->shippingAddress->address,
            'city' => $order->shippingAddress->city,
            'shipping' => $order->shipping?->amount ?? 0,
            'discount' => $order->discount,
            'total' => $order->total,
            'payment_method' => 'cod',
        ]);

        foreach ($order->items as $item) {
            $saved->items()->create([
                'product_id' => $item->productId,   // your product id
                'variant_id' => $item->variantId,   // your variant id, or null
                'quantity' => $item->quantity,
                'price' => $item->unitPrice,
            ]);
        }

        return OrderResult::make($saved->id, $saved->number);
    }
}

use OmniConva\Laravel\Concerns\SyncsWithOmniConva;

class Product extends Model
{
    use SyncsWithOmniConva;
}

use OmniConva\Laravel\Concerns\SyncsParentWithOmniConva;

class ProductVariant extends Model
{
    use SyncsParentWithOmniConva; // uses $this->product; override omniConvaParent() otherwise
}

use OmniConva\Laravel\Facades\OmniConva;

OmniConva::productUpdated($product);   // a model, or a ProductData
OmniConva::productDeleted($productId);

use OmniConva\Laravel\Data\Tracking;
use OmniConva\Laravel\Facades\OmniConva;

OmniConva::orderUpdated($order->id, 'shipped', Tracking::make('TRK123', 'Pathao', $trackingUrl));
bash
composer omniconva:install
php artisan migrate