namespace MyOffice.Web.Models.Motion
{
	using System.ComponentModel.DataAnnotations;
	using Core.Extensions;
	using Data.Models.Accounts;
	using MyOffice.Data.Models.Motions;
	using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;

	public class MotionCategoryViewModel
	{
		public string? Id { get; set; }
		
		[Required]
		public string? Name { get; set; }

		public bool AllowDelete { get; set; }
		public int SortOrder { get; set; }
	}

	public static class MotionCategoryViewModelExtensions
	{
		public static MotionCategoryViewModel ToModel(this MotionCategory input)
		{
			return new MotionCategoryViewModel
			{
				Id = input.Id.ToShort(),
				Name = input.Name,
				AllowDelete = !input.Motions.Any() && input.Id != input.UserId,
				SortOrder = input.Id == input.UserId ? 1 : 0
			};
		}
	}
}
