<?php

declare(strict_types=1);

namespace App\Models;

use App\Enums\ApplicationStatus;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class Application extends Model
{
    use HasFactory;

    protected $fillable = [
        'company_name',
        'contact_person',
        'status',
        'email',
        'phone',
        'address',
        'pickup_moment',
        'products',
        'extra_products',
        'data_destruction',
        'is_donation',
        'donation_destination',
        'archived_at',
        'file',
        'images',
    ];

    protected $casts = [
        'status' => ApplicationStatus::class,
        'address' => 'array',
        'products' => 'array',
        'extra_products' => 'array',
        'pickup_moment' => 'array',
        'images' => 'array',
        'archived_at' => 'datetime',
    ];

    /**
     * @return Attribute<string, void>
     */
    public function AddressFormatted(): Attribute
    {
        return Attribute::make(
            get: fn () => $this->address['street'] . ' ' . $this->address['street_number'] . ', ' . $this->address['postal_code'] . ' ' . $this->address['city'],
        );
    }
}
