<?php

namespace App\Models;

use App\Models\Concerns\BelongsToCompany;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class GeneratedLetter extends Model
{
    use BelongsToCompany;

    public const TYPE_RELIEVING = 'relieving';

    public const TYPE_EXPERIENCE = 'experience';

    public const TYPE_WARNING = 'warning';

    public const TYPE_OFFER = 'offer';

    protected $fillable = [
        'company_id',
        'user_id',
        'letter_head_template_id',
        'generated_by_user_id',
        'letter_type',
        'subject',
        'body_html',
    ];

    public function employee(): BelongsTo
    {
        return $this->belongsTo(User::class, 'user_id');
    }

    public function template(): BelongsTo
    {
        return $this->belongsTo(LetterHeadTemplate::class, 'letter_head_template_id');
    }

    public function generatedBy(): BelongsTo
    {
        return $this->belongsTo(User::class, 'generated_by_user_id');
    }

    public function typeLabel(): string
    {
        return match ($this->letter_type) {
            self::TYPE_RELIEVING => 'Relieving letter',
            self::TYPE_EXPERIENCE => 'Experience certificate',
            self::TYPE_WARNING => 'Warning letter',
            self::TYPE_OFFER => 'Offer letter',
            default => ucfirst(str_replace('_', ' ', (string) $this->letter_type)),
        };
    }
}
