HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/firetech.komma.pro/app/KommaApp/Shop/Orders/Models/Order.php
<?php
namespace App\KommaApp\Shop\Orders\Models;

use App\KommaApp\Shop\Orders\Product\OrderedProduct;
use App\KommaApp\Shop\Orders\ProductComposite\OrderedProductComposite;
use App\KommaApp\Shop\Orders\ProductGroup\OrderedProductGroup;
use App\KommaApp\Users\Models\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;


/**
 * App\KommaApp\Shop\Orders\Models\Order
 *
 * @property int $id
 * @property int $user_id
 * @property string $status
 * @property string $customer_info
 * @property string $shipping_info
 * @property int $total_price
 * @property string $order_discount
 * @property string $invoice_gender
 * @property string $invoice_title
 * @property string $invoice_first_name
 * @property string $invoice_last_name
 * @property string $invoice_email
 * @property string $invoice_company
 * @property string $invoice_country
 * @property string $invoice_postal_code
 * @property string $invoice_city
 * @property string $invoice_street
 * @property int $invoice_house_number
 * @property string $invoice_telephone
 * @property \Carbon\Carbon|null $created_at
 * @property \Carbon\Carbon|null $updated_at
 * @property-read \App\KommaApp\Users\Models\User $customer
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereCreatedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereCustomerInfo($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereInvoiceCity($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereInvoiceCompany($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereInvoiceCountry($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereInvoiceEmail($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereInvoiceFirstName($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereInvoiceGender($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereInvoiceHouseNumber($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereInvoiceLastName($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereInvoicePostalCode($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereInvoiceStreet($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereInvoiceTelephone($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereInvoiceTitle($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereOrderDiscount($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereShippingInfo($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereStatus($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereTotalPrice($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereUpdatedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereUserId($value)
 * @mixin \Eloquent
 * @property string $discount Discount info for the order (not its products) only.
 * @property string $shipping_gender
 * @property string $shipping_title
 * @property string $shipping_first_name
 * @property string $shipping_last_name
 * @property string $shipping_email
 * @property string $shipping_company
 * @property string $shipping_country
 * @property string $shipping_postal_code
 * @property string $shipping_city
 * @property string $shipping_street
 * @property int $shipping_house_number
 * @property string $shipping_telephone
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\KommaApp\Shop\Orders\ProductComposite\OrderedProductComposite[] $product_composites
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\KommaApp\Shop\Orders\ProductGroup\OrderedProductGroup[] $product_groups
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\KommaApp\Shop\Orders\Product\OrderedProduct[] $products
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereDiscount($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereShippingCity($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereShippingCompany($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereShippingCountry($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereShippingEmail($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereShippingFirstName($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereShippingGender($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereShippingHouseNumber($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereShippingLastName($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereShippingPostalCode($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereShippingStreet($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereShippingTelephone($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order whereShippingTitle($value)
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\KommaApp\Shop\Orders\ProductComposite\OrderedProductComposite[] $orderedProductComposites
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\KommaApp\Shop\Orders\ProductGroup\OrderedProductGroup[] $orderedProductGroups
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\KommaApp\Shop\Orders\Product\OrderedProduct[] $orderedProducts
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order newModelQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order newQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\KommaApp\Shop\Orders\Models\Order query()
 */
class Order extends Model
{
    /*
    * Transient properties on Eloquent models
    * These are not saved to database.
    */
    protected $class = Order::class;

    public $thumbnail = false;

    /**
     * Mutates the customer_info attribute
     * @param User $user
     */
    public function setCustomerInfoAttribute($user)
    {
        if(is_numeric($user)) {
            $user = User::find($user);
            if(!$user) return;
        }

        $formatted  = __('kms/users.first_name').': '.$user->first_name.PHP_EOL;
        $formatted .= __('kms/users.last_name').': '.$user->last_name.PHP_EOL;
        $formatted .= __('kms/users.email').': '.$user->email.PHP_EOL;
        $formatted .= ''.PHP_EOL;
        $formatted .= __('shop/orders.invoice_address').':'.PHP_EOL;
        $formatted .= $user->street.' '.$user->house_number.', '.$user->zip_code.', '.$user->city.', '.$user->country.PHP_EOL;

        $this->attributes['customer_info'] = $formatted;
    }

    public function customer(): BelongsTo
    {
        return $this->belongsTo(User::class, 'user_id');
    }

    /**
     * Get the products related to this category
     */
    public function orderedProducts():HasMany
        {
        return $this->HasMany(OrderedProduct::class);
    }

    /**
     * Get the products related to this category
     */
    public function orderedProductGroups():HasMany
    {
        return $this->HasMany(OrderedProductGroup::class);
    }

    /**
     * Get the products related to this category
     */
    public function orderedProductComposites():HasMany
    {
        return $this->HasMany(OrderedProductComposite::class);
    }

    public function __get($key)
    {
        if($key == 'title' && isset($this->attributes['id'])) return ucfirst(__('shop/orders.order')).' '.$this->attributes['id'];
        return parent::__get($key);
    }
}