namespace MyOffice.Web.Models.Item { using System.ComponentModel.DataAnnotations; using MyOffice.Core.Extensions; using MyOffice.Data.Models.Items; using MyOffice.Migrations.Postgres.Migrations; public class ItemCategoryViewModel { public string? Id { get; set; } [Required] public string Name { get; set; } = null!; public bool AllowDelete { get; set; } public int SortOrder { get; set; } public bool IsInternal { get; set; } } public static class ItemCategoryViewModelExtensions { public static ItemCategoryViewModel ToModel(this ItemCategory input) { return new ItemCategoryViewModel { Id = input.Id.ToShort(), Name = input.Name, AllowDelete = !input.Items.Any() && input.Id != input.UserId, IsInternal = input.IsInternal, SortOrder = input.Id == input.UserId ? 1 : 0 }; } public static ItemCategory FromModel(this ItemCategoryViewModel input) { if (input == null) throw new ArgumentNullException(nameof(input)); return new ItemCategory { Name = input.Name, IsInternal = input.IsInternal, }; } } }