feat: implement currency rates tracking with models, migrations and views

هذا الالتزام موجود في:
2025-05-24 05:59:12 +03:00
الأصل 72b4eff3ee
التزام b19748ef20
21 ملفات معدلة مع 690 إضافات و361 حذوفات

32
app/Models/City.php Normal file
عرض الملف

@@ -0,0 +1,32 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class City extends Model
{
/** @use HasFactory<\Database\Factories\CityFactory> */
use HasFactory;
const SANAA = 'sanaa';
const ADEN = 'aden';
protected $fillable = [
'name',
'label',
];
/**
* Get all supported cities
*/
public static function supportedCities(): array
{
return [
self::SANAA,
self::ADEN,
];
}
}

36
app/Models/Currency.php Normal file
عرض الملف

@@ -0,0 +1,36 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Currency extends Model
{
/** @use HasFactory<\Database\Factories\CurrencyFactory> */
use HasFactory;
/**
* The supported currency codes.
*/
const USD = 'USD';
const SAR = 'SAR';
protected $fillable = [
'code',
'name',
'symbol',
];
/**
* Get all supported currency codes
*/
public static function supportedCurrencies(): array
{
return [
self::USD,
self::SAR,
];
}
}

33
app/Models/Rate.php Normal file
عرض الملف

@@ -0,0 +1,33 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Rate extends Model
{
use HasFactory;
protected $fillable = [
'currency_id',
'city_id',
'buy_price',
'sell_price',
'date',
];
protected $casts = [
'date' => 'date:Y-m-d',
];
public function currency()
{
return $this->belongsTo(Currency::class);
}
public function city()
{
return $this->belongsTo(City::class);
}
}