SushiBarBase/SushiBar/SushiBarDatabaseImplement/Models/Order.cs
2024-05-08 10:57:02 +04:00

80 lines
2.7 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using SushiBarContracts.BindingModels;
using SushiBarContracts.ViewModels;
using SushiBarDataModels.Enums;
using SushiBarDataModels.Models;
using System.ComponentModel.DataAnnotations;
namespace SushiBarDatabaseImplement.Models
{
public class Order : IOrderModel
{
public int Id { get; private set; }
[Required]
public int Count { get; set; }
[Required]
public double Sum { get; set; }
[Required]
public OrderStatus Status { get; set; } = OrderStatus.Неизвестен;
[Required]
public DateTime DateCreate { get; set; } = DateTime.Now;
public DateTime? DateImplement { get; set; }
[Required]
public int SushiId { get; private set; }
public virtual Sushi Sushi { get; set; }
public int ClientId { get; private set; }
public virtual Client Client { get; private set; }
public int? ImplementerId { get; private set; }
public virtual Implementer? Implementer { get; set; }
public static Order Create(SushiBarDatabase context, OrderBindingModel model)
{
if (model == null)
{
return null;
}
return new Order()
{
Id = model.Id,
Count = model.Count,
Sum = model.Sum,
Status = model.Status,
DateCreate = model.DateCreate,
DateImplement = model.DateImplement,
SushiId = model.SushiId,
Sushi = context.Sushis.First(x => x.Id == model.SushiId),
ClientId = model.ClientId,
Client = context.Clients.First(x => x.Id == model.ClientId),
Implementer = model.ImplementerId == null ? null : context.Implementers.First(i => i.Id == model.ImplementerId)
};
}
public void Update(OrderBindingModel model)
{
if (model == null)
{
return;
}
Status = model.Status;
DateImplement = model.DateImplement;
ClientId = model.ClientId;
ImplementerId = model.ImplementerId;
}
public OrderViewModel GetViewModel => new()
{
Id = Id,
SushiId = Sushi.Id,
Count = Count,
Sum = Sum,
Status = Status,
DateCreate = DateCreate,
DateImplement = DateImplement,
SushiName = Sushi.SushiName,
ClientId = Client.Id,
ClientFIO = Client.ClientFIO,
ImplementerId = ImplementerId,
ImplementerName = Implementer == null ? string.Empty : Implementer.ImplementerFIO
};
}
}