47 lines
1.1 KiB
C#
47 lines
1.1 KiB
C#
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,
|
|
};
|
|
}
|
|
}
|
|
}
|