2023-05-19 21:35:04 +04:00

95 lines
3.0 KiB
C#

using FactoryContracts.BindingModels;
using FactoryContracts.ViewModels;
using FactoryDataModels.Models;
using Microsoft.Data.SqlClient.DataClassification;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FactoryDatabaseImplement.Models
{
public class Lathe : ILatheModel
{
public int Id { get; set; }
[Required]
public string LatheName { get; set; } = String.Empty;
[Required]
public int MasterId { get; set; }
[Required]
public int BusyId { get; set; }
[Required]
private Dictionary<int, IReinforcedModel>? _latheReinforcedes = null;
[NotMapped]
public Dictionary<int, IReinforcedModel> LatheReinforcedes {
get {
if (_latheReinforcedes == null)
{
_latheReinforcedes = Reinforceds.ToDictionary(recLR => recLR.ReinforcedId, recLR =>
recLR.Reinforced as IReinforcedModel);
}
return _latheReinforcedes;
}
}
[ForeignKey("LatheId")]
public virtual List<LatheReinforced> Reinforceds { get; set; } = new();
public static Lathe Create(FactoryDatabase context, LatheBindingModel model)
{
return new Lathe()
{
Id = model.Id,
LatheName = model.LatheName,
MasterId = model.MasterId,
BusyId = model.BusyId
};
}
public void Update(LatheBindingModel model)
{
Id = model.Id;
LatheName = model.LatheName;
}
public LatheViewModel GetViewModel => new()
{
Id = Id,
BusyId = BusyId,
MasterId = MasterId,
LatheName = LatheName,
};
public void UpdateComponents(FactoryDatabase context, LatheBindingModel model)
{
var LatheReinforsed = context.LatheReinforcedes.Where(rec => rec.LatheId == model.Id).ToList();
if (LatheReinforsed != null && LatheReinforsed.Count > 0)
{
context.LatheReinforcedes.RemoveRange(LatheReinforsed.Where(rec => !model.LatheReinforcedes.ContainsKey(rec.LatheId)));
context.SaveChanges();
LatheReinforsed = context.LatheReinforcedes.Where(rec => rec.LatheId == model.Id).ToList();
foreach (var updateComponent in LatheReinforsed)
{
model.LatheReinforcedes.Remove(updateComponent.LatheId);
}
context.SaveChanges();
}
var Lathe = context.Lathes.First(x => x.Id == Id);
foreach (var pc in model.LatheReinforcedes)
{
context.LatheReinforcedes.Add(new LatheReinforced
{
Lathe = Lathe,
Reinforced = context.Reinforceds.First(x => x.Id == pc.Key),
});
context.SaveChanges();
}
_latheReinforcedes = null;
}
}
}