using System.Xml.Linq;

namespace Billing.Models
{
    public class Category : BaseModel
    {
        public int Id { get; set; }
        public string Icon { get; set; } = ICON_DEFAULT;
        public string Name { get; set; }
        public int? ParentId { get; set; }

        public override void OnXmlDeserialize(XElement node)
        {
            Id = Read(node, nameof(Id), 0);
            Icon = Read(node, nameof(Icon), ICON_DEFAULT);
            Name = Read(node, nameof(Name), string.Empty);
            var parentId = Read(node, nameof(ParentId), -1);
            if (parentId >= 0)
            {
                ParentId = parentId;
            }
        }

        public override void OnXmlSerialize(XElement node)
        {
            Write(node, nameof(Id), Id);
            Write(node, nameof(Icon), Icon);
            Write(node, nameof(Name), Name);
            if (ParentId != null)
            {
                Write(node, nameof(ParentId), ParentId.Value);
            }
        }
    }
}