<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
 * App\Models\ShoppingOrderItem
 *
 * @property int $id
 * @property int $shopping_order_id
 * @property string|null $row_id
 * @property int $product_id
 * @property int|null $qty
 * @property float|null $price
 * @property string|null $slug
 * @property \Illuminate\Support\Carbon|null $created_at
 * @property \Illuminate\Support\Carbon|null $updated_at
 * @property-read \App\Models\Product $product
 * @property-read \App\Models\ShoppingOrder $shopping_order
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem newModelQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem newQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem query()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereCreatedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem wherePrice($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereProductId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereQty($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereRowId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereShoppingOrderId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereSlug($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereUpdatedAt($value)
 * @mixin \Eloquent
 * @property float|null $tax_rate
 * @property \Illuminate\Support\Carbon|null $deleted_at
 * @property string|null $user_deleted_at
 * @method static \Illuminate\Database\Query\Builder|\App\Models\ShoppingOrderItem onlyTrashed()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereDeletedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereTaxRate($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereUserDeletedAt($value)
 * @method static \Illuminate\Database\Query\Builder|\App\Models\ShoppingOrderItem withTrashed()
 * @method static \Illuminate\Database\Query\Builder|\App\Models\ShoppingOrderItem withoutTrashed()
 * @property int|null $comp
 * @property float|null $price_net
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem whereComp($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\ShoppingOrderItem wherePriceNet($value)
 */
class ShoppingOrderItem extends Model
{
    protected $table = 'shopping_order_items';

    use SoftDeletes;
    protected $dates = ['deleted_at'];

    protected $fillable = [
        'shopping_order_id',
        'row_id',
        'product_id',
        'comp',
        'qty',
        'price',
        'price_net',
        'tax_rate',
        'slug',
    ];


    public function shopping_order()
    {
        return $this->belongsTo('App\Models\ShoppingOrder','shopping_order_id');
    }

    public function product()
    {
        return $this->belongsTo('App\Models\Product','product_id');
    }


    public function getFormattedPrice()
    {
        return formatNumber($this->attributes['price']);
    }

    public function getFormattedTotalPrice()
    {
        return formatNumber($this->attributes['price'] * $this->attributes['qty']);
    }

    public function getFormattedPriceNet()
    {
        return formatNumber($this->attributes['price_net']);
    }

    public function getFormattedTotalPriceNet()
    {
        return formatNumber($this->attributes['price_net'] *  $this->attributes['qty']);
    }

}