using System.Globalization;
using FluentValidation.Resources;

namespace FrontOffice.Main.Utilities;

public class CustomFluentValidationLanguageManager : LanguageManager
{
    public CustomFluentValidationLanguageManager()
    {

    }

    public override string GetString(string key, CultureInfo culture = null) => key switch
    {
        "EmailValidator" => ".مقدار وارد شده قالب صحیح یک ایمیل را ندارد",
        "GreaterThanOrEqualValidator" => "مقدار باید بیشتر یا مساوی '{ComparisonValue}' باشد.",
        "GreaterThanValidator" => "مقدار باید بیشتر از '{ComparisonValue}' باشد.",
        "LengthValidator" => "مقدار باید حداقل {MinLength} و حداکثر {MaxLength} کاراکتر داشته باشد. اما مقدار وارد شده {TotalLength} کاراکتر دارد.",
        "MinimumLengthValidator" => "مقدار باید بزرگتر یا برابر با {MinLength} کاراکتر باشد. شما تعداد {TotalLength} کاراکتر را وارد کردید",
        "MaximumLengthValidator" => "مقدار باید کمتر یا مساوی {MaxLength} باشد. {TotalLength} را وارد کردید",
        "LessThanOrEqualValidator" => "مقدار باید کمتر یا مساوی '{ComparisonValue}' باشد.",
        "LessThanValidator" => "مقدار باید کمتر از '{ComparisonValue}' باشد.",
        "NotEmptyValidator" => "وارد کردن این فیلد ضروری است.",
        "NotEqualValidator" => "نباید برابر با '{ComparisonValue}' باشد.",
        "NotNullValidator" => "وارد کردن این فیلد ضروری است.",
        "PredicateValidator" => "شرط تعیین شده برای این فیلد برقرار نیست.",
        "AsyncPredicateValidator" => "شرط تعیین شده برای این فیلد برقرار نیست.",
        "RegularExpressionValidator" => "مقدار دارای قالب صحیح نیست.",
        "EqualValidator" => "مقادیر وارد شده برای و '{ComparisonValue}' یکسان نیستند.",
        "ExactLengthValidator" => "مقدار باید دقیقا {MaxLength} کاراکتر باشد اما مقدار وارد شده {TotalLength} کاراکتر دارد.",
        "InclusiveBetweenValidator" => "مقدار باید بین {From} و {To} باشد. اما مقدار وارد شده ({PropertyValue}) در این محدوده نیست.",
        "ExclusiveBetweenValidator" => "مقدار باید بیشتر از {From} و کمتر از {To} باشد. اما مقدار وارد شده ({PropertyValue}) در این محدوده نیست.",
        "CreditCardValidator" => "مقدار وارد شده معتبر نیست.",
        "ScalePrecisionValidator" => "مقدار مقدار نباید بیش از {ExpectedPrecision} رقم، شامل {ExpectedScale} رقم اعشار داشته باشد. مقدار وارد شده {Digits} رقم و {ActualScale} رقم اعشار دارد.",
        "EmptyValidator" => "مقدار باید خالی باشد.",
        "NullValidator" => "مقدار باید خالی باشد.",
        "EnumValidator" => "مقدار '{PropertyValue}' در لیست مقادیر قابل قبول برای نمی باشد.",
        // Additional fallback messages used by clientside validation integration.
        "Length_Simple" => "مقدار باید حداقل {MinLength} و حداکثر {MaxLength} کاراکتر داشته باشد.",
        "MinimumLength_Simple" => "مقدار باید بزرگتر یا برابر با {MinLength} کاراکتر باشد.",
        "MaximumLength_Simple" => "مقدار باید کمتر یا مساوی {MaxLength} باشد.",
        "ExactLength_Simple" => "مقدار باید دقیقا {MaxLength} کاراکتر.",
        "InclusiveBetween_Simple" => "مقدار باید بین {From} و {To} باشد.",
        _ => null,
    };

}