<?php

namespace App\Sms\Service;

use App\Sms\Entity\SmsMessageTemplate;
use App\Sms\Repository\SmsMessageTemplateRepository;

/**
 * متن پیامک سیستمی را بر اساس تگ resolve می‌کند: body ویرایش‌شده از DB، با جایگزینی
 * placeholderهای {key}؛ اگر رکوردی نبود به متن پیش‌فرضِ SmsMessageTemplate::DEFAULTS برمی‌گردد.
 */
class SmsTextResolver
{
    public function __construct(
        private readonly SmsMessageTemplateRepository $repo,
    ) {}

    /** @param array<string,string|int> $vars */
    public function resolve(string $tag, array $vars = []): string
    {
        $template = $this->repo->findByTag($tag);
        $body = $template?->getBody()
            ?? SmsMessageTemplate::DEFAULTS[$tag]['body']
            ?? '';

        foreach ($vars as $key => $value) {
            $body = str_replace('{' . $key . '}', (string) $value, $body);
        }

        return $body;
    }
}
