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;
}
}