<?php

namespace App\Models;

use Database\Factories\ProductServiceFactory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;

class ProductService extends Model
{
    /** @use HasFactory<ProductServiceFactory> */
    use HasFactory, SoftDeletes;

    protected $fillable = [
        'order_id',
        'service_file_id',
        'service_type',
        'placement',
        'setup_amount',
        'amount',
        'amount_price',
        'notes',
    ];

    protected $appends = [
        'service_details',
        'price',
    ];

    public function getPriceAttribute(): float
    {
        return number_format($this->amount * $this->amount_price, 2);
    }

    public function getServiceDetailsAttribute(): string
    {
        $file = $this->serviceFile;

        return $file->name.', '.$this->placement.', '.$file->width.' W, '.$file->height.' H';
    }

    /**
     * @return BelongsTo<Order, self>
     */
    public function order(): BelongsTo
    {
        return $this->belongsTo(Order::class);
    }

    /**
     * @return BelongsTo<ServiceFile, self>
     */
    public function serviceFile(): BelongsTo
    {
        return $this->BelongsTo(ServiceFile::class);
    }
}