Сделал фикс ошибок + произоло добавление миграции, вроде все работает, пока что....

This commit is contained in:
Pyatkin I.A 2024-04-28 23:08:31 +04:00
parent 332e242336
commit 4463c8832f
21 changed files with 1731 additions and 3 deletions

View File

@ -11,6 +11,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FurnitureFactoryContracts",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FurnitureFactoryBusinessLogic", "FurnitureFactoryBusinessLogic\FurnitureFactoryBusinessLogic.csproj", "{F823EC86-06B1-4D50-BD39-85CF213F7A00}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FurnitureFactoryDataBaseImplement", "FurnitureFactoryDataBaseImplements\FurnitureFactoryDataBaseImplement.csproj", "{A68BD54C-88D5-4446-B61D-3A94AF07D69F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -33,6 +35,10 @@ Global
{F823EC86-06B1-4D50-BD39-85CF213F7A00}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F823EC86-06B1-4D50-BD39-85CF213F7A00}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F823EC86-06B1-4D50-BD39-85CF213F7A00}.Release|Any CPU.Build.0 = Release|Any CPU
{A68BD54C-88D5-4446-B61D-3A94AF07D69F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A68BD54C-88D5-4446-B61D-3A94AF07D69F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A68BD54C-88D5-4446-B61D-3A94AF07D69F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A68BD54C-88D5-4446-B61D-3A94AF07D69F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

View File

@ -20,6 +20,5 @@ namespace FurnitureFactoryContracts.BindingModels
public PaymentStatus PStatus { get; set; } = PaymentStatus.Неизвестно;
public DateTime DateCreate { get; set; } = DateTime.Now;
public DateTime? DateImplement { get; set; }
public Dictionary<int, (IFurnitureModel, int)> OrderFurnitures { get; set; } = new();
}
}

View File

@ -34,6 +34,5 @@ namespace FurnitureFactoryContracts.ViewModels
public DateTime DateCreate { get; set; } = DateTime.Now;
[DisplayName("Дата выполнения")]
public DateTime? DateImplement { get; set; }
public Dictionary<int, (IFurnitureModel, int)> OrderFurnitures { get; set; } = new();
}
}

View File

@ -0,0 +1,31 @@
using FurnitureFactoryDataBaseImplement.Models;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FurnitureFactoryDataBaseImplement
{
public class FurnitureFactoryDataBase : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder
optionsBuilder)
{
if (optionsBuilder.IsConfigured == false)
{
optionsBuilder.UseSqlServer(@"Data Source=SUNRISEPC;Initial Catalog=FurnitureFactoryDataBase;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True");
}
base.OnConfiguring(optionsBuilder);
}
public virtual DbSet<Material> Materials { set; get; }
public virtual DbSet<Furniture> Furnitures { set; get; }
public virtual DbSet<FurnitureMaterial> FurnitureMaterials { set; get; }
public virtual DbSet<Order> Orders { set; get; }
public virtual DbSet<Client> Clients { set; get; }
public virtual DbSet<Employee> Employees { set; get; }
}
}

View File

@ -0,0 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\FurnitureFactoryContracts\FurnitureFactoryContracts.csproj" />
<ProjectReference Include="..\FurnitureFactoryDataModels\FurnitureFactoryDataModels.csproj" />
</ItemGroup>
</Project>

View File

@ -0,0 +1,101 @@
using Microsoft.EntityFrameworkCore;
using FurnitureFactoryContracts.BindingModels;
using FurnitureFactoryContracts.SearchModels;
using FurnitureFactoryContracts.StorageContracts;
using FurnitureFactoryContracts.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FurnitureFactoryDataBaseImplement.Models;
namespace FurnitureFactoryDataBaseImplement.Implements
{
public class ClientStorage : IClientStorage
{
public List<ClientViewModel> GetFullList()
{
using var context = new FurnitureFactoryDataBase();
return context.Clients
.Include(x => x.Orders)
.Select(x => x.GetViewModel)
.ToList();
}
public List<ClientViewModel> GetFilteredList(ClientSearchModel model)
{
if (model == null)
{
return new();
}
if (!string.IsNullOrEmpty(model.Email))
{
using var context = new FurnitureFactoryDataBase();
return context.Clients
.Include(x => x.Orders)
.Where(x => x.Email.Contains(model.Email))
.Select(x => x.GetViewModel)
.ToList();
}
return new();
}
public ClientViewModel? GetElement(ClientSearchModel model)
{
using var context = new FurnitureFactoryDataBase();
if (model.Id.HasValue)
{
return context.Clients
.FirstOrDefault(x => (x.Id == model.Id))?.GetViewModel;
}
else if (!string.IsNullOrEmpty(model.Email) && !string.IsNullOrEmpty(model.Password))
{
return context.Clients
.FirstOrDefault(x => (x.Email == model.Email && x.Password == model.Password))?.GetViewModel;
}
return new();
}
public ClientViewModel? Insert(ClientBindingModel model)
{
var newClient = Client.Create(model);
if (newClient == null)
{
return null;
}
using var context = new FurnitureFactoryDataBase();
context.Clients.Add(newClient);
context.SaveChanges();
return newClient.GetViewModel;
}
public ClientViewModel? Update(ClientBindingModel model)
{
using var context = new FurnitureFactoryDataBase();
var client = context.Clients.FirstOrDefault(x => x.Id == model.Id);
if (client == null)
{
return null;
}
client.Update(model);
context.SaveChanges();
return client.GetViewModel;
}
public ClientViewModel? Delete(ClientBindingModel model)
{
using var context = new FurnitureFactoryDataBase();
var element = context.Clients
.Include(x => x.Orders)
.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Clients.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
}

View File

@ -0,0 +1,95 @@
using FurnitureFactoryContracts.BindingModels;
using FurnitureFactoryContracts.SearchModels;
using FurnitureFactoryContracts.StorageContracts;
using FurnitureFactoryContracts.ViewModels;
using FurnitureFactoryDataBaseImplement.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FurnitureFactoryDataBaseImplement.Implements
{
public class EmployeeStorage : IEmployeeStorage
{
public EmployeeViewModel? Delete(EmployeeBindingModel model)
{
using var context = new FurnitureFactoryDataBase();
var res = context.Employees.FirstOrDefault(x => x.Id == model.Id);
if (res != null)
{
context.Employees.Remove(res);
context.SaveChanges();
}
return res?.GetViewModel;
}
public EmployeeViewModel? GetElement(EmployeeSearchModel model)
{
using var context = new FurnitureFactoryDataBase();
if (model.Id.HasValue)
return context.Employees.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel;
if (model.EmployeeFIO != null && model.Password != null)
return context.Employees
.FirstOrDefault(x => x.EmployeeFIO.Equals(model.EmployeeFIO)
&& x.Password.Equals(model.Password))
?.GetViewModel;
if (model.EmployeeFIO != null)
return context.Employees.FirstOrDefault(x => x.EmployeeFIO.Equals(model.EmployeeFIO))?.GetViewModel;
return null;
}
public List<EmployeeViewModel> GetFilteredList(EmployeeSearchModel model)
{
if (model == null)
{
return new();
}
if (model.Id.HasValue)
{
var res = GetElement(model);
return res != null ? new() { res } : new();
}
if (model.EmployeeFIO != null)
{
using var context = new FurnitureFactoryDataBase();
return context.Employees
.Where(x => x.EmployeeFIO.Equals(model.EmployeeFIO))
.Select(x => x.GetViewModel)
.ToList();
}
return new();
}
public List<EmployeeViewModel> GetFullList()
{
using var context = new FurnitureFactoryDataBase();
return context.Employees.Select(x => x.GetViewModel).ToList();
}
public EmployeeViewModel? Insert(EmployeeBindingModel model)
{
using var context = new FurnitureFactoryDataBase();
var res = Employee.Create(model);
if (res != null)
{
context.Employees.Add(res);
context.SaveChanges();
}
return res?.GetViewModel;
}
public EmployeeViewModel? Update(EmployeeBindingModel model)
{
using var context = new FurnitureFactoryDataBase();
var res = context.Employees.FirstOrDefault(x => x.Id == model.Id);
if (res != null)
{
res.Update(model);
context.SaveChanges();
}
return res?.GetViewModel;
}
}
}

View File

@ -0,0 +1,109 @@
using Microsoft.EntityFrameworkCore;
using FurnitureFactoryContracts.BindingModels;
using FurnitureFactoryContracts.SearchModels;
using FurnitureFactoryContracts.StorageContracts;
using FurnitureFactoryContracts.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FurnitureFactoryDataBaseImplement.Models;
namespace FurnitureFactoryDataBaseImplement.Implements
{
public class FurnitureStorage : IFurnitureStorage
{
public List<FurnitureViewModel> GetFullList()
{
using var context = new FurnitureFactoryDataBase();
return context.Furnitures
.Include(x => x.Materials)
.ThenInclude(x => x.Material)
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}
public List<FurnitureViewModel> GetFilteredList(FurnitureSearchModel model)
{
if (string.IsNullOrEmpty(model.FurnitureName))
{
return new();
}
using var context = new FurnitureFactoryDataBase();
return context.Furnitures.Include(x => x.Materials)
.ThenInclude(x => x.Material)
.Where(x => x.FurnitureName.Contains(model.FurnitureName))
.ToList()
.Select(x => x.GetViewModel)
.ToList();
}
public FurnitureViewModel? GetElement(FurnitureSearchModel model)
{
if (string.IsNullOrEmpty(model.FurnitureName) &&
!model.Id.HasValue)
{
return null;
}
using var context = new FurnitureFactoryDataBase();
return context.Furnitures
.Include(x => x.Materials)
.ThenInclude(x => x.Material)
.FirstOrDefault(x => (!string.IsNullOrEmpty(model.FurnitureName) &&
x.FurnitureName == model.FurnitureName) ||
(model.Id.HasValue && x.Id ==
model.Id))
?.GetViewModel;
}
public FurnitureViewModel? Insert(FurnitureBindingModel model)
{
using var context = new FurnitureFactoryDataBase();
var newFurniture = Furniture.Create(context, model);
if (newFurniture == null)
{
return null;
}
context.Furnitures.Add(newFurniture);
context.SaveChanges();
return newFurniture.GetViewModel;
}
public FurnitureViewModel? Update(FurnitureBindingModel model)
{
using var context = new FurnitureFactoryDataBase();
using var transaction = context.Database.BeginTransaction();
try
{
var Furniture = context.Furnitures.FirstOrDefault(rec =>
rec.Id == model.Id);
if (Furniture == null)
{
return null;
}
Furniture.Update(model);
context.SaveChanges();
Furniture.UpdateMaterials(context, model);
transaction.Commit();
return Furniture.GetViewModel;
}
catch
{
transaction.Rollback();
throw;
}
}
public FurnitureViewModel? Delete(FurnitureBindingModel model)
{
using var context = new FurnitureFactoryDataBase();
var element = context.Furnitures
.Include(x => x.Materials)
.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Furnitures.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
}

View File

@ -0,0 +1,90 @@
using FurnitureFactoryContracts.BindingModels;
using FurnitureFactoryContracts.SearchModels;
using FurnitureFactoryContracts.StorageContracts;
using FurnitureFactoryContracts.ViewModels;
using FurnitureFactoryDataBaseImplement.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FurnitureFactoryDataBaseImplement.Implements
{
public class MaterialStorage : IMaterialStorage
{
public List<MaterialViewModel> GetFullList()
{
using var context = new FurnitureFactoryDataBase();
return context.Materials
.Select(x => x.GetViewModel)
.ToList();
}
public List<MaterialViewModel> GetFilteredList(MaterialSearchModel
model)
{
if (string.IsNullOrEmpty(model.MaterialName))
{
return new();
}
using var context = new FurnitureFactoryDataBase();
return context.Materials
.Where(x => x.MaterialName.Contains(model.MaterialName))
.Select(x => x.GetViewModel)
.ToList();
}
public MaterialViewModel? GetElement(MaterialSearchModel model)
{
if (string.IsNullOrEmpty(model.MaterialName) && !model.Id.HasValue)
{
return null;
}
using var context = new FurnitureFactoryDataBase();
return context.Materials
.FirstOrDefault(x =>
(!string.IsNullOrEmpty(model.MaterialName) && x.MaterialName ==
model.MaterialName) ||
(model.Id.HasValue && x.Id == model.Id))
?.GetViewModel;
}
public MaterialViewModel? Insert(MaterialBindingModel model)
{
var newMaterial = Material.Create(model);
if (newMaterial == null)
{
return null;
}
using var context = new FurnitureFactoryDataBase();
context.Materials.Add(newMaterial);
context.SaveChanges();
return newMaterial.GetViewModel;
}
public MaterialViewModel? Update(MaterialBindingModel model)
{
using var context = new FurnitureFactoryDataBase();
var material = context.Materials.FirstOrDefault(x => x.Id ==
model.Id);
if (material == null)
{
return null;
}
material.Update(model);
context.SaveChanges();
return material.GetViewModel;
}
public MaterialViewModel? Delete(MaterialBindingModel model)
{
using var context = new FurnitureFactoryDataBase();
var element = context.Materials.FirstOrDefault(rec => rec.Id ==
model.Id);
if (element != null)
{
context.Materials.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
}

View File

@ -0,0 +1,127 @@
using FurnitureFactoryContracts.BindingModels;
using FurnitureFactoryContracts.SearchModels;
using FurnitureFactoryContracts.StorageContracts;
using FurnitureFactoryContracts.ViewModels;
using FurnitureFactoryDataBaseImplement.Models;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FurnitureFactoryDataBaseImplement.Implements
{
public class OrderStorage : IOrderStorage
{
public List<OrderViewModel> GetFullList()
{
using var context = new FurnitureFactoryDataBase();
return context.Orders
.Include(x => x.Furniture).Include(x => x.Client).Include(x => x.Employee).Select(x => x.GetViewModel).ToList();
}
public List<OrderViewModel> GetFilteredList(OrderSearchModel model)
{
if (model.Id.HasValue)
{
var result = GetElement(model);
return result != null ? new() { result } : new();
}
using var context = new FurnitureFactoryDataBase();
IQueryable<Order>? queryWhere = null;
if (model.DateFrom.HasValue && model.DateTo.HasValue)
{
queryWhere = context.Orders
.Where(x => model.DateFrom <= x.DateCreate.Date &&
x.DateCreate.Date <= model.DateTo);
}
else if (model.OStatuses != null && model.PStatuses != null)
{
queryWhere = context.Orders.Where(x => model.OStatuses.Contains(x.OStatus));
queryWhere = context.Orders.Where(x => model.PStatuses.Contains(x.PStatus));
}
else if (model.ClientId.HasValue)
{
queryWhere = context.Orders.Where(x => x.ClientId == model.ClientId);
}
else
{
return new();
}
return queryWhere
.Include(x => x.Client)
.Include(x => x.Employee)
.Select(x => x.GetViewModel)
.ToList();
}
public OrderViewModel? GetElement(OrderSearchModel model)
{
if (!model.Id.HasValue)
{
return null;
}
using var context = new FurnitureFactoryDataBase();
return context.Orders.Include(x => x.Client).Include(x => x.Employee).FirstOrDefault(x =>
(model.OStatuses == null || model.OStatuses != null && model.OStatuses.Contains(x.OStatus)) && model.PStatuses == null || model.PStatuses != null && model.PStatuses.Contains(x.PStatus) &&
model.EmployeeId.HasValue && x.EmployeeId == model.EmployeeId ||
model.Id.HasValue && x.Id == model.Id
)?.GetViewModel;
}
public OrderViewModel? Insert(OrderBindingModel model)
{
var newOrder = Order.Create(model);
if (newOrder == null)
{
return null;
}
using var context = new FurnitureFactoryDataBase();
context.Orders.Add(newOrder);
context.SaveChanges();
return newOrder.GetViewModel;
}
public OrderViewModel? Update(OrderBindingModel model)
{
using var context = new FurnitureFactoryDataBase();
var order = context.Orders
.Include(x => x.Furniture)
.Include(x => x.Client)
.Include(x => x.Employee)
.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 FurnitureFactoryDataBase();
var element = context.Orders
.Include(x => x.Furniture)
.Include(x => x.Client)
.Include(x => x.Employee)
.FirstOrDefault(rec => rec.Id == model.Id);
if (element != null)
{
context.Orders.Remove(element);
context.SaveChanges();
return element.GetViewModel;
}
return null;
}
}
}

View File

@ -0,0 +1,264 @@
// <auto-generated />
using System;
using FurnitureFactoryDataBaseImplement;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace FurnitureFactoryDataBaseImplement.Migrations
{
[DbContext(typeof(FurnitureFactoryDataBase))]
[Migration("20240428190428_InitialCreate")]
partial class InitialCreate
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.3")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Client", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("ClientFIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Clients");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Employee", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("EmployeeFIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("Qualification")
.HasColumnType("int");
b.Property<int>("WorkExperience")
.HasColumnType("int");
b.HasKey("Id");
b.ToTable("Employees");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Furniture", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("FurnitureName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<double>("FurniturePrice")
.HasColumnType("float");
b.HasKey("Id");
b.ToTable("Furnitures");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.FurnitureMaterial", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("Count")
.HasColumnType("int");
b.Property<int>("FurnitureId")
.HasColumnType("int");
b.Property<int>("MaterialId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("FurnitureId");
b.HasIndex("MaterialId");
b.ToTable("FurnitureMaterials");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Material", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<double>("MaterialCost")
.HasColumnType("float");
b.Property<string>("MaterialName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Materials");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Order", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("ClientId")
.HasColumnType("int");
b.Property<DateTime>("DateCreate")
.HasColumnType("datetime2");
b.Property<DateTime?>("DateImplement")
.HasColumnType("datetime2");
b.Property<int?>("EmployeeId")
.HasColumnType("int");
b.Property<int>("FurnitureCount")
.HasColumnType("int");
b.Property<int>("FurnitureId")
.HasColumnType("int");
b.Property<int>("OStatus")
.HasColumnType("int");
b.Property<double>("OrderPrice")
.HasColumnType("float");
b.Property<int>("PStatus")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ClientId");
b.HasIndex("EmployeeId");
b.HasIndex("FurnitureId");
b.ToTable("Orders");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.FurnitureMaterial", b =>
{
b.HasOne("FurnitureFactoryDataBaseImplement.Models.Furniture", "Furniture")
.WithMany("Materials")
.HasForeignKey("FurnitureId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("FurnitureFactoryDataBaseImplement.Models.Material", "Material")
.WithMany("FurnitureMaterials")
.HasForeignKey("MaterialId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Furniture");
b.Navigation("Material");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Order", b =>
{
b.HasOne("FurnitureFactoryDataBaseImplement.Models.Client", "Client")
.WithMany("Orders")
.HasForeignKey("ClientId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("FurnitureFactoryDataBaseImplement.Models.Employee", "Employee")
.WithMany("Orders")
.HasForeignKey("EmployeeId");
b.HasOne("FurnitureFactoryDataBaseImplement.Models.Furniture", "Furniture")
.WithMany("Orders")
.HasForeignKey("FurnitureId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Client");
b.Navigation("Employee");
b.Navigation("Furniture");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Client", b =>
{
b.Navigation("Orders");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Employee", b =>
{
b.Navigation("Orders");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Furniture", b =>
{
b.Navigation("Materials");
b.Navigation("Orders");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Material", b =>
{
b.Navigation("FurnitureMaterials");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,187 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace FurnitureFactoryDataBaseImplement.Migrations
{
/// <inheritdoc />
public partial class InitialCreate : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Clients",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ClientFIO = table.Column<string>(type: "nvarchar(max)", nullable: false),
Email = table.Column<string>(type: "nvarchar(max)", nullable: false),
Password = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Clients", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Employees",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
EmployeeFIO = table.Column<string>(type: "nvarchar(max)", nullable: false),
Email = table.Column<string>(type: "nvarchar(max)", nullable: false),
Password = table.Column<string>(type: "nvarchar(max)", nullable: false),
WorkExperience = table.Column<int>(type: "int", nullable: false),
Qualification = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Employees", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Furnitures",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
FurnitureName = table.Column<string>(type: "nvarchar(max)", nullable: false),
FurniturePrice = table.Column<double>(type: "float", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Furnitures", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Materials",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
MaterialName = table.Column<string>(type: "nvarchar(max)", nullable: false),
MaterialCost = table.Column<double>(type: "float", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Materials", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Orders",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ClientId = table.Column<int>(type: "int", nullable: false),
EmployeeId = table.Column<int>(type: "int", nullable: true),
FurnitureCount = table.Column<int>(type: "int", nullable: false),
OrderPrice = table.Column<double>(type: "float", nullable: false),
OStatus = table.Column<int>(type: "int", nullable: false),
PStatus = table.Column<int>(type: "int", nullable: false),
DateCreate = table.Column<DateTime>(type: "datetime2", nullable: false),
DateImplement = table.Column<DateTime>(type: "datetime2", nullable: true),
FurnitureId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Orders", x => x.Id);
table.ForeignKey(
name: "FK_Orders_Clients_ClientId",
column: x => x.ClientId,
principalTable: "Clients",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Orders_Employees_EmployeeId",
column: x => x.EmployeeId,
principalTable: "Employees",
principalColumn: "Id");
table.ForeignKey(
name: "FK_Orders_Furnitures_FurnitureId",
column: x => x.FurnitureId,
principalTable: "Furnitures",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "FurnitureMaterials",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
FurnitureId = table.Column<int>(type: "int", nullable: false),
MaterialId = table.Column<int>(type: "int", nullable: false),
Count = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_FurnitureMaterials", x => x.Id);
table.ForeignKey(
name: "FK_FurnitureMaterials_Furnitures_FurnitureId",
column: x => x.FurnitureId,
principalTable: "Furnitures",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_FurnitureMaterials_Materials_MaterialId",
column: x => x.MaterialId,
principalTable: "Materials",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_FurnitureMaterials_FurnitureId",
table: "FurnitureMaterials",
column: "FurnitureId");
migrationBuilder.CreateIndex(
name: "IX_FurnitureMaterials_MaterialId",
table: "FurnitureMaterials",
column: "MaterialId");
migrationBuilder.CreateIndex(
name: "IX_Orders_ClientId",
table: "Orders",
column: "ClientId");
migrationBuilder.CreateIndex(
name: "IX_Orders_EmployeeId",
table: "Orders",
column: "EmployeeId");
migrationBuilder.CreateIndex(
name: "IX_Orders_FurnitureId",
table: "Orders",
column: "FurnitureId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "FurnitureMaterials");
migrationBuilder.DropTable(
name: "Orders");
migrationBuilder.DropTable(
name: "Materials");
migrationBuilder.DropTable(
name: "Clients");
migrationBuilder.DropTable(
name: "Employees");
migrationBuilder.DropTable(
name: "Furnitures");
}
}
}

View File

@ -0,0 +1,261 @@
// <auto-generated />
using System;
using FurnitureFactoryDataBaseImplement;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace FurnitureFactoryDataBaseImplement.Migrations
{
[DbContext(typeof(FurnitureFactoryDataBase))]
partial class FurnitureFactoryDataBaseModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.3")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Client", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("ClientFIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Clients");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Employee", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("EmployeeFIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("Qualification")
.HasColumnType("int");
b.Property<int>("WorkExperience")
.HasColumnType("int");
b.HasKey("Id");
b.ToTable("Employees");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Furniture", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("FurnitureName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<double>("FurniturePrice")
.HasColumnType("float");
b.HasKey("Id");
b.ToTable("Furnitures");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.FurnitureMaterial", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("Count")
.HasColumnType("int");
b.Property<int>("FurnitureId")
.HasColumnType("int");
b.Property<int>("MaterialId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("FurnitureId");
b.HasIndex("MaterialId");
b.ToTable("FurnitureMaterials");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Material", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<double>("MaterialCost")
.HasColumnType("float");
b.Property<string>("MaterialName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Materials");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Order", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("ClientId")
.HasColumnType("int");
b.Property<DateTime>("DateCreate")
.HasColumnType("datetime2");
b.Property<DateTime?>("DateImplement")
.HasColumnType("datetime2");
b.Property<int?>("EmployeeId")
.HasColumnType("int");
b.Property<int>("FurnitureCount")
.HasColumnType("int");
b.Property<int>("FurnitureId")
.HasColumnType("int");
b.Property<int>("OStatus")
.HasColumnType("int");
b.Property<double>("OrderPrice")
.HasColumnType("float");
b.Property<int>("PStatus")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ClientId");
b.HasIndex("EmployeeId");
b.HasIndex("FurnitureId");
b.ToTable("Orders");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.FurnitureMaterial", b =>
{
b.HasOne("FurnitureFactoryDataBaseImplement.Models.Furniture", "Furniture")
.WithMany("Materials")
.HasForeignKey("FurnitureId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("FurnitureFactoryDataBaseImplement.Models.Material", "Material")
.WithMany("FurnitureMaterials")
.HasForeignKey("MaterialId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Furniture");
b.Navigation("Material");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Order", b =>
{
b.HasOne("FurnitureFactoryDataBaseImplement.Models.Client", "Client")
.WithMany("Orders")
.HasForeignKey("ClientId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("FurnitureFactoryDataBaseImplement.Models.Employee", "Employee")
.WithMany("Orders")
.HasForeignKey("EmployeeId");
b.HasOne("FurnitureFactoryDataBaseImplement.Models.Furniture", "Furniture")
.WithMany("Orders")
.HasForeignKey("FurnitureId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Client");
b.Navigation("Employee");
b.Navigation("Furniture");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Client", b =>
{
b.Navigation("Orders");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Employee", b =>
{
b.Navigation("Orders");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Furniture", b =>
{
b.Navigation("Materials");
b.Navigation("Orders");
});
modelBuilder.Entity("FurnitureFactoryDataBaseImplement.Models.Material", b =>
{
b.Navigation("FurnitureMaterials");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,64 @@
using FurnitureFactoryContracts.BindingModels;
using FurnitureFactoryContracts.ViewModels;
using FurnitureFactoryDataModels.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FurnitureFactoryDataBaseImplement.Models
{
public class Client : IClientModel
{
public int Id { get; set; }
[Required]
public string ClientFIO { get; set; } = string.Empty;
[Required]
public string Email { get; set; } = string.Empty;
[Required]
public string Password { get; set; } = string.Empty;
[ForeignKey("ClientId")]
public virtual List<Order> Orders { get; set; } = new();
public static Client? Create(ClientBindingModel? model)
{
if (model == null)
{
return null;
}
return new Client()
{
Id = model.Id,
ClientFIO = model.ClientFIO,
Email = model.Email,
Password = model.Password
};
}
public void Update(ClientBindingModel? model)
{
if (model == null)
{
return;
}
ClientFIO = model.ClientFIO;
Email = model.Email;
Password = model.Password;
}
public ClientViewModel GetViewModel => new()
{
Id = Id,
ClientFIO = ClientFIO,
Email = Email,
Password = Password
};
}
}

View File

@ -0,0 +1,75 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FurnitureFactoryDataModels.Models;
using FurnitureFactoryContracts.BindingModels;
using FurnitureFactoryContracts.ViewModels;
namespace FurnitureFactoryDataBaseImplement.Models
{
public class Employee : IEmployeeModel
{
public int Id { get; private set; }
[Required]
public string EmployeeFIO { get; private set; } = string.Empty;
[Required]
public string Email { get; private set; } = string.Empty;
[Required]
public string Password { get; private set; } = string.Empty;
[Required]
public int WorkExperience { get; private set; }
[Required]
public int Qualification { get; private set; }
[ForeignKey("EmployeeId")]
public virtual List<Order> Orders { get; set; } = new();
public static Employee? Create(EmployeeBindingModel model)
{
if (model == null)
{
return null;
}
return new Employee()
{
Id = model.Id,
EmployeeFIO = model.EmployeeFIO,
Email = model.Email,
Password = model.Password,
WorkExperience = model.WorkExperience,
Qualification = model.Qualification,
};
}
public void Update(EmployeeBindingModel model)
{
if (model == null)
{
return;
}
EmployeeFIO = model.EmployeeFIO;
Email = model.Email;
Password = model.Password;
WorkExperience = model.WorkExperience;
Qualification = model.Qualification;
}
public EmployeeViewModel GetViewModel => new()
{
Id = Id,
EmployeeFIO = EmployeeFIO,
Email = Email,
Password = Password,
WorkExperience = WorkExperience,
Qualification = Qualification,
};
}
}

View File

@ -0,0 +1,102 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FurnitureFactoryDataModels.Models;
using FurnitureFactoryContracts.BindingModels;
using FurnitureFactoryContracts.ViewModels;
namespace FurnitureFactoryDataBaseImplement.Models
{
public class Furniture : IFurnitureModel
{
public int Id { get; set; }
[Required]
public string FurnitureName { get; set; } = string.Empty;
[Required]
public double FurniturePrice { get; set; }
private Dictionary<int, (IMaterialModel, int)>? _FurnitureMaterials =
null;
[NotMapped]
public Dictionary<int, (IMaterialModel, int)> FurnitureMaterials
{
get
{
if (_FurnitureMaterials == null)
{
_FurnitureMaterials = Materials
.ToDictionary(recPC => recPC.MaterialId, recPC =>
(recPC.Material as IMaterialModel, recPC.Count));
}
return _FurnitureMaterials;
}
}
[ForeignKey("FurnitureId")]
public virtual List<FurnitureMaterial> Materials { get; set; } = new();
[ForeignKey("FurnitureId")]
public virtual List<Order> Orders { get; set; } = new();
public static Furniture Create(FurnitureFactoryDataBase context,
FurnitureBindingModel model)
{
return new Furniture()
{
Id = model.Id,
FurnitureName = model.FurnitureName,
FurniturePrice = model.FurniturePrice,
Materials = model.FurnitureMaterials.Select(x => new
FurnitureMaterial
{
Material = context.Materials.First(y => y.Id == x.Key),
Count = x.Value.Item2
}).ToList()
};
}
public void Update(FurnitureBindingModel model)
{
FurnitureName = model.FurnitureName;
FurniturePrice = model.FurniturePrice;
}
public FurnitureViewModel GetViewModel => new()
{
Id = Id,
FurnitureName = FurnitureName,
FurniturePrice = FurniturePrice,
FurnitureMaterials = FurnitureMaterials
};
public void UpdateMaterials(FurnitureFactoryDataBase context,
FurnitureBindingModel model)
{
var FurnitureMaterials = context.FurnitureMaterials.Where(rec =>
rec.FurnitureId == model.Id).ToList();
if (FurnitureMaterials != null && FurnitureMaterials.Count > 0)
{
context.FurnitureMaterials.RemoveRange(FurnitureMaterials.Where(rec
=> !model.FurnitureMaterials.ContainsKey(rec.MaterialId)));
context.SaveChanges();
foreach (var updateMaterial in FurnitureMaterials)
{
updateMaterial.Count =
model.FurnitureMaterials[updateMaterial.MaterialId].Item2;
model.FurnitureMaterials.Remove(updateMaterial.MaterialId);
}
context.SaveChanges();
}
var Furniture = context.Furnitures.First(x => x.Id == Id);
foreach (var pc in model.FurnitureMaterials)
{
context.FurnitureMaterials.Add(new FurnitureMaterial
{
Furniture = Furniture,
Material = context.Materials.First(x => x.Id == pc.Key),
Count = pc.Value.Item2
});
context.SaveChanges();
}
_FurnitureMaterials = null;
}
}
}

View File

@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FurnitureFactoryDataBaseImplement.Models
{
public class FurnitureMaterial
{
public int Id { get; set; }
[Required]
public int FurnitureId { get; set; }
[Required]
public int MaterialId { get; set; }
[Required]
public int Count { get; set; }
public virtual Material Material { get; set; } = new();
public virtual Furniture Furniture { get; set; } = new();
}
}

View File

@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FurnitureFactoryDataModels.Models;
using FurnitureFactoryContracts.BindingModels;
using FurnitureFactoryContracts.ViewModels;
namespace FurnitureFactoryDataBaseImplement.Models
{
public class Material : IMaterialModel
{
public int Id { get; private set; }
[Required]
public string MaterialName { get; private set; } = string.Empty;
[Required]
public double MaterialCost { get; set; }
[ForeignKey("MaterialId")]
public virtual List<FurnitureMaterial> FurnitureMaterials { get; set; } =
new();
public static Material? Create(MaterialBindingModel model)
{
if (model == null)
{
return null;
}
return new Material()
{
Id = model.Id,
MaterialName = model.MaterialName,
MaterialCost = model.MaterialCost
};
}
public static Material Create(MaterialViewModel model)
{
return new Material
{
Id = model.Id,
MaterialName = model.MaterialName,
MaterialCost = model.MaterialCost
};
}
public void Update(MaterialBindingModel model)
{
if (model == null)
{
return;
}
MaterialName = model.MaterialName;
MaterialCost = model.MaterialCost;
}
public MaterialViewModel GetViewModel => new()
{
Id = Id,
MaterialName = MaterialName,
MaterialCost = MaterialCost
};
}
}

View File

@ -0,0 +1,93 @@
using FurnitureFactoryContracts.BindingModels;
using FurnitureFactoryContracts.ViewModels;
using FurnitureFactoryDataModels.Enums;
using FurnitureFactoryDataModels.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FurnitureFactoryDataBaseImplement.Models
{
public class Order : IOrderModel
{
public int Id { get; private set; }
[Required]
public int ClientId { get; set; }
public int? EmployeeId { get; set; }
public int FurnitureCount { get; private set; }
[Required]
public double OrderPrice { get; private set; }
[Required]
public OrderStatus OStatus { get; private set; }
[Required]
public PaymentStatus PStatus { get; private set; }
[Required]
public DateTime DateCreate { get; private set; }
public DateTime? DateImplement { get; private set; }
[Required]
public int FurnitureId { get; private set; }
public virtual Furniture Furniture { get; set; }
public virtual Client Client { get; set; }
public virtual Employee? Employee { get; set; }
public static Order? Create(OrderBindingModel model)
{
if (model == null)
{
return null;
}
return new Order()
{
Id = model.Id,
ClientId = model.ClientId,
EmployeeId = model.EmployeeId,
FurnitureCount = model.FurnitureCount,
OrderPrice = model.OrderPrice,
OStatus = model.OStatus,
PStatus = model.PStatus,
DateCreate = model.DateCreate,
DateImplement = model.DateImplement,
FurnitureId = model.FurnitureId,
};
}
public void Update(OrderBindingModel? model)
{
if (model == null)
{
return;
}
OStatus = model.OStatus;
PStatus = model.PStatus;
DateImplement = model.DateImplement;
EmployeeId = model.EmployeeId;
}
public OrderViewModel GetViewModel
{
get
{
using var context = new FurnitureFactoryDataBase();
return new OrderViewModel
{
FurnitureId = FurnitureId,
EmployeeId = EmployeeId,
EmployeeFIO = Employee?.EmployeeFIO ?? string.Empty,
FurnitureName = context.Furnitures.FirstOrDefault(x => x.Id == FurnitureId)?.FurnitureName ?? string.Empty,
ClientId = ClientId,
ClientFIO = context.Clients.FirstOrDefault(x => x.Id == ClientId)?.ClientFIO ?? string.Empty,
FurnitureCount = FurnitureCount,
OrderPrice = OrderPrice,
OStatus = OStatus,
PStatus = PStatus,
DateCreate = DateCreate,
DateImplement = DateImplement,
Id = Id,
};
}
}
}
}

View File

@ -18,6 +18,5 @@ namespace FurnitureFactoryDataModels.Models
PaymentStatus PStatus { get; }
DateTime DateCreate { get; }
DateTime? DateImplement { get; }
Dictionary<int, (IFurnitureModel, int)> OrderFurnitures { get; }
}
}

View File

@ -8,4 +8,22 @@
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.8" />
<PackageReference Include="ReportViewerCore.WinForms" Version="15.1.19" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\FurnitureFactoryBusinessLogic\FurnitureFactoryBusinessLogic.csproj" />
<ProjectReference Include="..\FurnitureFactoryContracts\FurnitureFactoryContracts.csproj" />
<ProjectReference Include="..\FurnitureFactoryDataBaseImplements\FurnitureFactoryDataBaseImplement.csproj" />
</ItemGroup>
</Project>