diff --git a/LawFirm/LawFirm.sln b/LawFirm/LawFirm.sln
index b351967..93db645 100644
--- a/LawFirm/LawFirm.sln
+++ b/LawFirm/LawFirm.sln
@@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LawFirmContracts", "LawFirm
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LawFirmBusinessLogic", "LawFirmBusinessLogic\LawFirmBusinessLogic.csproj", "{08E0AB8D-1F53-4757-BA64-D76A2EB866C0}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LawFirmDatabase", "LawFirmDatabase\LawFirmDatabase.csproj", "{A05000F4-BF89-4515-A8C7-FB5D962E3802}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -27,6 +29,10 @@ Global
{08E0AB8D-1F53-4757-BA64-D76A2EB866C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{08E0AB8D-1F53-4757-BA64-D76A2EB866C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{08E0AB8D-1F53-4757-BA64-D76A2EB866C0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A05000F4-BF89-4515-A8C7-FB5D962E3802}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A05000F4-BF89-4515-A8C7-FB5D962E3802}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A05000F4-BF89-4515-A8C7-FB5D962E3802}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A05000F4-BF89-4515-A8C7-FB5D962E3802}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/LawFirm/LawFirm/LawFirmView.csproj b/LawFirm/LawFirm/LawFirmView.csproj
index 7eec60b..a1641b4 100644
--- a/LawFirm/LawFirm/LawFirmView.csproj
+++ b/LawFirm/LawFirm/LawFirmView.csproj
@@ -23,4 +23,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/LawFirm/LawFirm/Program.cs b/LawFirm/LawFirm/Program.cs
index 178355f..40cd6a1 100644
--- a/LawFirm/LawFirm/Program.cs
+++ b/LawFirm/LawFirm/Program.cs
@@ -1,3 +1,5 @@
+using LawFirmDatabase;
+
namespace LawFirmView
{
internal static class Program
diff --git a/LawFirm/LawFirmBusinessLogic/LawFirmBusinessLogic.csproj b/LawFirm/LawFirmBusinessLogic/LawFirmBusinessLogic.csproj
index 6f20f1a..850b7a9 100644
--- a/LawFirm/LawFirmBusinessLogic/LawFirmBusinessLogic.csproj
+++ b/LawFirm/LawFirmBusinessLogic/LawFirmBusinessLogic.csproj
@@ -6,6 +6,21 @@
enable
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
diff --git a/LawFirm/LawFirmDatabase/LawFirmDBContext.cs b/LawFirm/LawFirmDatabase/LawFirmDBContext.cs
new file mode 100644
index 0000000..927268e
--- /dev/null
+++ b/LawFirm/LawFirmDatabase/LawFirmDBContext.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using LawFirmDatabase.Models;
+using Microsoft.EntityFrameworkCore;
+
+namespace LawFirmDatabase
+{
+ public class LawFirmDBContext : DbContext
+ {
+ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+ {
+ if (optionsBuilder.IsConfigured == false)
+ {
+ optionsBuilder.UseSqlServer
+ (
+ @"Data Source=KITOSYA;
+ Initial Catalog=AircraftPlantDataBaseFull;
+ Integrated Security=True;
+ MultipleActiveResultSets=True;;
+ TrustServerCertificate=True"
+ );
+ }
+ base.OnConfiguring(optionsBuilder);
+ }
+ public virtual DbSet Customers { get; set; }
+ public virtual DbSet- Items { get; set; }
+ public virtual DbSet Cases { get; set; }
+ public virtual DbSet Payments { get; set; }
+ public virtual DbSet Services { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/LawFirm/LawFirmDatabase/LawFirmDatabase.csproj b/LawFirm/LawFirmDatabase/LawFirmDatabase.csproj
new file mode 100644
index 0000000..850b7a9
--- /dev/null
+++ b/LawFirm/LawFirmDatabase/LawFirmDatabase.csproj
@@ -0,0 +1,28 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
+
+
diff --git a/LawFirm/LawFirmDatabase/Migrations/20230408032638_InitMigration.Designer.cs b/LawFirm/LawFirmDatabase/Migrations/20230408032638_InitMigration.Designer.cs
new file mode 100644
index 0000000..3509f68
--- /dev/null
+++ b/LawFirm/LawFirmDatabase/Migrations/20230408032638_InitMigration.Designer.cs
@@ -0,0 +1,228 @@
+//
+using LawFirmDatabase;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace LawFirmDatabase.Migrations
+{
+ [DbContext(typeof(LawFirmDBContext))]
+ [Migration("20230408032638_InitMigration")]
+ partial class InitMigration
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.4")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Case", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("CustomerId")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CustomerId");
+
+ b.ToTable("Cases");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Customer", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Login")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Surname")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Customers");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Item", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("PaymentId")
+ .HasColumnType("int");
+
+ b.Property("Price")
+ .HasColumnType("decimal (10,2)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("PaymentId");
+
+ b.ToTable("Items");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Payment", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("CaseId")
+ .HasColumnType("int");
+
+ b.Property("Sum")
+ .HasColumnType("decimal (10,2)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CaseId");
+
+ b.ToTable("Payments");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Service", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("CaseId")
+ .HasColumnType("int");
+
+ b.Property("ItemId")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Price")
+ .HasColumnType("decimal (10,2)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CaseId");
+
+ b.HasIndex("ItemId");
+
+ b.ToTable("Services");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Case", b =>
+ {
+ b.HasOne("LawFirmDatabase.Models.Customer", "Customer")
+ .WithMany("Cases")
+ .HasForeignKey("CustomerId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Customer");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Item", b =>
+ {
+ b.HasOne("LawFirmDatabase.Models.Payment", "Payments")
+ .WithMany("Items")
+ .HasForeignKey("PaymentId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Payments");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Payment", b =>
+ {
+ b.HasOne("LawFirmDatabase.Models.Case", "Cases")
+ .WithMany("Payments")
+ .HasForeignKey("CaseId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Cases");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Service", b =>
+ {
+ b.HasOne("LawFirmDatabase.Models.Case", "Cases")
+ .WithMany()
+ .HasForeignKey("CaseId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("LawFirmDatabase.Models.Item", "Items")
+ .WithMany("Services")
+ .HasForeignKey("ItemId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Cases");
+
+ b.Navigation("Items");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Case", b =>
+ {
+ b.Navigation("Payments");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Customer", b =>
+ {
+ b.Navigation("Cases");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Item", b =>
+ {
+ b.Navigation("Services");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Payment", b =>
+ {
+ b.Navigation("Items");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/LawFirm/LawFirmDatabase/Migrations/20230408032638_InitMigration.cs b/LawFirm/LawFirmDatabase/Migrations/20230408032638_InitMigration.cs
new file mode 100644
index 0000000..0722275
--- /dev/null
+++ b/LawFirm/LawFirmDatabase/Migrations/20230408032638_InitMigration.cs
@@ -0,0 +1,163 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace LawFirmDatabase.Migrations
+{
+ ///
+ public partial class InitMigration : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "Customers",
+ columns: table => new
+ {
+ Id = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Login = table.Column(type: "nvarchar(max)", nullable: false),
+ Password = table.Column(type: "nvarchar(max)", nullable: false),
+ Name = table.Column(type: "nvarchar(max)", nullable: false),
+ Surname = table.Column(type: "nvarchar(max)", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Customers", x => x.Id);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Cases",
+ columns: table => new
+ {
+ Id = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Name = table.Column(type: "nvarchar(max)", nullable: false),
+ CustomerId = table.Column(type: "int", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Cases", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Cases_Customers_CustomerId",
+ column: x => x.CustomerId,
+ principalTable: "Customers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Payments",
+ columns: table => new
+ {
+ Id = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Sum = table.Column(type: "decimal (10,2)", nullable: false),
+ CaseId = table.Column(type: "int", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Payments", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Payments_Cases_CaseId",
+ column: x => x.CaseId,
+ principalTable: "Cases",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Items",
+ columns: table => new
+ {
+ Id = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Name = table.Column(type: "nvarchar(max)", nullable: false),
+ Price = table.Column(type: "decimal (10,2)", nullable: false),
+ PaymentId = table.Column(type: "int", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Items", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Items_Payments_PaymentId",
+ column: x => x.PaymentId,
+ principalTable: "Payments",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Services",
+ columns: table => new
+ {
+ Id = table.Column(type: "int", nullable: false)
+ .Annotation("SqlServer:Identity", "1, 1"),
+ Name = table.Column(type: "nvarchar(max)", nullable: false),
+ Price = table.Column(type: "decimal (10,2)", nullable: false),
+ ItemId = table.Column(type: "int", nullable: false),
+ CaseId = table.Column(type: "int", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Services", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Services_Cases_CaseId",
+ column: x => x.CaseId,
+ principalTable: "Cases",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_Services_Items_ItemId",
+ column: x => x.ItemId,
+ principalTable: "Items",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Cases_CustomerId",
+ table: "Cases",
+ column: "CustomerId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Items_PaymentId",
+ table: "Items",
+ column: "PaymentId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Payments_CaseId",
+ table: "Payments",
+ column: "CaseId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Services_CaseId",
+ table: "Services",
+ column: "CaseId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Services_ItemId",
+ table: "Services",
+ column: "ItemId");
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "Services");
+
+ migrationBuilder.DropTable(
+ name: "Items");
+
+ migrationBuilder.DropTable(
+ name: "Payments");
+
+ migrationBuilder.DropTable(
+ name: "Cases");
+
+ migrationBuilder.DropTable(
+ name: "Customers");
+ }
+ }
+}
diff --git a/LawFirm/LawFirmDatabase/Migrations/LawFirmDBContextModelSnapshot.cs b/LawFirm/LawFirmDatabase/Migrations/LawFirmDBContextModelSnapshot.cs
new file mode 100644
index 0000000..b55a5f5
--- /dev/null
+++ b/LawFirm/LawFirmDatabase/Migrations/LawFirmDBContextModelSnapshot.cs
@@ -0,0 +1,225 @@
+//
+using LawFirmDatabase;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace LawFirmDatabase.Migrations
+{
+ [DbContext(typeof(LawFirmDBContext))]
+ partial class LawFirmDBContextModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.4")
+ .HasAnnotation("Relational:MaxIdentifierLength", 128);
+
+ SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Case", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("CustomerId")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CustomerId");
+
+ b.ToTable("Cases");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Customer", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Login")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Password")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Surname")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Customers");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Item", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("PaymentId")
+ .HasColumnType("int");
+
+ b.Property("Price")
+ .HasColumnType("decimal (10,2)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("PaymentId");
+
+ b.ToTable("Items");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Payment", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("CaseId")
+ .HasColumnType("int");
+
+ b.Property("Sum")
+ .HasColumnType("decimal (10,2)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CaseId");
+
+ b.ToTable("Payments");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Service", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id"));
+
+ b.Property("CaseId")
+ .HasColumnType("int");
+
+ b.Property("ItemId")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("nvarchar(max)");
+
+ b.Property("Price")
+ .HasColumnType("decimal (10,2)");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CaseId");
+
+ b.HasIndex("ItemId");
+
+ b.ToTable("Services");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Case", b =>
+ {
+ b.HasOne("LawFirmDatabase.Models.Customer", "Customer")
+ .WithMany("Cases")
+ .HasForeignKey("CustomerId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Customer");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Item", b =>
+ {
+ b.HasOne("LawFirmDatabase.Models.Payment", "Payments")
+ .WithMany("Items")
+ .HasForeignKey("PaymentId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Payments");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Payment", b =>
+ {
+ b.HasOne("LawFirmDatabase.Models.Case", "Cases")
+ .WithMany("Payments")
+ .HasForeignKey("CaseId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Cases");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Service", b =>
+ {
+ b.HasOne("LawFirmDatabase.Models.Case", "Cases")
+ .WithMany()
+ .HasForeignKey("CaseId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("LawFirmDatabase.Models.Item", "Items")
+ .WithMany("Services")
+ .HasForeignKey("ItemId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("Cases");
+
+ b.Navigation("Items");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Case", b =>
+ {
+ b.Navigation("Payments");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Customer", b =>
+ {
+ b.Navigation("Cases");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Item", b =>
+ {
+ b.Navigation("Services");
+ });
+
+ modelBuilder.Entity("LawFirmDatabase.Models.Payment", b =>
+ {
+ b.Navigation("Items");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/LawFirm/LawFirmDatabase/Models/Case.cs b/LawFirm/LawFirmDatabase/Models/Case.cs
new file mode 100644
index 0000000..665f55a
--- /dev/null
+++ b/LawFirm/LawFirmDatabase/Models/Case.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using LawFirmContracts;
+using LawFirmContracts.BindingModels;
+using LawFirmContracts.Models;
+using LawFirmContracts.ViewModels;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using Azure;
+using System.ComponentModel;
+
+
+namespace LawFirmDatabase.Models
+{
+ public class Case : ICaseModel
+ {
+ public int Id { get; private set; }
+ [Required]
+ public string Name { get; private set; } = string.Empty;
+ [NotMapped]
+ public DateTime DateCreated { get; private set; }
+ [Required]
+ public int CustomerId { get; private set; }
+ [ForeignKey("CaseId")]
+ public virtual List Payments { get; set; } = new();
+ public virtual Customer Customer { get; set; } = new();
+ public static Case? Create(LawFirmDBContext context, ICaseModel? model)
+ {
+ if (model == null)
+ {
+ return null;
+ }
+ return new()
+ {
+ Id = model.Id,
+ DateCreated = model.DateCreated,
+ Customer = context.Customers.First(x => x.Id == model.CustomerId)
+ };
+ }
+
+ public void Update(LawFirmDBContext context, ICaseModel? model)
+ {
+ if (model == null)
+ {
+ return;
+ }
+ Id = model.Id;
+ DateCreated = model.DateCreated;
+ Customer = context.Customers.First(x => x.Id == model.CustomerId);
+ }
+
+ public CaseViewModel? GetViewModel() => new()
+ {
+ Id = Id,
+ Name = Name,
+ DateCreated = DateCreated,
+ CustomerId = CustomerId
+ };
+ }
+}
diff --git a/LawFirm/LawFirmDatabase/Models/Customer.cs b/LawFirm/LawFirmDatabase/Models/Customer.cs
new file mode 100644
index 0000000..381e2bb
--- /dev/null
+++ b/LawFirm/LawFirmDatabase/Models/Customer.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using LawFirmContracts;
+using LawFirmContracts.BindingModels;
+using LawFirmContracts.Models;
+using LawFirmContracts.ViewModels;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+
+namespace LawFirmDatabase.Models
+{
+ public class Customer : ICustomerModel
+ {
+ public int Id { get; private set; }
+ [Required]
+ public string Login { get; private set; } = string.Empty;
+ [Required]
+ public string Password { get; private set; } = string.Empty;
+ [Required]
+ public string Name { get; private set; } = string.Empty;
+ [Required]
+ public string Surname { get; private set; } = string.Empty;
+ [ForeignKey("CustomerId")]
+ public virtual List Cases { get; set; } = new();
+ public static Customer? Create(ICustomerModel? model)
+ {
+ if (model == null)
+ {
+ return null;
+ }
+ return new()
+ {
+ Id = model.Id,
+ Login = model.Login,
+ Password = model.Password,
+ Name = model.Name,
+ Surname = model.Surname,
+ };
+ }
+
+ public void Update(ICustomerModel? model)
+ {
+ if (model == null)
+ {
+ return;
+ }
+ Login = model.Login;
+ Password = model.Password;
+ Name = model.Name;
+ Surname = model.Surname;
+ }
+
+ public CustomerViewModel? GetViewModel() => new()
+ {
+ Id = Id,
+ Login = Login,
+ Password = Password,
+ Name = Name,
+ Surname = Surname,
+ };
+ }
+}
diff --git a/LawFirm/LawFirmDatabase/Models/Item.cs b/LawFirm/LawFirmDatabase/Models/Item.cs
new file mode 100644
index 0000000..fd7349f
--- /dev/null
+++ b/LawFirm/LawFirmDatabase/Models/Item.cs
@@ -0,0 +1,55 @@
+using LawFirmContracts.BindingModels;
+using LawFirmContracts.Models;
+using LawFirmContracts.ViewModels;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using System;
+using LawFirmContracts;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace LawFirmDatabase.Models
+{
+ public class Item : IItemModel
+ {
+ public int Id { get; private set; }
+ [Required]
+ public string Name { get; private set; } = string.Empty;
+ [Required, Column(TypeName = "decimal (10,2)")]
+ public decimal Price { get; private set; }
+ [Required]
+ public int PaymentId { get; private set; }
+ [ForeignKey("ItemId")]
+ public virtual List Services { get; set; } = new();
+ public virtual Payment Payments { get; set; } = new();
+ public static Item? Create(LawFirmDBContext context, ItemBindingModel? model)
+ {
+ if (model == null)
+ {
+ return null;
+ }
+ return new()
+ {
+ Name = model.Name,
+ Price = model.Price,
+ Payments = context.Payments.First(x => x.Id == model.PaymentId)
+ };
+ }
+ public void Update(LawFirmDBContext context, ItemBindingModel? model)
+ {
+ if (model == null)
+ {
+ return;
+ }
+ Name = model.Name;
+ Price = model.Price;
+ Payments = context.Payments.First(x => x.Id == model.PaymentId);
+ }
+ public ItemViewModel GetViewModel => new()
+ {
+ Id = Id,
+ Name = Name,
+ Price = Price,
+ PaymentId = PaymentId,
+ };
+ }
+}
\ No newline at end of file
diff --git a/LawFirm/LawFirmDatabase/Models/Payment.cs b/LawFirm/LawFirmDatabase/Models/Payment.cs
new file mode 100644
index 0000000..7c411ce
--- /dev/null
+++ b/LawFirm/LawFirmDatabase/Models/Payment.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using LawFirmContracts;
+using LawFirmContracts.BindingModels;
+using LawFirmContracts.Models;
+using LawFirmContracts.ViewModels;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+
+namespace LawFirmDatabase.Models
+{
+ public class Payment : IPaymentModel
+ {
+ public int Id { get; private set; }
+ [NotMapped]
+ public DateTime DatePayment { get; private set; } = DateTime.Now;
+ [Required, Column(TypeName = "decimal (10,2)")]
+ public decimal Sum { get; private set; }
+ [Required]
+ public int CaseId { get; private set; }
+ [ForeignKey("PaymentId")]
+ public virtual List
- Items { get; set; } = new();
+ public virtual Case Cases { get; set; } = new();
+
+ public static Payment? Create(LawFirmDBContext context, IPaymentModel? model)
+ {
+ if (model == null)
+ {
+ return null;
+ }
+ return new()
+ {
+ Id = model.Id,
+ Sum = model.Sum,
+ DatePayment = model.DatePayment,
+ Cases = context.Cases.First(x => x.Id == model.CaseId)
+ };
+ }
+
+ public void Update(LawFirmDBContext context, IPaymentModel? model)
+ {
+ if (model == null)
+ {
+ return;
+ }
+ Id = model.Id;
+ Sum = model.Sum;
+ DatePayment = model.DatePayment;
+ Cases = context.Cases.First(x => x.Id == model.CaseId);
+ }
+
+ public PaymentViewModel? GetViewModel() => new()
+ {
+ Id = Id,
+ Sum = Sum,
+ DatePayment = DatePayment,
+ CaseId = CaseId,
+ };
+ }
+}
diff --git a/LawFirm/LawFirmDatabase/Models/Service.cs b/LawFirm/LawFirmDatabase/Models/Service.cs
new file mode 100644
index 0000000..ab6ae0a
--- /dev/null
+++ b/LawFirm/LawFirmDatabase/Models/Service.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using LawFirmContracts;
+using LawFirmContracts.BindingModels;
+using LawFirmContracts.Models;
+using LawFirmContracts.ViewModels;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+namespace LawFirmDatabase.Models
+{
+ public class Service : IServiceModel
+ {
+ public int Id { get; private set; }
+ [Required]
+ public string Name { get; private set; } = string.Empty;
+ [Required, Column(TypeName = "decimal (10,2)")]
+ public decimal Price { get; private set; }
+ [Required]
+ public int ItemId { get; private set; }
+ public int CaseId { get; private set; }
+ public virtual Item Items { get; set; } = new();
+ public virtual Case Cases { get; set; } = new();
+
+ public static Service? Create(LawFirmDBContext context, IServiceModel? model)
+ {
+ if (model == null)
+ {
+ return null;
+ }
+ return new()
+ {
+ Id = model.Id,
+ Name = model.Name,
+ Price = model.Price,
+ Items = context.Items.First(x => x.Id == model.ItemId),
+ Cases = context.Cases.First(x => x.Id == model.CaseId)
+ };
+ }
+
+ public void Update(LawFirmDBContext context, IServiceModel? model)
+ {
+ if (model == null)
+ {
+ return;
+ }
+ Id = model.Id;
+ Name = model.Name;
+ Price = model.Price;
+ Items = context.Items.First(x => x.Id == model.ItemId);
+ Cases = context.Cases.First(x => x.Id == model.CaseId);
+ }
+
+ public ServiceViewModel? GetViewModel() => new()
+ {
+ Id = Id,
+ Name = Name,
+ Price = Price,
+ ItemId = ItemId,
+ };
+ }
+}