62 lines
1.6 KiB
C#
62 lines
1.6 KiB
C#
using CarServiceContracts.BindingModels;
|
|
using CarServiceContracts.Models;
|
|
using CarServiceContracts.ViewModels;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
|
|
namespace CarServiceDatabase.Models
|
|
{
|
|
public class Item : IItemModel
|
|
{
|
|
public int Id { get; private set; }
|
|
[Required]
|
|
public string Name { get; private set; } = string.Empty;
|
|
[Required, Column(TypeName = "decimal (10,2)")]
|
|
public decimal Price { get; private set; }
|
|
[Required]
|
|
public int Count { get; private set; }
|
|
[Required]
|
|
public int WorkerId { get; private set; }
|
|
/// <summary>
|
|
/// Затраты на ремонт
|
|
/// </summary>
|
|
[ForeignKey("ItemId")]
|
|
public virtual List<ItemForRepair> ItemsForRepair { get; set; } = new();
|
|
public virtual Worker Worker { get; set; } = new();
|
|
public static Item? Create(CarServiceDbContext context, ItemBindingModel? model)
|
|
{
|
|
if (model == null)
|
|
{
|
|
return null;
|
|
}
|
|
return new()
|
|
{
|
|
Name = model.Name,
|
|
Price = model.Price,
|
|
Count = model.Count,
|
|
Worker = context.Workers.First(x => x.Id == model.WorkerId)
|
|
};
|
|
}
|
|
public void Update(CarServiceDbContext context, ItemBindingModel? model)
|
|
{
|
|
if (model == null)
|
|
{
|
|
return;
|
|
}
|
|
Name = model.Name;
|
|
Price = model.Price;
|
|
Count = model.Count;
|
|
Worker = context.Workers.First(x => x.Id == model.WorkerId);
|
|
}
|
|
public ItemViewModel GetViewModel => new()
|
|
{
|
|
Id = Id,
|
|
Name = Name,
|
|
Price = Price,
|
|
Count = Count,
|
|
WorkerId = WorkerId,
|
|
WorkerName = Worker.Name + " " + Worker.Surname
|
|
};
|
|
}
|
|
}
|