using PhoneToolMX.Models.ViewModels;
using System.ComponentModel.DataAnnotations;
using System.Data;

namespace PhoneToolMX.Models
{
    public class CheckExtensionsAttribute : ValidationAttribute
    {
        private int? MaxExtensions;
        
        public override string FormatErrorMessage(string name)
        {
            return MaxExtensions != null
                ? $"Up to {MaxExtensions} extensions can be assigned to this phone"
                : "Too many extensions assigned to this phone";
        }
        public override bool IsValid(object value)
        {
            if (value is not PhoneVM phone) throw new ConstraintException($"{GetType().Name} is only allowed for PhoneVM");
            if (phone.MaxExtensions <= 0 || phone.Extensions == null) return true;
            MaxExtensions = phone.MaxExtensions;
            return !(phone.Extensions.Count > phone.MaxExtensions);
        }
    }
}