add DatabaseImplement (Storage and Models)
This commit is contained in:
parent
87ef50effd
commit
c6e5fb354f
@ -14,6 +14,6 @@ namespace FactoryContracts.BindingModels
|
|||||||
|
|
||||||
public int ClientId { get; set; }
|
public int ClientId { get; set; }
|
||||||
|
|
||||||
public Dictionary<int, (IPlanProductionModel, int)> PlanProductionMachines { get; set; } = new();
|
public Dictionary<int, (IPlanProductionModel, int)> MachinePlanProductions { get; set; } = new();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ namespace FactoryContracts.BindingModels
|
|||||||
|
|
||||||
public int Count { get; set; }
|
public int Count { get; set; }
|
||||||
|
|
||||||
public DateTime Term { get; set; }
|
public DateTime Deadline { get; set; }
|
||||||
|
|
||||||
public Dictionary<int, (IWorkpieceModel, int)> PlanProductionWorkpieces { get; set; } = new();
|
public Dictionary<int, (IWorkpieceModel, int)> PlanProductionWorkpieces { get; set; } = new();
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,6 @@
|
|||||||
{
|
{
|
||||||
public int? Id { get; set; }
|
public int? Id { get; set; }
|
||||||
|
|
||||||
public string? Name { get; set; }
|
public string? MachineName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,6 @@
|
|||||||
{
|
{
|
||||||
public int? Id { get; set; }
|
public int? Id { get; set; }
|
||||||
|
|
||||||
public string? Name { get; set; }
|
public string? ProductName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,6 @@
|
|||||||
{
|
{
|
||||||
public int? Id { get; set; }
|
public int? Id { get; set; }
|
||||||
|
|
||||||
public string? Name { get; set; }
|
public string? RequirementName { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,6 @@ namespace FactoryContracts.ViewModels
|
|||||||
public string ClientLogin { get; set; } = string.Empty;
|
public string ClientLogin { get; set; } = string.Empty;
|
||||||
|
|
||||||
[DisplayName("Планы производства")]
|
[DisplayName("Планы производства")]
|
||||||
public Dictionary<int, (IPlanProductionModel, int)> PlanProductionMachines { get; set; } = new();
|
public Dictionary<int, (IPlanProductionModel, int)> MachinePlanProductions { get; set; } = new();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ namespace FactoryContracts.ViewModels
|
|||||||
[DisplayName("Количество")]
|
[DisplayName("Количество")]
|
||||||
public int Count { get; set; }
|
public int Count { get; set; }
|
||||||
[DisplayName("Срок выполнения")]
|
[DisplayName("Срок выполнения")]
|
||||||
public DateTime Term { get; set; }
|
public DateTime Deadline { get; set; }
|
||||||
[DisplayName("Заготовки")]
|
[DisplayName("Заготовки")]
|
||||||
public Dictionary<int, (IWorkpieceModel, int)> PlanProductionWorkpieces { get; set; } = new();
|
public Dictionary<int, (IWorkpieceModel, int)> PlanProductionWorkpieces { get; set; } = new();
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,6 @@
|
|||||||
|
|
||||||
int ClientId { get; }
|
int ClientId { get; }
|
||||||
|
|
||||||
Dictionary<int, (IPlanProductionModel, int)> PlanProductionMachines { get; }
|
Dictionary<int, (IPlanProductionModel, int)> MachinePlanProductions { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
int Count { get; }
|
int Count { get; }
|
||||||
|
|
||||||
DateTime Term { get; }
|
DateTime Deadline { get; }
|
||||||
|
|
||||||
Dictionary<int, (IWorkpieceModel, int)> PlanProductionWorkpieces { get; }
|
Dictionary<int, (IWorkpieceModel, int)> PlanProductionWorkpieces { get; }
|
||||||
}
|
}
|
||||||
|
@ -12,8 +12,10 @@ namespace FactoryDatabaseImplement
|
|||||||
optionsBuilder.UseNpgsql(@"Host=localhost;Database=Factory;Username=postgres;Password = postgres");
|
optionsBuilder.UseNpgsql(@"Host=localhost;Database=Factory;Username=postgres;Password = postgres");
|
||||||
}
|
}
|
||||||
base.OnConfiguring(optionsBuilder);
|
base.OnConfiguring(optionsBuilder);
|
||||||
}
|
|
||||||
|
|
||||||
|
AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
|
||||||
|
AppContext.SetSwitch("Npgsql.DisableDataTimeInfinityConversions", true);
|
||||||
|
}
|
||||||
public virtual DbSet<Client> Clients { set; get; }
|
public virtual DbSet<Client> Clients { set; get; }
|
||||||
public virtual DbSet<ExecutionPhase> ExecutionPhases { set; get; }
|
public virtual DbSet<ExecutionPhase> ExecutionPhases { set; get; }
|
||||||
public virtual DbSet<MachinePlanProduction> MachinePlanProductions { set; get; }
|
public virtual DbSet<MachinePlanProduction> MachinePlanProductions { set; get; }
|
||||||
@ -21,9 +23,9 @@ namespace FactoryDatabaseImplement
|
|||||||
public virtual DbSet<PlanProductionWorkpiece> PlanProductionWorkpieces { set; get; }
|
public virtual DbSet<PlanProductionWorkpiece> PlanProductionWorkpieces { set; get; }
|
||||||
public virtual DbSet<Workpiece> Workpieces { set; get; }
|
public virtual DbSet<Workpiece> Workpieces { set; get; }
|
||||||
public virtual DbSet<WorkpieceProduct> WorkpieceProducts { set; get; }
|
public virtual DbSet<WorkpieceProduct> WorkpieceProducts { set; get; }
|
||||||
|
public virtual DbSet<Machine> Machines { set; get; }
|
||||||
|
public virtual DbSet<ProductMachine> ProductMachines { set; get; }
|
||||||
|
public virtual DbSet<Product> Products { set; get; }
|
||||||
|
public virtual DbSet<Requirement> Requirements { set; get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,6 +3,7 @@ using FactoryContracts.SearchModels;
|
|||||||
using FactoryContracts.StoragesContracts;
|
using FactoryContracts.StoragesContracts;
|
||||||
using FactoryContracts.ViewModels;
|
using FactoryContracts.ViewModels;
|
||||||
using FactoryDatabaseImplement.Models;
|
using FactoryDatabaseImplement.Models;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace FactoryDatabaseImplement.Implements
|
namespace FactoryDatabaseImplement.Implements
|
||||||
{
|
{
|
||||||
@ -12,6 +13,7 @@ namespace FactoryDatabaseImplement.Implements
|
|||||||
{
|
{
|
||||||
using var context = new FactoryDatabase();
|
using var context = new FactoryDatabase();
|
||||||
return context.ExecutionPhases
|
return context.ExecutionPhases
|
||||||
|
.Include(x => x.Client)
|
||||||
.Select(x => x.GetViewModel)
|
.Select(x => x.GetViewModel)
|
||||||
.ToList();
|
.ToList();
|
||||||
}
|
}
|
||||||
@ -24,6 +26,7 @@ namespace FactoryDatabaseImplement.Implements
|
|||||||
}
|
}
|
||||||
using var context = new FactoryDatabase();
|
using var context = new FactoryDatabase();
|
||||||
return context.ExecutionPhases
|
return context.ExecutionPhases
|
||||||
|
.Include(x => x.Client)
|
||||||
.Where(x => x.ExecutionPhaseName.Contains(model.ExecutionPhaseName))
|
.Where(x => x.ExecutionPhaseName.Contains(model.ExecutionPhaseName))
|
||||||
.Select(x => x.GetViewModel)
|
.Select(x => x.GetViewModel)
|
||||||
.ToList();
|
.ToList();
|
||||||
@ -36,7 +39,7 @@ namespace FactoryDatabaseImplement.Implements
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
using var context = new FactoryDatabase();
|
using var context = new FactoryDatabase();
|
||||||
return context.ExecutionPhases
|
return context.ExecutionPhases.Include(x => x.Client)
|
||||||
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.ExecutionPhaseName) && x.ExecutionPhaseName == model.ExecutionPhaseName) ||
|
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.ExecutionPhaseName) && x.ExecutionPhaseName == model.ExecutionPhaseName) ||
|
||||||
(model.Id.HasValue && x.Id == model.Id))
|
(model.Id.HasValue && x.Id == model.Id))
|
||||||
?.GetViewModel;
|
?.GetViewModel;
|
||||||
@ -71,7 +74,7 @@ namespace FactoryDatabaseImplement.Implements
|
|||||||
public ExecutionPhaseViewModel? Delete(ExecutionPhaseBindingModel model)
|
public ExecutionPhaseViewModel? Delete(ExecutionPhaseBindingModel model)
|
||||||
{
|
{
|
||||||
using var context = new FactoryDatabase();
|
using var context = new FactoryDatabase();
|
||||||
var element = context.ExecutionPhases.FirstOrDefault(rec => rec.Id == model.Id);
|
var element = context.ExecutionPhases.Include(x => x.Client).FirstOrDefault(rec => rec.Id == model.Id);
|
||||||
if (element != null)
|
if (element != null)
|
||||||
{
|
{
|
||||||
context.ExecutionPhases.Remove(element);
|
context.ExecutionPhases.Remove(element);
|
||||||
|
109
Factory/FactoryDatabaseImplement/Implements/MachineStorage.cs
Normal file
109
Factory/FactoryDatabaseImplement/Implements/MachineStorage.cs
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
using FactoryContracts.BindingModels;
|
||||||
|
using FactoryContracts.SearchModels;
|
||||||
|
using FactoryContracts.StoragesContracts;
|
||||||
|
using FactoryContracts.ViewModels;
|
||||||
|
using FactoryDatabaseImplement.Models;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace FactoryDatabaseImplement.Implements
|
||||||
|
{
|
||||||
|
public class MachineStorage : IMachineStorage
|
||||||
|
{
|
||||||
|
public List<MachineViewModel> GetFullList()
|
||||||
|
{
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
return context.Machines
|
||||||
|
.Include(x => x.Client)
|
||||||
|
.Include(x => x.PlanProductions)
|
||||||
|
.ThenInclude(x => x.PlanProduction)
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MachineViewModel> GetFilteredList(MachineSearchModel model)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(model.MachineName))
|
||||||
|
{
|
||||||
|
return new();
|
||||||
|
}
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
return context.Machines
|
||||||
|
.Include(x => x.Client)
|
||||||
|
.Include(x => x.PlanProductions)
|
||||||
|
.ThenInclude(x => x.PlanProduction)
|
||||||
|
.Where(x => x.MachineName.Contains(model.MachineName))
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MachineViewModel? GetElement(MachineSearchModel model)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(model.MachineName) && !model.Id.HasValue)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
return context.Machines
|
||||||
|
.Include(x => x.Client)
|
||||||
|
.Include(x => x.PlanProductions)
|
||||||
|
.ThenInclude(x => x.PlanProduction)
|
||||||
|
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.MachineName) && x.MachineName == model.MachineName) ||
|
||||||
|
(model.Id.HasValue && x.Id == model.Id))
|
||||||
|
?.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MachineViewModel? Insert(MachineBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
var newMachine = Machine.Create(context, model);
|
||||||
|
if (newMachine == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
context.Machines.Add(newMachine);
|
||||||
|
context.SaveChanges();
|
||||||
|
return newMachine.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MachineViewModel? Update(MachineBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
using var transaction = context.Database.BeginTransaction();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var machine = context.Machines.FirstOrDefault(rec => rec.Id == model.Id);
|
||||||
|
if (machine == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
machine.Update(model);
|
||||||
|
context.SaveChanges();
|
||||||
|
machine.UpdatePlanProductions(context, model);
|
||||||
|
transaction.Commit();
|
||||||
|
return machine.GetViewModel;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
transaction.Rollback();
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public MachineViewModel? Delete(MachineBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
var element = context.Machines
|
||||||
|
.Include(x => x.Client)
|
||||||
|
.Include(x => x.PlanProductions)
|
||||||
|
.ThenInclude(x => x.PlanProduction)
|
||||||
|
.FirstOrDefault(rec => rec.Id == model.Id);
|
||||||
|
if (element != null)
|
||||||
|
{
|
||||||
|
context.Machines.Remove(element);
|
||||||
|
context.SaveChanges();
|
||||||
|
return element.GetViewModel;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -13,6 +13,7 @@ namespace FactoryDatabaseImplement.Implements
|
|||||||
{
|
{
|
||||||
using var context = new FactoryDatabase();
|
using var context = new FactoryDatabase();
|
||||||
var element = context.PlanProductions
|
var element = context.PlanProductions
|
||||||
|
.Include(x => x.Client)
|
||||||
.Include(x => x.ExecutionPhase)
|
.Include(x => x.ExecutionPhase)
|
||||||
.Include(x => x.Workpieces)
|
.Include(x => x.Workpieces)
|
||||||
.ThenInclude( x => x.Workpiece)
|
.ThenInclude( x => x.Workpiece)
|
||||||
@ -35,6 +36,7 @@ namespace FactoryDatabaseImplement.Implements
|
|||||||
using var context = new FactoryDatabase();
|
using var context = new FactoryDatabase();
|
||||||
if (model.Id.HasValue)
|
if (model.Id.HasValue)
|
||||||
return context.PlanProductions
|
return context.PlanProductions
|
||||||
|
.Include(x => x.Client)
|
||||||
.Include(x => x.ExecutionPhase)
|
.Include(x => x.ExecutionPhase)
|
||||||
.Include(x =>x.Workpieces)
|
.Include(x =>x.Workpieces)
|
||||||
.ThenInclude(x => x.Workpiece)
|
.ThenInclude(x => x.Workpiece)
|
||||||
@ -52,6 +54,7 @@ namespace FactoryDatabaseImplement.Implements
|
|||||||
{
|
{
|
||||||
return context.PlanProductions
|
return context.PlanProductions
|
||||||
.Where(x => x.Id == model.Id)
|
.Where(x => x.Id == model.Id)
|
||||||
|
.Include(x => x.Client)
|
||||||
.Include(x => x.ExecutionPhase)
|
.Include(x => x.ExecutionPhase)
|
||||||
.Include(x => x.Workpieces)
|
.Include(x => x.Workpieces)
|
||||||
.ThenInclude(x => x.Workpiece)
|
.ThenInclude(x => x.Workpiece)
|
||||||
@ -67,6 +70,7 @@ namespace FactoryDatabaseImplement.Implements
|
|||||||
{
|
{
|
||||||
using var context = new FactoryDatabase();
|
using var context = new FactoryDatabase();
|
||||||
return context.PlanProductions
|
return context.PlanProductions
|
||||||
|
.Include (x => x.Client)
|
||||||
.Include(x => x.ExecutionPhase)
|
.Include(x => x.ExecutionPhase)
|
||||||
.Include(x => x.Workpieces)
|
.Include(x => x.Workpieces)
|
||||||
.ThenInclude(x => x.Workpiece)
|
.ThenInclude(x => x.Workpiece)
|
||||||
@ -94,6 +98,7 @@ namespace FactoryDatabaseImplement.Implements
|
|||||||
{
|
{
|
||||||
using var context = new FactoryDatabase();
|
using var context = new FactoryDatabase();
|
||||||
var order = context.PlanProductions
|
var order = context.PlanProductions
|
||||||
|
.Include(x => x.Client)
|
||||||
.Include(x => x.ExecutionPhase)
|
.Include(x => x.ExecutionPhase)
|
||||||
.Include(x => x.Workpieces)
|
.Include(x => x.Workpieces)
|
||||||
.ThenInclude(x => x.Workpiece)
|
.ThenInclude(x => x.Workpiece)
|
||||||
|
113
Factory/FactoryDatabaseImplement/Implements/ProductStorage.cs
Normal file
113
Factory/FactoryDatabaseImplement/Implements/ProductStorage.cs
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
using FactoryContracts.BindingModels;
|
||||||
|
using FactoryContracts.SearchModels;
|
||||||
|
using FactoryContracts.StoragesContracts;
|
||||||
|
using FactoryContracts.ViewModels;
|
||||||
|
using FactoryDatabaseImplement.Models;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace FactoryDatabaseImplement.Implements
|
||||||
|
{
|
||||||
|
public class ProductStorage : IProductStorage
|
||||||
|
{
|
||||||
|
public List<ProductViewModel> GetFullList()
|
||||||
|
{
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
return context.Products
|
||||||
|
.Include(x => x.Client)
|
||||||
|
.Include(x => x.Requirement)
|
||||||
|
.Include(x => x.Machines)
|
||||||
|
.ThenInclude(x => x.Machine)
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ProductViewModel> GetFilteredList(ProductSearchModel model)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(model.ProductName))
|
||||||
|
{
|
||||||
|
return new();
|
||||||
|
}
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
return context.Products
|
||||||
|
.Include(x => x.Client)
|
||||||
|
.Include(x => x.Requirement)
|
||||||
|
.Include(x => x.Machines)
|
||||||
|
.ThenInclude(x => x.Machine)
|
||||||
|
.Where(x => x.ProductName.Contains(model.ProductName))
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProductViewModel? GetElement(ProductSearchModel model)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(model.ProductName) && !model.Id.HasValue)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
return context.Products
|
||||||
|
.Include(x => x.Client)
|
||||||
|
.Include(x => x.Requirement)
|
||||||
|
.Include(x => x.Machines)
|
||||||
|
.ThenInclude(x => x.Machine)
|
||||||
|
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.ProductName) && x.ProductName == model.ProductName) ||
|
||||||
|
(model.Id.HasValue && x.Id == model.Id))
|
||||||
|
?.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProductViewModel? Insert(ProductBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
var newProduct = Product.Create(context, model);
|
||||||
|
if (newProduct == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
context.Products.Add(newProduct);
|
||||||
|
context.SaveChanges();
|
||||||
|
return newProduct.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProductViewModel? Update(ProductBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
using var transaction = context.Database.BeginTransaction();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var machine = context.Products.FirstOrDefault(rec => rec.Id == model.Id);
|
||||||
|
if (machine == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
machine.Update(model);
|
||||||
|
context.SaveChanges();
|
||||||
|
machine.UpdateMachines(context, model);
|
||||||
|
transaction.Commit();
|
||||||
|
return machine.GetViewModel;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
transaction.Rollback();
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProductViewModel? Delete(ProductBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
var element = context.Products
|
||||||
|
.Include(x => x.Client)
|
||||||
|
.Include(x => x.Requirement)
|
||||||
|
.Include(x => x.Machines)
|
||||||
|
.ThenInclude(x => x.Machine)
|
||||||
|
.FirstOrDefault(rec => rec.Id == model.Id);
|
||||||
|
if (element != null)
|
||||||
|
{
|
||||||
|
context.Products.Remove(element);
|
||||||
|
context.SaveChanges();
|
||||||
|
return element.GetViewModel;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,88 @@
|
|||||||
|
using FactoryContracts.BindingModels;
|
||||||
|
using FactoryContracts.SearchModels;
|
||||||
|
using FactoryContracts.StoragesContracts;
|
||||||
|
using FactoryContracts.ViewModels;
|
||||||
|
using FactoryDatabaseImplement.Models;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace FactoryDatabaseImplement.Implements
|
||||||
|
{
|
||||||
|
public class RequirementStorage : IRequirementStorage
|
||||||
|
{
|
||||||
|
public List<RequirementViewModel> GetFullList()
|
||||||
|
{
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
return context.Requirements
|
||||||
|
.Include(x => x.Client)
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<RequirementViewModel> GetFilteredList(RequirementSearchModel model)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(model.RequirementName))
|
||||||
|
{
|
||||||
|
return new();
|
||||||
|
}
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
return context.Requirements
|
||||||
|
.Include(x => x.Client)
|
||||||
|
.Where(x => x.RequirementName.Contains(model.RequirementName))
|
||||||
|
.Select(x => x.GetViewModel)
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public RequirementViewModel? GetElement(RequirementSearchModel model)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(model.RequirementName) && !model.Id.HasValue)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
return context.Requirements
|
||||||
|
.Include(x => x.Client)
|
||||||
|
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.RequirementName) && x.RequirementName == model.RequirementName) ||
|
||||||
|
(model.Id.HasValue && x.Id == model.Id))
|
||||||
|
?.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RequirementViewModel? Insert(RequirementBindingModel model)
|
||||||
|
{
|
||||||
|
var newRequirement = Requirement.Create(model);
|
||||||
|
if (newRequirement == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
context.Requirements.Add(newRequirement);
|
||||||
|
context.SaveChanges();
|
||||||
|
return newRequirement.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RequirementViewModel? Update(RequirementBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
var component = context.Requirements.FirstOrDefault(x => x.Id == model.Id);
|
||||||
|
if (component == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
component.Update(model);
|
||||||
|
context.SaveChanges();
|
||||||
|
return component.GetViewModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RequirementViewModel? Delete(RequirementBindingModel model)
|
||||||
|
{
|
||||||
|
using var context = new FactoryDatabase();
|
||||||
|
var element = context.Requirements.Include(x => x.Client).FirstOrDefault(rec => rec.Id == model.Id);
|
||||||
|
if (element != null)
|
||||||
|
{
|
||||||
|
context.Requirements.Remove(element);
|
||||||
|
context.SaveChanges();
|
||||||
|
return element.GetViewModel;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -13,6 +13,7 @@ namespace FactoryDatabaseImplement.Implements
|
|||||||
{
|
{
|
||||||
using var context = new FactoryDatabase();
|
using var context = new FactoryDatabase();
|
||||||
return context.Workpieces
|
return context.Workpieces
|
||||||
|
.Include(x => x.Client)
|
||||||
.Include(x => x.Products)
|
.Include(x => x.Products)
|
||||||
.ThenInclude(x => x.Product)
|
.ThenInclude(x => x.Product)
|
||||||
.ToList()
|
.ToList()
|
||||||
@ -28,6 +29,7 @@ namespace FactoryDatabaseImplement.Implements
|
|||||||
}
|
}
|
||||||
using var context = new FactoryDatabase();
|
using var context = new FactoryDatabase();
|
||||||
return context.Workpieces
|
return context.Workpieces
|
||||||
|
.Include(x => x.Client)
|
||||||
.Include(x => x.Products)
|
.Include(x => x.Products)
|
||||||
.ThenInclude(x => x.Product)
|
.ThenInclude(x => x.Product)
|
||||||
.Where(x => x.WorkpieceName.Contains(model.WorkpieceName))
|
.Where(x => x.WorkpieceName.Contains(model.WorkpieceName))
|
||||||
@ -44,6 +46,7 @@ namespace FactoryDatabaseImplement.Implements
|
|||||||
}
|
}
|
||||||
using var context = new FactoryDatabase();
|
using var context = new FactoryDatabase();
|
||||||
return context.Workpieces
|
return context.Workpieces
|
||||||
|
.Include(x => x.Client)
|
||||||
.Include(x => x.Products)
|
.Include(x => x.Products)
|
||||||
.ThenInclude(x => x.Product)
|
.ThenInclude(x => x.Product)
|
||||||
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.WorkpieceName) && x.WorkpieceName == model.WorkpieceName) ||
|
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.WorkpieceName) && x.WorkpieceName == model.WorkpieceName) ||
|
||||||
@ -91,7 +94,7 @@ namespace FactoryDatabaseImplement.Implements
|
|||||||
public WorkpieceViewModel? Delete(WorkpieceBindingModel model)
|
public WorkpieceViewModel? Delete(WorkpieceBindingModel model)
|
||||||
{
|
{
|
||||||
using var context = new FactoryDatabase();
|
using var context = new FactoryDatabase();
|
||||||
var element = context.Workpieces
|
var element = context.Workpieces.Include(x => x.Client)
|
||||||
.Include(x => x.Products)
|
.Include(x => x.Products)
|
||||||
.FirstOrDefault(rec => rec.Id == model.Id);
|
.FirstOrDefault(rec => rec.Id == model.Id);
|
||||||
if (element != null)
|
if (element != null)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
using FactoryContracts.BindingModels;
|
using FactoryContracts.BindingModels;
|
||||||
using FactoryContracts.ViewModels;
|
using FactoryContracts.ViewModels;
|
||||||
|
using FactoryDataModels.Enums;
|
||||||
using FactoryDataModels.Models;
|
using FactoryDataModels.Models;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
@ -17,6 +18,7 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
[Required]
|
[Required]
|
||||||
public string Password { get; private set; } = string.Empty;
|
public string Password { get; private set; } = string.Empty;
|
||||||
|
|
||||||
|
public ClientRole Role { get; private set; } = ClientRole.Неизвестен;
|
||||||
|
|
||||||
[ForeignKey("ClientId")]
|
[ForeignKey("ClientId")]
|
||||||
public virtual List<ExecutionPhase> ExecutionPhases{ get; set; } = new();
|
public virtual List<ExecutionPhase> ExecutionPhases{ get; set; } = new();
|
||||||
@ -39,6 +41,7 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
Login = model.Login,
|
Login = model.Login,
|
||||||
Email= model.Email,
|
Email= model.Email,
|
||||||
Password = model.Password,
|
Password = model.Password,
|
||||||
|
Role = model.Role,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -50,6 +53,7 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
Login = model.Login,
|
Login = model.Login,
|
||||||
Email = model.Email,
|
Email = model.Email,
|
||||||
Password = model.Password,
|
Password = model.Password,
|
||||||
|
Role = model.Role,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,6 +74,7 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
Login = Login,
|
Login = Login,
|
||||||
Email = Email,
|
Email = Email,
|
||||||
Password = Password,
|
Password = Password,
|
||||||
|
Role = Role,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -69,6 +69,7 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
ExecutionPhaseName = ExecutionPhaseName,
|
ExecutionPhaseName = ExecutionPhaseName,
|
||||||
ImplementerFIO = ImplementerFIO,
|
ImplementerFIO = ImplementerFIO,
|
||||||
ClientId = ClientId,
|
ClientId = ClientId,
|
||||||
|
ClientLogin = Client.Login,
|
||||||
Status = Status,
|
Status = Status,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
116
Factory/FactoryDatabaseImplement/Models/Machine.cs
Normal file
116
Factory/FactoryDatabaseImplement/Models/Machine.cs
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
using FactoryContracts.BindingModels;
|
||||||
|
using FactoryContracts.ViewModels;
|
||||||
|
using FactoryDataModels.Models;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace FactoryDatabaseImplement.Models
|
||||||
|
{
|
||||||
|
public class Machine : IMachineModel
|
||||||
|
{
|
||||||
|
public int Id { get; private set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int ClientId { get; private set; }
|
||||||
|
|
||||||
|
public virtual Client Client { get; private set; } = new();
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string MachineName { get; private set; } = string.Empty;
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public DateTime ExploitationStartDate { get; private set; } = DateTime.Now;
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int Lifetime { get; private set; }
|
||||||
|
|
||||||
|
public Dictionary<int, (IPlanProductionModel, int)> _machinePlanProductions { get; private set; } = new();
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
public Dictionary<int, (IPlanProductionModel, int)> MachinePlanProductions
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_machinePlanProductions == null)
|
||||||
|
{
|
||||||
|
_machinePlanProductions = PlanProductions
|
||||||
|
.ToDictionary(recPC => recPC.PlanProductionId, recPC => (recPC.PlanProduction as IPlanProductionModel, recPC.Count));
|
||||||
|
}
|
||||||
|
return _machinePlanProductions;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
[ForeignKey("MachineId")]
|
||||||
|
public virtual List<MachinePlanProduction> PlanProductions { get; private set; } = new();
|
||||||
|
|
||||||
|
[ForeignKey("MachineId")]
|
||||||
|
public virtual List<ProductMachine> Products { get; private set; } = new();
|
||||||
|
|
||||||
|
public static Machine Create(FactoryDatabase context, MachineBindingModel model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new Machine()
|
||||||
|
{
|
||||||
|
Id = model.Id,
|
||||||
|
ClientId = model.ClientId,
|
||||||
|
MachineName = model.MachineName,
|
||||||
|
ExploitationStartDate = model.ExploitationStartDate,
|
||||||
|
Lifetime = model.Lifetime,
|
||||||
|
PlanProductions = model.MachinePlanProductions.Select(x => new MachinePlanProduction
|
||||||
|
{
|
||||||
|
PlanProduction = context.PlanProductions.First(y => y.Id == x.Key),
|
||||||
|
Count = x.Value.Item2
|
||||||
|
}).ToList()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update(MachineBindingModel model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
MachineName = model.MachineName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MachineViewModel GetViewModel => new()
|
||||||
|
{
|
||||||
|
Id = Id,
|
||||||
|
ClientId = ClientId,
|
||||||
|
MachineName = MachineName,
|
||||||
|
ExploitationStartDate = ExploitationStartDate,
|
||||||
|
Lifetime = Lifetime,
|
||||||
|
ClientLogin = Client.Login,
|
||||||
|
MachinePlanProductions = MachinePlanProductions,
|
||||||
|
};
|
||||||
|
public void UpdatePlanProductions(FactoryDatabase context, MachineBindingModel model)
|
||||||
|
{
|
||||||
|
var machinePlanProductions = context.MachinePlanProductions.Where(rec => rec.MachineId == model.Id).ToList();
|
||||||
|
if (machinePlanProductions != null && machinePlanProductions.Count > 0)
|
||||||
|
{
|
||||||
|
context.MachinePlanProductions.RemoveRange(machinePlanProductions.Where(rec => !model.MachinePlanProductions.ContainsKey(rec.PlanProductionId)));
|
||||||
|
context.SaveChanges();
|
||||||
|
foreach (var updatePlanProduction in machinePlanProductions)
|
||||||
|
{
|
||||||
|
updatePlanProduction.Count = model.MachinePlanProductions[updatePlanProduction.PlanProductionId].Item2;
|
||||||
|
model.MachinePlanProductions.Remove(updatePlanProduction.PlanProductionId);
|
||||||
|
}
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
var machine = context.Machines.First(x => x.Id == Id);
|
||||||
|
foreach (var pc in model.MachinePlanProductions)
|
||||||
|
{
|
||||||
|
context.MachinePlanProductions.Add(new MachinePlanProduction
|
||||||
|
{
|
||||||
|
Machine = machine,
|
||||||
|
PlanProduction = context.PlanProductions.First(x => x.Id == pc.Key),
|
||||||
|
Count = pc.Value.Item2
|
||||||
|
});
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
_machinePlanProductions = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -6,13 +6,17 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
//[Required]
|
[Required]
|
||||||
//public int MachineId { get; set; }
|
public int MachineId { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
public int PlanProductionId { get; set; }
|
public int PlanProductionId { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int Count { get; set; }
|
||||||
|
|
||||||
public virtual PlanProduction PlanProduction { get; set; } = new();
|
public virtual PlanProduction PlanProduction { get; set; } = new();
|
||||||
|
|
||||||
//public virtual Machine Machine{ get; set; } = new();
|
public virtual Machine Machine { get; set; } = new();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -22,7 +22,7 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
[Required]
|
[Required]
|
||||||
public int Count { get; private set; }
|
public int Count { get; private set; }
|
||||||
[Required]
|
[Required]
|
||||||
public DateTime Term { get; private set; }
|
public DateTime Deadline { get; private set; }
|
||||||
|
|
||||||
private Dictionary<int, (IWorkpieceModel, int)>? _planProductionWorkpieces = null;
|
private Dictionary<int, (IWorkpieceModel, int)>? _planProductionWorkpieces = null;
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
Count = model.Count,
|
Count = model.Count,
|
||||||
ExecutionPhaseId = model.ExecutionPhaseId,
|
ExecutionPhaseId = model.ExecutionPhaseId,
|
||||||
ProductionName = model.ProductionName,
|
ProductionName = model.ProductionName,
|
||||||
Term = model.Term,
|
Deadline = model.Deadline,
|
||||||
Workpieces = model.PlanProductionWorkpieces.Select(x => new PlanProductionWorkpiece
|
Workpieces = model.PlanProductionWorkpieces.Select(x => new PlanProductionWorkpiece
|
||||||
{
|
{
|
||||||
Workpiece = context.Workpieces.First(y => y.Id == x.Key),
|
Workpiece = context.Workpieces.First(y => y.Id == x.Key),
|
||||||
@ -75,7 +75,7 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
Count = model.Count;
|
Count = model.Count;
|
||||||
ExecutionPhaseId = model.ExecutionPhaseId;
|
ExecutionPhaseId = model.ExecutionPhaseId;
|
||||||
ProductionName = model.ProductionName;
|
ProductionName = model.ProductionName;
|
||||||
Term = model.Term;
|
Deadline = model.Deadline;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,9 +83,11 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
{
|
{
|
||||||
Id = Id,
|
Id = Id,
|
||||||
ClientId = ClientId,
|
ClientId = ClientId,
|
||||||
|
ClientLogin = Client.Login,
|
||||||
ExecutionPhaseId = ExecutionPhaseId,
|
ExecutionPhaseId = ExecutionPhaseId,
|
||||||
|
ExecutionPhaseName = ExecutionPhase.ExecutionPhaseName,
|
||||||
ProductionName = ProductionName,
|
ProductionName = ProductionName,
|
||||||
Term = Term,
|
Deadline = Deadline,
|
||||||
Count = Count,
|
Count = Count,
|
||||||
PlanProductionWorkpieces = PlanProductionWorkpieces
|
PlanProductionWorkpieces = PlanProductionWorkpieces
|
||||||
};
|
};
|
||||||
|
120
Factory/FactoryDatabaseImplement/Models/Product.cs
Normal file
120
Factory/FactoryDatabaseImplement/Models/Product.cs
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
using FactoryContracts.BindingModels;
|
||||||
|
using FactoryContracts.ViewModels;
|
||||||
|
using FactoryDataModels.Models;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace FactoryDatabaseImplement.Models
|
||||||
|
{
|
||||||
|
public class Product : IProductModel
|
||||||
|
{
|
||||||
|
public int Id { get; private set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int ClientId { get; private set; }
|
||||||
|
|
||||||
|
public virtual Client Client { get; private set; } = new();
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int RequirementId { get; private set; }
|
||||||
|
|
||||||
|
public virtual Requirement Requirement { get; private set; } = new();
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string ProductName { get; private set; } = string.Empty;
|
||||||
|
|
||||||
|
public double Price { get; private set; }
|
||||||
|
|
||||||
|
public Dictionary<int, (IMachineModel, int)> _productMachines { get; private set; } = new();
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
public Dictionary<int, (IMachineModel, int)> ProductMachines
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_productMachines == null)
|
||||||
|
{
|
||||||
|
_productMachines = Machines
|
||||||
|
.ToDictionary(recPC => recPC.MachineId, recPC => (recPC.Machine as IMachineModel, recPC.Count));
|
||||||
|
}
|
||||||
|
return _productMachines;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[ForeignKey("ProductId")]
|
||||||
|
public virtual List<ProductMachine> Machines { get; private set; } = new();
|
||||||
|
|
||||||
|
[ForeignKey("ProductId")]
|
||||||
|
public virtual List<WorkpieceProduct> Workpieces { get; private set; } = new();
|
||||||
|
|
||||||
|
public static Product Create(FactoryDatabase context, ProductBindingModel model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new Product()
|
||||||
|
{
|
||||||
|
Id = model.Id,
|
||||||
|
ClientId = model.ClientId,
|
||||||
|
RequirementId = model.RequirementId,
|
||||||
|
ProductName = model.ProductName,
|
||||||
|
Price = model.Price,
|
||||||
|
Machines = model.ProductMachines.Select(x => new ProductMachine
|
||||||
|
{
|
||||||
|
Machine = context.Machines.First(y => y.Id == x.Key),
|
||||||
|
Count = x.Value.Item2
|
||||||
|
}).ToList()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update(ProductBindingModel model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ProductName = model.ProductName;
|
||||||
|
Price = model.Price;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ProductViewModel GetViewModel => new()
|
||||||
|
{
|
||||||
|
Id = Id,
|
||||||
|
ClientId = ClientId,
|
||||||
|
RequirementId = RequirementId,
|
||||||
|
ProductName = ProductName,
|
||||||
|
ClientLogin = Client.Login,
|
||||||
|
RequirementName = Requirement.RequirementName,
|
||||||
|
Price = Price,
|
||||||
|
ProductMachines = ProductMachines,
|
||||||
|
};
|
||||||
|
public void UpdateMachines(FactoryDatabase context, ProductBindingModel model)
|
||||||
|
{
|
||||||
|
var productMachines = context.ProductMachines.Where(rec => rec.ProductId == model.Id).ToList();
|
||||||
|
if (productMachines != null && productMachines.Count > 0)
|
||||||
|
{
|
||||||
|
context.ProductMachines.RemoveRange(productMachines.Where(rec => !model.ProductMachines.ContainsKey(rec.MachineId)));
|
||||||
|
context.SaveChanges();
|
||||||
|
foreach (var updateMachine in productMachines)
|
||||||
|
{
|
||||||
|
updateMachine.Count = model.ProductMachines[updateMachine.MachineId].Item2;
|
||||||
|
model.ProductMachines.Remove(updateMachine.MachineId);
|
||||||
|
}
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
var machine = context.Machines.First(x => x.Id == Id);
|
||||||
|
foreach (var pc in model.ProductMachines)
|
||||||
|
{
|
||||||
|
context.ProductMachines.Add(new ProductMachine
|
||||||
|
{
|
||||||
|
Product = context.Products.First(x => x.Id == pc.Key),
|
||||||
|
Machine = machine,
|
||||||
|
Count = pc.Value.Item2
|
||||||
|
});
|
||||||
|
context.SaveChanges();
|
||||||
|
}
|
||||||
|
_productMachines = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
22
Factory/FactoryDatabaseImplement/Models/ProductMachine.cs
Normal file
22
Factory/FactoryDatabaseImplement/Models/ProductMachine.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace FactoryDatabaseImplement.Models
|
||||||
|
{
|
||||||
|
public class ProductMachine
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int ProductId { get; set; }
|
||||||
|
|
||||||
|
public virtual Product Product { get; set; } = new();
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int MachineId { get; set; }
|
||||||
|
|
||||||
|
public virtual Machine Machine { get; set; } = new();
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int Count { get; set; }
|
||||||
|
}
|
||||||
|
}
|
65
Factory/FactoryDatabaseImplement/Models/Requirement.cs
Normal file
65
Factory/FactoryDatabaseImplement/Models/Requirement.cs
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
using FactoryContracts.BindingModels;
|
||||||
|
using FactoryContracts.ViewModels;
|
||||||
|
using FactoryDataModels.Models;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace FactoryDatabaseImplement.Models
|
||||||
|
{
|
||||||
|
public class Requirement : IRequirementModel
|
||||||
|
{
|
||||||
|
public int Id { get; private set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int ClientId { get; private set; }
|
||||||
|
|
||||||
|
public virtual Client Client { get; private set; } = new();
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string RequirementName { get; private set; } = string.Empty;
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string Description { get; private set; } = string.Empty;
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public int Lifetime { get; private set; }
|
||||||
|
|
||||||
|
[ForeignKey("RequirementId")]
|
||||||
|
public virtual Product Product { get; private set; } = new();
|
||||||
|
|
||||||
|
public static Requirement Create(RequirementBindingModel model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new Requirement()
|
||||||
|
{
|
||||||
|
Id = model.Id,
|
||||||
|
RequirementName = model.RequirementName,
|
||||||
|
Description = model.Description,
|
||||||
|
Lifetime = model.Lifetime,
|
||||||
|
ClientId = model.ClientId,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Update(RequirementBindingModel model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
RequirementName = model.RequirementName;
|
||||||
|
Description = model.Description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RequirementViewModel GetViewModel => new()
|
||||||
|
{
|
||||||
|
Id = Id,
|
||||||
|
ClientId = ClientId,
|
||||||
|
RequirementName = RequirementName,
|
||||||
|
Lifetime = Lifetime,
|
||||||
|
ClientLogin = Client.Login,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -24,7 +24,7 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
private Dictionary<int, (IProductModel, int)>? _workpieceProducts = null;
|
private Dictionary<int, (IProductModel, int)>? _workpieceProducts = null;
|
||||||
|
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public Dictionary<int, (IWorkpieceModel, int)> WorkpieceProducts
|
public Dictionary<int, (IProductModel, int)> WorkpieceProducts
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
@ -51,7 +51,7 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
Cost = model.Cost,
|
Cost = model.Cost,
|
||||||
Material = model.Material,
|
Material = model.Material,
|
||||||
ClientId = model.ClientId,
|
ClientId = model.ClientId,
|
||||||
Products = model.WorkpiecesProducts.Select(x => new WorkpieceProduct
|
Products = model.WorkpieceProducts.Select(x => new WorkpieceProduct
|
||||||
{
|
{
|
||||||
Product = context.Products.First(y => y.Id == x.Key),
|
Product = context.Products.First(y => y.Id == x.Key),
|
||||||
Count = x.Value.Item2
|
Count = x.Value.Item2
|
||||||
@ -73,7 +73,8 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
Cost = Cost,
|
Cost = Cost,
|
||||||
Material = Material,
|
Material = Material,
|
||||||
ClientId = ClientId,
|
ClientId = ClientId,
|
||||||
WorkpiecesProducts = WorkpieceProducts
|
ClientLogin = Client.Login,
|
||||||
|
WorkpieceProducts = WorkpieceProducts
|
||||||
};
|
};
|
||||||
|
|
||||||
public void UpdateProducts(FactoryDatabase context, WorkpieceBindingModel model)
|
public void UpdateProducts(FactoryDatabase context, WorkpieceBindingModel model)
|
||||||
@ -81,17 +82,17 @@ namespace FactoryDatabaseImplement.Models
|
|||||||
var workpieceProducts = context.WorkpieceProducts.Where(rec => rec.WorkpieceId == model.Id).ToList();
|
var workpieceProducts = context.WorkpieceProducts.Where(rec => rec.WorkpieceId == model.Id).ToList();
|
||||||
if (workpieceProducts != null && workpieceProducts.Count > 0)
|
if (workpieceProducts != null && workpieceProducts.Count > 0)
|
||||||
{
|
{
|
||||||
context.WorkpieceProducts.RemoveRange(workpieceProducts.Where(rec => !model.WorkpiecesProducts.ContainsKey(rec.ProductId)));
|
context.WorkpieceProducts.RemoveRange(workpieceProducts.Where(rec => !model.WorkpieceProducts.ContainsKey(rec.ProductId)));
|
||||||
context.SaveChanges();
|
context.SaveChanges();
|
||||||
foreach (var updateProduct in workpieceProducts)
|
foreach (var updateProduct in workpieceProducts)
|
||||||
{
|
{
|
||||||
updateProduct.Count = model.WorkComponents[updateProduct.ProductId].Item2;
|
updateProduct.Count = model.WorkpieceProducts[updateProduct.ProductId].Item2;
|
||||||
model.WorkpiecesProducts.Remove(updateProduct.ProductId);
|
model.WorkpieceProducts.Remove(updateProduct.ProductId);
|
||||||
}
|
}
|
||||||
context.SaveChanges();
|
context.SaveChanges();
|
||||||
}
|
}
|
||||||
var workpiece = context.Workpieces.First(x => x.Id == Id);
|
var workpiece = context.Workpieces.First(x => x.Id == Id);
|
||||||
foreach (var pc in model.WorkpiecesProducts)
|
foreach (var pc in model.WorkpieceProducts)
|
||||||
{
|
{
|
||||||
context.WorkpieceProducts.Add(new WorkpieceProduct
|
context.WorkpieceProducts.Add(new WorkpieceProduct
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user