96 lines
3.2 KiB
C#
Raw Normal View History

using System.ComponentModel.DataAnnotations;
using TransportCompanyContracts.BindingModels;
using TransportCompanyContracts.ViewModels;
using TransportCompanyDataModels.Enums;
using TransportCompanyDataModels.Models;
namespace TransportCompanyDatabaseImplement.Models
{
public class Transportation : ITransportationModel
{
public int Id { get; private set; }
[Required]
public int DriverId { get; private set; }
public virtual Driver Driver { get; set; } = new();
[Required]
public int TransportId { get; private set; }
public virtual Transport Transport { get; set; } = new();
[Required]
public int CargoId { get; private set; }
public virtual Cargo Cargo { get; set; } = new();
[Required]
public int Count { get; private set; }
[Required]
public int PointToId { get; private set; }
public virtual Point PointTo { get; set; } = new();
[Required]
public int PointFromId { get; private set; }
public virtual Point PointFrom { get; set; } = new();
[Required]
public TransportationStatus Status { get; private set; } = TransportationStatus.Неизвестен;
[Required]
public DateTime DepartureDate { get; private set; } = DateTime.Now;
public DateTime? ArrivalDate { get; private set; }
public static Transportation? Create(TransportCompanyDatabase context, TransportationBindingModel model)
{
return new Transportation()
{
Id = model.Id,
DriverId = model.DriverId,
Driver = context.Drivers.First(x => x.Id == model.DriverId),
TransportId = model.TransportId,
Transport = context.Transports.First(x => x.Id == model.TransportId),
CargoId = model.CargoId,
Cargo = context.Cargos.First(x => x.Id == model.CargoId),
Count = model.Count,
PointToId = model.PointToId,
PointTo = context.Points.First(x => x.Id == model.PointToId),
PointFromId = model.PointFromId,
PointFrom = context.Points.First(x => x.Id == model.PointFromId),
Status = model.Status,
DepartureDate = model.DepartureDate,
ArrivalDate = model.ArrivalDate,
};
}
public void Update(TransportationBindingModel? model)
{
if (model == null)
{
return;
}
Status = model.Status;
ArrivalDate = model.ArrivalDate;
}
public TransportationViewModel GetViewModel => new()
{
Id = Id,
DriverId = DriverId,
DriverFio = Driver.DriverFio,
TransportId = TransportId,
Model = Transport.Model,
CargoId = CargoId,
CargoName = Cargo.CargoName,
Count = Count,
PointToId = PointToId,
PointNameTo = PointTo.PointName,
PointFromId = PointFromId,
PointNameFrom = PointFrom.PointName,
Status = Status,
DepartureDate = DepartureDate,
ArrivalDate = ArrivalDate,
};
}
}