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/farmfun/reserveren.farmfun.be/app/Komma/Orders/Models/Order.php
<?php

namespace App\Komma\Orders\Models;

use App\Komma\Kms\Core\Attributes\Models\Traits\HasThumbnailInterface;
use App\Komma\Kms\Core\Attributes\Models\Traits\HasThumbnailTrait;
use App\Komma\Kms\Core\Entities\DisplayNameInterface;
use App\Komma\Kms\Core\Entities\DisplayNameTrait;
use App\Komma\Locations\Models\Location;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
 * App\Komma\Orders\Models\Order
 *
 * @property int $id
 * @property string $order_number
 * @property string $order_reservation_number
 * @property string $status
 * @property int $total_price
 * @property int $total_price_ex
 * @property \Illuminate\Support\Carbon|null $created_at
 * @property \Illuminate\Support\Carbon|null $updated_at
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order newModelQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order newQuery()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order query()
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereCreatedAt($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereId($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereTotalPrice($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereUpdatedAt($value)
 * @mixin \Eloquent
 * @property int $invoice_address_id
 * @property int $shipping_address_id
 * @property string $invoice_company
 * @property string $invoice_street
 * @property string $invoice_house_number
 * @property string $invoice_postal_code
 * @property string $invoice_city
 * @property string $invoice_telephone
 * @property string $invoice_country_iso2
 * @property string $shipping_street
 * @property string $shipping_house_number
 * @property string $shipping_postal_code
 * @property string $shipping_city
 * @property string $shipping_telephone
 * @property int $vat_amount
 * @property int $vat_percentage
 * @property string $shipping_country_iso2
 * @property-read \Illuminate\Database\Eloquent\Collection|\App\Komma\Shop\Shipments\Shipment[] $shipments
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereInvoiceCity($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereInvoiceCountry($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereInvoiceHouseNumber($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereInvoicePostalCode($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereInvoiceStreet($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereInvoiceTelephone($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereOrderNumber($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereShippingCity($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereShippingCountry($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereShippingHouseNumber($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereShippingPostalCode($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereShippingStreet($value)
 * @method static \Illuminate\Database\Eloquent\Builder|\App\Komma\Shop\Orders\Models\Order whereShippingTelephone($value)
 */
final class Order extends Model implements HasThumbnailInterface, DisplayNameInterface
{
    protected $name = '';

    const STATUS_NEW = 0;

    const STATUS_CONFIRMED = 1;

    const STATUS_CANCELED = 2;

    use DisplayNameTrait;
    use HasThumbnailTrait;
    use SoftDeletes;

    protected $dates = ['date'];

    /*
    * Transient properties on Eloquent models
    * These are not saved to database.
    */
    protected $class = self::class;

    /**
     * @return HasMany
     */
    public function lines(): HasMany
    {
        return $this->hasMany(OrderLine::class);
    }

    /**
     * @return string
     */
    public function getCountryIso(): string
    {
        switch ($this->invoice_country) {
            case 'Belgiƫ':
                return 'BE';

            case 'Nederland':
                return 'NL';

            case 'Duitsland':
                return 'DE';

            case 'Frankrijk':
                return 'FR';
        }

        throw new \UnexpectedValueException('Unknown invoice country: '.$this->invoice_country);
    }

    /**
     * Get Location out of the first line
     *
     * @return Location
     */
    public function getLocation(): Location
    {
        $this->loadMissing('lines', 'lines.location');

        return $this->lines->first()->location;
    }
}