55 lines
1.6 KiB
C#
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
|
|
}
|
|
} |