2022-03-07 17:34:09 +08:00

55 lines
1.6 KiB
C#

using Xamarin.Forms;
using System.Xml.Linq;
namespace Billing.Models
{
public class Category : BaseModel
{
public int Id { get; set; }
public CategoryType Type { get; set; }
public string Icon { get; set; } = ICON_DEFAULT;
public string Name { get; set; }
public Color TintColor { get; set; } = Color.Transparent;
public int? ParentId { get; set; }
public override void OnXmlDeserialize(XElement node)
{
Id = Read(node, nameof(Id), 0);
Type = (CategoryType)Read(node, nameof(Type), 0);
Icon = Read(node, nameof(Icon), ICON_DEFAULT);
Name = Read(node, nameof(Name), string.Empty);
var color = Read(node, nameof(TintColor), string.Empty);
if (!string.IsNullOrEmpty(color))
{
TintColor = Color.FromHex(color);
}
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(Type), (int)Type);
Write(node, nameof(Icon), Icon);
Write(node, nameof(Name), Name);
if (TintColor != Color.Transparent)
{
Write(node, nameof(TintColor), TintColor.ToHex());
}
if (ParentId != null)
{
Write(node, nameof(ParentId), ParentId.Value);
}
}
}
public enum CategoryType
{
Spending,
Income
}
}