Database/Implements

This commit is contained in:
ShabOl 2024-03-20 10:14:29 +04:00
parent 27449f920f
commit 56faadb0ad
4 changed files with 290 additions and 5 deletions

View File

@ -0,0 +1,81 @@
using AutoWorkshopContracts.BindingModels;
using AutoWorkshopContracts.SearchModels;
using AutoWorkshopContracts.StoragesContracts;
using AutoWorkshopContracts.ViewModels;
using AutoWorkshopDatabaseImplement.Models;
namespace AutoWorkshopDatabaseImplement.Implements
{
public class ComponentStorage : IComponentStorage
{
public List<ComponentViewModel> GetFullList()
{
using var Context = new AutoWorkshopDatabase();
return Context.Components.Select(x => x.GetViewModel).ToList();
}
public List<ComponentViewModel> GetFilteredList(ComponentSearchModel Model)
{
if (string.IsNullOrEmpty(Model.ComponentName))
return new();
using var Context = new AutoWorkshopDatabase();
return Context.Components
.Where(x => x.ComponentName.Contains(Model.ComponentName))
.Select(x => x.GetViewModel)
.ToList();
}
public ComponentViewModel? GetElement(ComponentSearchModel Model)
{
if (string.IsNullOrEmpty(Model.ComponentName) && !Model.Id.HasValue)
return null;
using var Context = new AutoWorkshopDatabase();
return Context.Components
.FirstOrDefault(x => (!string.IsNullOrEmpty(Model.ComponentName) && x.ComponentName == Model.ComponentName) ||
(Model.Id.HasValue && x.Id == Model.Id))?.GetViewModel;
}
public ComponentViewModel? Insert(ComponentBindingModel Model)
{
var NewComponent = Component.Create(Model);
if (NewComponent == null)
return null;
using var Context = new AutoWorkshopDatabase();
Context.Components.Add(NewComponent);
Context.SaveChanges();
return NewComponent.GetViewModel;
}
public ComponentViewModel? Update(ComponentBindingModel Model)
{
using var Context = new AutoWorkshopDatabase();
var Component = Context.Components.FirstOrDefault(x => x.Id == Model.Id);
if (Component == null)
return null;
Component.Update(Model);
Context.SaveChanges();
return Component.GetViewModel;
}
public ComponentViewModel? Delete(ComponentBindingModel Model)
{
using var Context = new AutoWorkshopDatabase();
var Component = Context.Components.FirstOrDefault(rec => rec.Id == Model.Id);
if (Component == null)
return null;
Context.Components.Remove(Component);
Context.SaveChanges();
return Component.GetViewModel;
}
}
}

View File

@ -0,0 +1,94 @@
using AutoWorkshopContracts.BindingModels;
using AutoWorkshopContracts.SearchModels;
using AutoWorkshopContracts.StoragesContracts;
using AutoWorkshopContracts.ViewModels;
using AutoWorkshopDatabaseImplement.Models;
using Microsoft.EntityFrameworkCore;
namespace AutoWorkshopDatabaseImplement.Implements
{
public class OrderStorage : IOrderStorage
{
public List<OrderViewModel> GetFullList()
{
using var Context = new AutoWorkshopDatabase();
return Context.Orders
.Include(x => x.Repair)
.Select(x => x.GetViewModel)
.ToList();
}
public List<OrderViewModel> GetFilteredList(OrderSearchModel Model)
{
if (!Model.Id.HasValue)
return new();
using var Context = new AutoWorkshopDatabase();
return Context.Orders
.Include(x => x.Repair)
.Where(x => x.Id == Model.Id)
.Select(x => x.GetViewModel)
.ToList();
}
public OrderViewModel? GetElement(OrderSearchModel Model)
{
if (!Model.Id.HasValue)
return new();
using var Context = new AutoWorkshopDatabase();
return Context.Orders
.Include(x => x.Repair)
.FirstOrDefault(x => x.Id == Model.Id)
?.GetViewModel;
}
public OrderViewModel? Insert(OrderBindingModel Model)
{
using var Context = new AutoWorkshopDatabase();
if (Model == null)
return null;
var NewOrder = Order.Create(Context, Model);
if (NewOrder == null)
return null;
Context.Orders.Add(NewOrder);
Context.SaveChanges();
return NewOrder.GetViewModel;
}
public OrderViewModel? Update(OrderBindingModel Model)
{
using var Context = new AutoWorkshopDatabase();
var Order = Context.Orders.FirstOrDefault(x => x.Id == Model.Id);
if (Order == null)
return null;
Order.Update(Model);
Context.SaveChanges();
return Order.GetViewModel;
}
public OrderViewModel? Delete(OrderBindingModel Model)
{
using var Context = new AutoWorkshopDatabase();
var Order = Context.Orders.FirstOrDefault(rec => rec.Id == Model.Id);
if (Order == null)
return null;
Context.Orders.Remove(Order);
Context.SaveChanges();
return Order.GetViewModel;
}
}
}

View File

@ -0,0 +1,109 @@
using AutoWorkshopContracts.BindingModels;
using AutoWorkshopContracts.SearchModels;
using AutoWorkshopContracts.StoragesContracts;
using AutoWorkshopContracts.ViewModels;
using AutoWorkshopDatabaseImplement.Models;
using Microsoft.EntityFrameworkCore;
namespace AutoWorkshopDatabaseImplement.Implements
{
public class RepairStorage : IRepairStorage
{
public List<RepairViewModel> GetFullList()
{
using var Context = new AutoWorkshopDatabase();
return Context.Repairs
.Include(x => x.Components)
.ThenInclude(x => x.Component)
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}
public List<RepairViewModel> GetFilteredList(RepairSearchModel Model)
{
if (string.IsNullOrEmpty(Model.RepairName))
return new();
using var Context = new AutoWorkshopDatabase();
return Context.Repairs
.Include(x => x.Components)
.ThenInclude(x => x.Component)
.Where(x => x.RepairName.Contains(Model.RepairName))
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}
public RepairViewModel? GetElement(RepairSearchModel Model)
{
if (string.IsNullOrEmpty(Model.RepairName) && !Model.Id.HasValue)
return null;
using var Context = new AutoWorkshopDatabase();
return Context.Repairs
.Include(x => x.Components)
.ThenInclude(x => x.Component)
.FirstOrDefault(x => (!string.IsNullOrEmpty(Model.RepairName) && x.RepairName == Model.RepairName) ||
(Model.Id.HasValue && x.Id == Model.Id))
?.GetViewModel;
}
public RepairViewModel? Insert(RepairBindingModel Model)
{
using var Context = new AutoWorkshopDatabase();
var NewRepair = Repair.Create(Context, Model);
if (NewRepair == null)
return null;
Context.Repairs.Add(NewRepair);
Context.SaveChanges();
return NewRepair.GetViewModel;
}
public RepairViewModel? Update(RepairBindingModel Model)
{
using var Context = new AutoWorkshopDatabase();
using var Transaction = Context.Database.BeginTransaction();
try
{
var Repair = Context.Repairs.FirstOrDefault(rec => rec.Id == Model.Id);
if (Repair == null)
return null;
Repair.Update(Model);
Context.SaveChanges();
Repair.UpdateComponents(Context, Model);
Transaction.Commit();
return Repair.GetViewModel;
}
catch
{
Transaction.Rollback();
throw;
}
}
public RepairViewModel? Delete(RepairBindingModel Model)
{
using var Context = new AutoWorkshopDatabase();
var Repair = Context.Repairs
.Include(x => x.Components)
.FirstOrDefault(rec => rec.Id == Model.Id);
if (Repair == null)
return null;
Context.Repairs.Remove(Repair);
Context.SaveChanges();
return Repair.GetViewModel;
}
}
}

View File

@ -16,18 +16,19 @@ namespace AutoWorkshopDatabaseImplement.Models
[Required]
public double Price { get; set; }
private Dictionary<int, (IComponentModel, int)>? _RepairComponents = null;
private Dictionary<int, (IComponentModel, int)>? _repairComponents = null;
[NotMapped]
public Dictionary<int, (IComponentModel, int)> RepairComponents
{
get
{
if (_RepairComponents == null)
if (_repairComponents == null)
{
_RepairComponents = Components.ToDictionary(recPC => recPC.ComponentId, recPC => (recPC.Component as IComponentModel, recPC.Count));
_repairComponents = Components.ToDictionary(RepComp => RepComp.ComponentId, RepComp =>
(RepComp.Component as IComponentModel, RepComp.Count));
}
return _RepairComponents;
return _repairComponents;
}
}
@ -98,7 +99,7 @@ namespace AutoWorkshopDatabaseImplement.Models
Context.SaveChanges();
}
_RepairComponents = null;
_repairComponents = null;
}
}
}