namespace MyOffice.Web.Models.Item
{
	using System.ComponentModel.DataAnnotations;
	using Data.Models.Accounts;
	using MyOffice.Core.Extensions;
	using MyOffice.Data.Models.Items;

	public class ItemViewModel
	{
		public string? Id { get; set; }

		public string CategoryId { get; set; } = null!;
		public string? Category { get; set; } = null!;
		[Required]
		public string? Name { get; set; }

		public bool AllowDelete { get; set; }
		public string? AccountId { get; set; }
	}

	public static class ItemViewModelExtensions
	{
		public static ItemViewModel ToModel(this Item input, Account? account = null)
		{
			return new ItemViewModel
			{
				Id = input.ItemGlobal.Id.ToShort(),
				CategoryId = input.CategoryId.ToShort(),
				Category = input.Category?.Name,
				Name = input.ItemGlobal.Name,
				AllowDelete = input.Motions != null && !input.Motions.Any(),
				AccountId = account?.Id.ToShort(),
			};
		}
	}
}
