diff --git a/TestApplication.sln b/TestApplication.sln
new file mode 100644
index 0000000..3fafef9
--- /dev/null
+++ b/TestApplication.sln
@@ -0,0 +1,25 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.10.35004.147
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestApplication", "TestApplication\TestApplication.csproj", "{56D7A700-0058-498F-A40A-63B8FAC61AA2}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {56D7A700-0058-498F-A40A-63B8FAC61AA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {56D7A700-0058-498F-A40A-63B8FAC61AA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {56D7A700-0058-498F-A40A-63B8FAC61AA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {56D7A700-0058-498F-A40A-63B8FAC61AA2}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {0E310B41-449C-4A8E-B47D-8F859C7D9216}
+ EndGlobalSection
+EndGlobal
diff --git a/TestApplication/App.axaml b/TestApplication/App.axaml
new file mode 100644
index 0000000..5b1afde
--- /dev/null
+++ b/TestApplication/App.axaml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/TestApplication/App.axaml.cs b/TestApplication/App.axaml.cs
new file mode 100644
index 0000000..18a493a
--- /dev/null
+++ b/TestApplication/App.axaml.cs
@@ -0,0 +1,24 @@
+using Avalonia;
+using Avalonia.Controls.ApplicationLifetimes;
+using Avalonia.Markup.Xaml;
+
+namespace TestApplication
+{
+ public partial class App : Application
+ {
+ public override void Initialize()
+ {
+ AvaloniaXamlLoader.Load(this);
+ }
+
+ public override void OnFrameworkInitializationCompleted()
+ {
+ if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
+ {
+ desktop.MainWindow = new MainWindowStackPanel();
+ }
+
+ base.OnFrameworkInitializationCompleted();
+ }
+ }
+}
\ No newline at end of file
diff --git a/TestApplication/Context/Client.cs b/TestApplication/Context/Client.cs
new file mode 100644
index 0000000..98dfe8d
--- /dev/null
+++ b/TestApplication/Context/Client.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Client
+{
+ public int Id { get; set; }
+
+ public string Firstname { get; set; } = null!;
+
+ public string Lastname { get; set; } = null!;
+
+ public string? Patronymic { get; set; }
+
+ public string? Birthday { get; set; }
+
+ public string Registrationdate { get; set; } = null!;
+
+ public string? Email { get; set; }
+
+ public string Phone { get; set; } = null!;
+
+ public char Gendercode { get; set; }
+
+ public string? Photopath { get; set; }
+
+ public virtual ICollection Clientservices { get; set; } = new List();
+
+ public virtual Gender1 GendercodeNavigation { get; set; } = null!;
+
+ public virtual ICollection Tags { get; set; } = new List();
+}
diff --git a/TestApplication/Context/Client1.cs b/TestApplication/Context/Client1.cs
new file mode 100644
index 0000000..76b6f9a
--- /dev/null
+++ b/TestApplication/Context/Client1.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Client1
+{
+ public int Id { get; set; }
+
+ public string FirstName { get; set; } = null!;
+
+ public string LastName { get; set; } = null!;
+
+ public string? Patronymic { get; set; }
+
+ public DateOnly? Birthday { get; set; }
+
+ public DateTime RegistrationDate { get; set; }
+
+ public string? Email { get; set; }
+
+ public string Phone { get; set; } = null!;
+
+ public char GenderCode { get; set; }
+
+ public string? PhotoPath { get; set; }
+
+ public virtual ICollection ClientService1s { get; set; } = new List();
+
+ public virtual Gender GenderCodeNavigation { get; set; } = null!;
+
+ public virtual ICollection Tags { get; set; } = new List();
+}
diff --git a/TestApplication/Context/ClientService1.cs b/TestApplication/Context/ClientService1.cs
new file mode 100644
index 0000000..4ec856c
--- /dev/null
+++ b/TestApplication/Context/ClientService1.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class ClientService1
+{
+ public int Id { get; set; }
+
+ public int ClientId { get; set; }
+
+ public int ServiceId { get; set; }
+
+ public DateTime StartTime { get; set; }
+
+ public string? Comment { get; set; }
+
+ public virtual Client1 Client { get; set; } = null!;
+
+ public virtual ICollection DocumentByServices { get; set; } = new List();
+
+ public virtual ICollection ProductSale1s { get; set; } = new List();
+
+ public virtual Service Service { get; set; } = null!;
+}
diff --git a/TestApplication/Context/Clientservice.cs b/TestApplication/Context/Clientservice.cs
new file mode 100644
index 0000000..8366acd
--- /dev/null
+++ b/TestApplication/Context/Clientservice.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Clientservice
+{
+ public int Id { get; set; }
+
+ public int Clientid { get; set; }
+
+ public int Serviceid { get; set; }
+
+ public DateTime Starttime { get; set; }
+
+ public string? Comment { get; set; }
+
+ public virtual Client Client { get; set; } = null!;
+
+ public virtual ICollection Documentbyservice1s { get; set; } = new List();
+
+ public virtual ICollection Productsales { get; set; } = new List();
+
+ public virtual Service1 Service { get; set; } = null!;
+}
diff --git a/TestApplication/Context/DocumentByService.cs b/TestApplication/Context/DocumentByService.cs
new file mode 100644
index 0000000..e15b97a
--- /dev/null
+++ b/TestApplication/Context/DocumentByService.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class DocumentByService
+{
+ public int Id { get; set; }
+
+ public int ClientServiceId { get; set; }
+
+ public string DocumentPath { get; set; } = null!;
+
+ public virtual ClientService1 ClientService { get; set; } = null!;
+}
diff --git a/TestApplication/Context/Documentbyservice1.cs b/TestApplication/Context/Documentbyservice1.cs
new file mode 100644
index 0000000..93cd73d
--- /dev/null
+++ b/TestApplication/Context/Documentbyservice1.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Documentbyservice1
+{
+ public int Id { get; set; }
+
+ public int Clientserviceid { get; set; }
+
+ public string Documentpath { get; set; } = null!;
+
+ public virtual Clientservice Clientservice { get; set; } = null!;
+}
diff --git a/TestApplication/Context/Gender.cs b/TestApplication/Context/Gender.cs
new file mode 100644
index 0000000..145403a
--- /dev/null
+++ b/TestApplication/Context/Gender.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Gender
+{
+ public char Code { get; set; }
+
+ public string? Name { get; set; }
+
+ public virtual ICollection Client1s { get; set; } = new List();
+}
diff --git a/TestApplication/Context/Gender1.cs b/TestApplication/Context/Gender1.cs
new file mode 100644
index 0000000..766741c
--- /dev/null
+++ b/TestApplication/Context/Gender1.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Gender1
+{
+ public char Code { get; set; }
+
+ public string? Name { get; set; }
+
+ public virtual ICollection Clients { get; set; } = new List();
+}
diff --git a/TestApplication/Context/Manufacturer.cs b/TestApplication/Context/Manufacturer.cs
new file mode 100644
index 0000000..2079070
--- /dev/null
+++ b/TestApplication/Context/Manufacturer.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Manufacturer
+{
+ public int Id { get; set; }
+
+ public string Name { get; set; } = null!;
+
+ public DateOnly? Startdate { get; set; }
+
+ public virtual ICollection Products { get; set; } = new List();
+}
diff --git a/TestApplication/Context/Manufacturer1.cs b/TestApplication/Context/Manufacturer1.cs
new file mode 100644
index 0000000..9a2c71d
--- /dev/null
+++ b/TestApplication/Context/Manufacturer1.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Manufacturer1
+{
+ public int Id { get; set; }
+
+ public string Name { get; set; } = null!;
+
+ public DateOnly? StartDate { get; set; }
+
+ public virtual ICollection Product1s { get; set; } = new List();
+}
diff --git a/TestApplication/Context/Product.cs b/TestApplication/Context/Product.cs
new file mode 100644
index 0000000..d430727
--- /dev/null
+++ b/TestApplication/Context/Product.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Product
+{
+ public int Id { get; set; }
+
+ public string Title { get; set; } = null!;
+
+ public decimal Cost { get; set; }
+
+ public string? Description { get; set; }
+
+ public string? Mainimagepath { get; set; }
+
+ public bool Isactive { get; set; }
+
+ public int? Manufacturerid { get; set; }
+
+ public virtual Manufacturer? Manufacturer { get; set; }
+
+ public virtual ICollection Productphotos { get; set; } = new List();
+
+ public virtual ICollection Productsales { get; set; } = new List();
+
+ public virtual ICollection Attachedproducts { get; set; } = new List();
+
+ public virtual ICollection Mainproducts { get; set; } = new List();
+}
diff --git a/TestApplication/Context/Product1.cs b/TestApplication/Context/Product1.cs
new file mode 100644
index 0000000..d1e2b09
--- /dev/null
+++ b/TestApplication/Context/Product1.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Product1
+{
+ public int Id { get; set; }
+
+ public string Title { get; set; } = null!;
+
+ public decimal Cost { get; set; }
+
+ public string? Description { get; set; }
+
+ public string? MainImagePath { get; set; }
+
+ public bool IsActive { get; set; }
+
+ public int? ManufacturerId { get; set; }
+
+ public virtual Manufacturer1? Manufacturer { get; set; }
+
+ public virtual ICollection ProductPhoto1s { get; set; } = new List();
+
+ public virtual ICollection ProductSale1s { get; set; } = new List();
+
+ public virtual ICollection AttachedProducts { get; set; } = new List();
+
+ public virtual ICollection MainProducts { get; set; } = new List();
+}
diff --git a/TestApplication/Context/ProductPhoto1.cs b/TestApplication/Context/ProductPhoto1.cs
new file mode 100644
index 0000000..f429234
--- /dev/null
+++ b/TestApplication/Context/ProductPhoto1.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class ProductPhoto1
+{
+ public int Id { get; set; }
+
+ public int ProductId { get; set; }
+
+ public string PhotoPath { get; set; } = null!;
+
+ public virtual Product1 Product { get; set; } = null!;
+}
diff --git a/TestApplication/Context/ProductSale1.cs b/TestApplication/Context/ProductSale1.cs
new file mode 100644
index 0000000..d8d95b4
--- /dev/null
+++ b/TestApplication/Context/ProductSale1.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class ProductSale1
+{
+ public int Id { get; set; }
+
+ public DateTime SaleDate { get; set; }
+
+ public int ProductId { get; set; }
+
+ public int Quantity { get; set; }
+
+ public int? ClientServiceId { get; set; }
+
+ public virtual ClientService1? ClientService { get; set; }
+
+ public virtual Product1 Product { get; set; } = null!;
+}
diff --git a/TestApplication/Context/Productphoto.cs b/TestApplication/Context/Productphoto.cs
new file mode 100644
index 0000000..39764e7
--- /dev/null
+++ b/TestApplication/Context/Productphoto.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Productphoto
+{
+ public int Id { get; set; }
+
+ public int Productid { get; set; }
+
+ public string Photopath { get; set; } = null!;
+
+ public virtual Product Product { get; set; } = null!;
+}
diff --git a/TestApplication/Context/Productsale.cs b/TestApplication/Context/Productsale.cs
new file mode 100644
index 0000000..75e0230
--- /dev/null
+++ b/TestApplication/Context/Productsale.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Productsale
+{
+ public int Id { get; set; }
+
+ public string Saledate { get; set; } = null!;
+
+ public int Productid { get; set; }
+
+ public int Quantity { get; set; }
+
+ public int? Clientserviceid { get; set; }
+
+ public virtual Clientservice? Clientservice { get; set; }
+
+ public virtual Product Product { get; set; } = null!;
+}
diff --git a/TestApplication/Context/Service.cs b/TestApplication/Context/Service.cs
new file mode 100644
index 0000000..240dd2f
--- /dev/null
+++ b/TestApplication/Context/Service.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Service
+{
+ public int Id { get; set; }
+
+ public string Title { get; set; } = null!;
+
+ public decimal Cost { get; set; }
+
+ public int DurationInSeconds { get; set; }
+
+ public string? Description { get; set; }
+
+ public double? Discount { get; set; }
+
+ public string? MainImagePath { get; set; }
+
+ public virtual ICollection ClientService1s { get; set; } = new List();
+
+ public virtual ICollection ServicePhotos { get; set; } = new List();
+}
diff --git a/TestApplication/Context/Service1.cs b/TestApplication/Context/Service1.cs
new file mode 100644
index 0000000..fb7247f
--- /dev/null
+++ b/TestApplication/Context/Service1.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Service1
+{
+ public int Id { get; set; }
+
+ public string Title { get; set; } = null!;
+
+ public decimal Cost { get; set; }
+
+ public int Durationinseconds { get; set; }
+
+ public string? Description { get; set; }
+
+ public decimal? Discount { get; set; }
+
+ public string? Mainimagepath { get; set; }
+
+ public virtual ICollection Clientservices { get; set; } = new List();
+
+ public virtual ICollection Servicephoto1s { get; set; } = new List();
+}
diff --git a/TestApplication/Context/ServicePhoto.cs b/TestApplication/Context/ServicePhoto.cs
new file mode 100644
index 0000000..c1f06a7
--- /dev/null
+++ b/TestApplication/Context/ServicePhoto.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class ServicePhoto
+{
+ public int Id { get; set; }
+
+ public int ServiceId { get; set; }
+
+ public string PhotoPath { get; set; } = null!;
+
+ public virtual Service Service { get; set; } = null!;
+}
diff --git a/TestApplication/Context/Servicephoto1.cs b/TestApplication/Context/Servicephoto1.cs
new file mode 100644
index 0000000..f52c94c
--- /dev/null
+++ b/TestApplication/Context/Servicephoto1.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Servicephoto1
+{
+ public int Id { get; set; }
+
+ public int Serviceid { get; set; }
+
+ public string Photopath { get; set; } = null!;
+
+ public virtual Service1 Service { get; set; } = null!;
+}
diff --git a/TestApplication/Context/Tag.cs b/TestApplication/Context/Tag.cs
new file mode 100644
index 0000000..bf7110d
--- /dev/null
+++ b/TestApplication/Context/Tag.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Tag
+{
+ public int Id { get; set; }
+
+ public string Title { get; set; } = null!;
+
+ public string Color { get; set; } = null!;
+
+ public virtual ICollection Clients { get; set; } = new List();
+}
diff --git a/TestApplication/Context/Tag1.cs b/TestApplication/Context/Tag1.cs
new file mode 100644
index 0000000..afbbb3e
--- /dev/null
+++ b/TestApplication/Context/Tag1.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+
+namespace TestApplication.Context;
+
+public partial class Tag1
+{
+ public int Id { get; set; }
+
+ public string Title { get; set; } = null!;
+
+ public string Color { get; set; } = null!;
+
+ public virtual ICollection Clients { get; set; } = new List();
+}
diff --git a/TestApplication/Context/TyutyunnikovaContext.cs b/TestApplication/Context/TyutyunnikovaContext.cs
new file mode 100644
index 0000000..910d47a
--- /dev/null
+++ b/TestApplication/Context/TyutyunnikovaContext.cs
@@ -0,0 +1,594 @@
+using System;
+using System.Collections.Generic;
+using Microsoft.EntityFrameworkCore;
+
+namespace TestApplication.Context;
+
+public partial class TyutyunnikovaContext : DbContext
+{
+ public TyutyunnikovaContext()
+ {
+ }
+
+ public TyutyunnikovaContext(DbContextOptions options)
+ : base(options)
+ {
+ }
+
+ public virtual DbSet Clients { get; set; }
+
+ public virtual DbSet Clients1 { get; set; }
+
+ public virtual DbSet ClientServices1 { get; set; }
+
+ public virtual DbSet Clientservices { get; set; }
+
+ public virtual DbSet DocumentByServices { get; set; }
+
+ public virtual DbSet Documentbyservices1 { get; set; }
+
+ public virtual DbSet Genders { get; set; }
+
+ public virtual DbSet Genders1 { get; set; }
+
+ public virtual DbSet Manufacturers { get; set; }
+
+ public virtual DbSet Manufacturers1 { get; set; }
+
+ public virtual DbSet Products { get; set; }
+
+ public virtual DbSet Products1 { get; set; }
+
+ public virtual DbSet ProductPhotos1 { get; set; }
+
+ public virtual DbSet ProductSales1 { get; set; }
+
+ public virtual DbSet Productphotos { get; set; }
+
+ public virtual DbSet Productsales { get; set; }
+
+ public virtual DbSet Services { get; set; }
+
+ public virtual DbSet Services1 { get; set; }
+
+ public virtual DbSet ServicePhotos { get; set; }
+
+ public virtual DbSet Servicephotos1 { get; set; }
+
+ public virtual DbSet Tags { get; set; }
+
+ public virtual DbSet Tags1 { get; set; }
+
+ protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+#warning To protect potentially sensitive information in your connection string, you should move it out of source code. You can avoid scaffolding the connection string by using the Name= syntax to read it from configuration - see https://go.microsoft.com/fwlink/?linkid=2131148. For more guidance on storing connection strings, see https://go.microsoft.com/fwlink/?LinkId=723263.
+ => optionsBuilder.UseNpgsql("Host=45.67.56.214;Port=5454;Database=tyutyunnikova;Username=tyutyunnikova;password=weGk7YzI");
+
+ protected override void OnModelCreating(ModelBuilder modelBuilder)
+ {
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("client_pkey");
+
+ entity.ToTable("client");
+
+ entity.Property(e => e.Id).HasColumnName("id");
+ entity.Property(e => e.Birthday)
+ .HasColumnType("character varying")
+ .HasColumnName("birthday");
+ entity.Property(e => e.Email)
+ .HasMaxLength(255)
+ .HasColumnName("email");
+ entity.Property(e => e.Firstname)
+ .HasMaxLength(50)
+ .HasColumnName("firstname");
+ entity.Property(e => e.Gendercode)
+ .HasMaxLength(1)
+ .HasColumnName("gendercode");
+ entity.Property(e => e.Lastname)
+ .HasMaxLength(50)
+ .HasColumnName("lastname");
+ entity.Property(e => e.Patronymic)
+ .HasMaxLength(50)
+ .HasColumnName("patronymic");
+ entity.Property(e => e.Phone)
+ .HasMaxLength(20)
+ .HasColumnName("phone");
+ entity.Property(e => e.Photopath)
+ .HasMaxLength(1000)
+ .HasColumnName("photopath");
+ entity.Property(e => e.Registrationdate)
+ .HasColumnType("character varying")
+ .HasColumnName("registrationdate");
+
+ entity.HasOne(d => d.GendercodeNavigation).WithMany(p => p.Clients)
+ .HasForeignKey(d => d.Gendercode)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("client_gendercode_fkey");
+
+ entity.HasMany(d => d.Tags).WithMany(p => p.Clients)
+ .UsingEntity>(
+ "Tagofclient",
+ r => r.HasOne().WithMany()
+ .HasForeignKey("Tagid")
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("tagofclient_tagid_fkey"),
+ l => l.HasOne().WithMany()
+ .HasForeignKey("Clientid")
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("tagofclient_clientid_fkey"),
+ j =>
+ {
+ j.HasKey("Clientid", "Tagid").HasName("tagofclient_pk");
+ j.ToTable("tagofclient");
+ j.IndexerProperty("Clientid").HasColumnName("clientid");
+ j.IndexerProperty("Tagid").HasColumnName("tagid");
+ });
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("Client_pkey");
+
+ entity.ToTable("Client", "Clients");
+
+ entity.Property(e => e.Id).HasColumnName("ID");
+ entity.Property(e => e.Email).HasMaxLength(255);
+ entity.Property(e => e.FirstName).HasMaxLength(50);
+ entity.Property(e => e.GenderCode).HasMaxLength(1);
+ entity.Property(e => e.LastName).HasMaxLength(50);
+ entity.Property(e => e.Patronymic).HasMaxLength(50);
+ entity.Property(e => e.Phone).HasMaxLength(20);
+ entity.Property(e => e.PhotoPath).HasMaxLength(1000);
+
+ entity.HasOne(d => d.GenderCodeNavigation).WithMany(p => p.Client1s)
+ .HasForeignKey(d => d.GenderCode)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_Client_Gender");
+
+ entity.HasMany(d => d.Tags).WithMany(p => p.Clients)
+ .UsingEntity>(
+ "TagOfClient1",
+ r => r.HasOne().WithMany()
+ .HasForeignKey("TagId")
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_TagOfClient_Tag"),
+ l => l.HasOne().WithMany()
+ .HasForeignKey("ClientId")
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_TagOfClient_Client"),
+ j =>
+ {
+ j.HasKey("ClientId", "TagId").HasName("TagOfClient_pkey");
+ j.ToTable("TagOfClient", "Clients");
+ j.IndexerProperty("ClientId").HasColumnName("ClientID");
+ j.IndexerProperty("TagId").HasColumnName("TagID");
+ });
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("ClientService_pkey");
+
+ entity.ToTable("ClientService", "Clients");
+
+ entity.Property(e => e.Id).HasColumnName("ID");
+ entity.Property(e => e.ClientId).HasColumnName("ClientID");
+ entity.Property(e => e.ServiceId).HasColumnName("ServiceID");
+
+ entity.HasOne(d => d.Client).WithMany(p => p.ClientService1s)
+ .HasForeignKey(d => d.ClientId)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_ClientService_Client");
+
+ entity.HasOne(d => d.Service).WithMany(p => p.ClientService1s)
+ .HasForeignKey(d => d.ServiceId)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_ClientService_Service");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("clientservice_pkey");
+
+ entity.ToTable("clientservice");
+
+ entity.Property(e => e.Id).HasColumnName("id");
+ entity.Property(e => e.Clientid).HasColumnName("clientid");
+ entity.Property(e => e.Comment).HasColumnName("comment");
+ entity.Property(e => e.Serviceid).HasColumnName("serviceid");
+ entity.Property(e => e.Starttime)
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("starttime");
+
+ entity.HasOne(d => d.Client).WithMany(p => p.Clientservices)
+ .HasForeignKey(d => d.Clientid)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("clientservice_clientid_fkey");
+
+ entity.HasOne(d => d.Service).WithMany(p => p.Clientservices)
+ .HasForeignKey(d => d.Serviceid)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("clientservice_serviceid_fkey");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("DocumentByService_pkey");
+
+ entity.ToTable("DocumentByService", "Clients");
+
+ entity.Property(e => e.Id).HasColumnName("ID");
+ entity.Property(e => e.ClientServiceId).HasColumnName("ClientServiceID");
+ entity.Property(e => e.DocumentPath).HasMaxLength(1000);
+
+ entity.HasOne(d => d.ClientService).WithMany(p => p.DocumentByServices)
+ .HasForeignKey(d => d.ClientServiceId)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_DocumentByService_ClientService");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("documentbyservice_pkey");
+
+ entity.ToTable("documentbyservice");
+
+ entity.Property(e => e.Id).HasColumnName("id");
+ entity.Property(e => e.Clientserviceid).HasColumnName("clientserviceid");
+ entity.Property(e => e.Documentpath)
+ .HasMaxLength(1000)
+ .HasColumnName("documentpath");
+
+ entity.HasOne(d => d.Clientservice).WithMany(p => p.Documentbyservice1s)
+ .HasForeignKey(d => d.Clientserviceid)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("documentbyservice_clientserviceid_fkey");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Code).HasName("Gender_pkey");
+
+ entity.ToTable("Gender", "Clients");
+
+ entity.Property(e => e.Code)
+ .HasMaxLength(1)
+ .ValueGeneratedNever();
+ entity.Property(e => e.Name).HasMaxLength(10);
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Code).HasName("gender_pkey");
+
+ entity.ToTable("gender");
+
+ entity.Property(e => e.Code)
+ .HasMaxLength(1)
+ .ValueGeneratedNever()
+ .HasColumnName("code");
+ entity.Property(e => e.Name)
+ .HasMaxLength(10)
+ .HasColumnName("name");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("manufacturer_pkey");
+
+ entity.ToTable("manufacturer");
+
+ entity.Property(e => e.Id).HasColumnName("id");
+ entity.Property(e => e.Name)
+ .HasMaxLength(100)
+ .HasColumnName("name");
+ entity.Property(e => e.Startdate).HasColumnName("startdate");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("Manufacturer_pkey");
+
+ entity.ToTable("Manufacturer", "Clients");
+
+ entity.Property(e => e.Id).HasColumnName("ID");
+ entity.Property(e => e.Name).HasMaxLength(100);
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("product_pkey");
+
+ entity.ToTable("product");
+
+ entity.Property(e => e.Id).HasColumnName("id");
+ entity.Property(e => e.Cost)
+ .HasPrecision(19, 4)
+ .HasColumnName("cost");
+ entity.Property(e => e.Description).HasColumnName("description");
+ entity.Property(e => e.Isactive).HasColumnName("isactive");
+ entity.Property(e => e.Mainimagepath)
+ .HasMaxLength(1000)
+ .HasColumnName("mainimagepath");
+ entity.Property(e => e.Manufacturerid).HasColumnName("manufacturerid");
+ entity.Property(e => e.Title)
+ .HasMaxLength(100)
+ .HasColumnName("title");
+
+ entity.HasOne(d => d.Manufacturer).WithMany(p => p.Products)
+ .HasForeignKey(d => d.Manufacturerid)
+ .HasConstraintName("product_manufacturerid_fkey");
+
+ entity.HasMany(d => d.Attachedproducts).WithMany(p => p.Mainproducts)
+ .UsingEntity>(
+ "Attachedproduct1",
+ r => r.HasOne().WithMany()
+ .HasForeignKey("Attachedproductid")
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("attachedproduct_attachedproductid_fkey"),
+ l => l.HasOne().WithMany()
+ .HasForeignKey("Mainproductid")
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("attachedproduct_mainproductid_fkey"),
+ j =>
+ {
+ j.HasKey("Mainproductid", "Attachedproductid").HasName("attachedproduct_pk");
+ j.ToTable("attachedproduct");
+ j.IndexerProperty("Mainproductid").HasColumnName("mainproductid");
+ j.IndexerProperty("Attachedproductid").HasColumnName("attachedproductid");
+ });
+
+ entity.HasMany(d => d.Mainproducts).WithMany(p => p.Attachedproducts)
+ .UsingEntity>(
+ "Attachedproduct1",
+ r => r.HasOne().WithMany()
+ .HasForeignKey("Mainproductid")
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("attachedproduct_mainproductid_fkey"),
+ l => l.HasOne().WithMany()
+ .HasForeignKey("Attachedproductid")
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("attachedproduct_attachedproductid_fkey"),
+ j =>
+ {
+ j.HasKey("Mainproductid", "Attachedproductid").HasName("attachedproduct_pk");
+ j.ToTable("attachedproduct");
+ j.IndexerProperty("Mainproductid").HasColumnName("mainproductid");
+ j.IndexerProperty("Attachedproductid").HasColumnName("attachedproductid");
+ });
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("Product_pkey");
+
+ entity.ToTable("Product", "Clients");
+
+ entity.Property(e => e.Id).HasColumnName("ID");
+ entity.Property(e => e.Cost).HasPrecision(19, 4);
+ entity.Property(e => e.MainImagePath).HasMaxLength(1000);
+ entity.Property(e => e.ManufacturerId).HasColumnName("ManufacturerID");
+ entity.Property(e => e.Title).HasMaxLength(100);
+
+ entity.HasOne(d => d.Manufacturer).WithMany(p => p.Product1s)
+ .HasForeignKey(d => d.ManufacturerId)
+ .HasConstraintName("FK_Product_Manufacturer");
+
+ entity.HasMany(d => d.AttachedProducts).WithMany(p => p.MainProducts)
+ .UsingEntity>(
+ "AttachedProduct",
+ r => r.HasOne().WithMany()
+ .HasForeignKey("AttachedProductId")
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_AttachedProduct_Product1"),
+ l => l.HasOne().WithMany()
+ .HasForeignKey("MainProductId")
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_AttachedProduct_Product"),
+ j =>
+ {
+ j.HasKey("MainProductId", "AttachedProductId").HasName("AttachedProduct_pkey");
+ j.ToTable("AttachedProduct", "Clients");
+ j.IndexerProperty("MainProductId").HasColumnName("MainProductID");
+ j.IndexerProperty("AttachedProductId").HasColumnName("AttachedProductID");
+ });
+
+ entity.HasMany(d => d.MainProducts).WithMany(p => p.AttachedProducts)
+ .UsingEntity>(
+ "AttachedProduct",
+ r => r.HasOne().WithMany()
+ .HasForeignKey("MainProductId")
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_AttachedProduct_Product"),
+ l => l.HasOne().WithMany()
+ .HasForeignKey("AttachedProductId")
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_AttachedProduct_Product1"),
+ j =>
+ {
+ j.HasKey("MainProductId", "AttachedProductId").HasName("AttachedProduct_pkey");
+ j.ToTable("AttachedProduct", "Clients");
+ j.IndexerProperty("MainProductId").HasColumnName("MainProductID");
+ j.IndexerProperty("AttachedProductId").HasColumnName("AttachedProductID");
+ });
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("ProductPhoto_pkey");
+
+ entity.ToTable("ProductPhoto", "Clients");
+
+ entity.Property(e => e.Id).HasColumnName("ID");
+ entity.Property(e => e.PhotoPath).HasMaxLength(1000);
+ entity.Property(e => e.ProductId).HasColumnName("ProductID");
+
+ entity.HasOne(d => d.Product).WithMany(p => p.ProductPhoto1s)
+ .HasForeignKey(d => d.ProductId)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_ProductPhoto_Product");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("ProductSale_pkey");
+
+ entity.ToTable("ProductSale", "Clients");
+
+ entity.Property(e => e.Id).HasColumnName("ID");
+ entity.Property(e => e.ClientServiceId).HasColumnName("ClientServiceID");
+ entity.Property(e => e.ProductId).HasColumnName("ProductID");
+
+ entity.HasOne(d => d.ClientService).WithMany(p => p.ProductSale1s)
+ .HasForeignKey(d => d.ClientServiceId)
+ .HasConstraintName("FK_ProductSale_ClientService");
+
+ entity.HasOne(d => d.Product).WithMany(p => p.ProductSale1s)
+ .HasForeignKey(d => d.ProductId)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_ProductSale_Product");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("productphoto_pkey");
+
+ entity.ToTable("productphoto");
+
+ entity.Property(e => e.Id).HasColumnName("id");
+ entity.Property(e => e.Photopath)
+ .HasMaxLength(1000)
+ .HasColumnName("photopath");
+ entity.Property(e => e.Productid).HasColumnName("productid");
+
+ entity.HasOne(d => d.Product).WithMany(p => p.Productphotos)
+ .HasForeignKey(d => d.Productid)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("productphoto_productid_fkey");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("productsale_pkey");
+
+ entity.ToTable("productsale");
+
+ entity.Property(e => e.Id).HasColumnName("id");
+ entity.Property(e => e.Clientserviceid).HasColumnName("clientserviceid");
+ entity.Property(e => e.Productid).HasColumnName("productid");
+ entity.Property(e => e.Quantity).HasColumnName("quantity");
+ entity.Property(e => e.Saledate)
+ .HasColumnType("character varying")
+ .HasColumnName("saledate");
+
+ entity.HasOne(d => d.Clientservice).WithMany(p => p.Productsales)
+ .HasForeignKey(d => d.Clientserviceid)
+ .HasConstraintName("productsale_clientserviceid_fkey");
+
+ entity.HasOne(d => d.Product).WithMany(p => p.Productsales)
+ .HasForeignKey(d => d.Productid)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("productsale_productid_fkey");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("Service_pkey");
+
+ entity.ToTable("Service", "Clients");
+
+ entity.Property(e => e.Id).HasColumnName("ID");
+ entity.Property(e => e.Cost).HasPrecision(19, 4);
+ entity.Property(e => e.MainImagePath).HasMaxLength(1000);
+ entity.Property(e => e.Title).HasMaxLength(100);
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("service_pkey");
+
+ entity.ToTable("service");
+
+ entity.Property(e => e.Id).HasColumnName("id");
+ entity.Property(e => e.Cost)
+ .HasPrecision(19, 4)
+ .HasColumnName("cost");
+ entity.Property(e => e.Description).HasColumnName("description");
+ entity.Property(e => e.Discount).HasColumnName("discount");
+ entity.Property(e => e.Durationinseconds).HasColumnName("durationinseconds");
+ entity.Property(e => e.Mainimagepath)
+ .HasMaxLength(1000)
+ .HasColumnName("mainimagepath");
+ entity.Property(e => e.Title)
+ .HasMaxLength(100)
+ .HasColumnName("title");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("ServicePhoto_pkey");
+
+ entity.ToTable("ServicePhoto", "Clients");
+
+ entity.Property(e => e.Id).HasColumnName("ID");
+ entity.Property(e => e.PhotoPath).HasMaxLength(1000);
+ entity.Property(e => e.ServiceId).HasColumnName("ServiceID");
+
+ entity.HasOne(d => d.Service).WithMany(p => p.ServicePhotos)
+ .HasForeignKey(d => d.ServiceId)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("FK_ServicePhoto_Service");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("servicephoto_pkey");
+
+ entity.ToTable("servicephoto");
+
+ entity.Property(e => e.Id).HasColumnName("id");
+ entity.Property(e => e.Photopath)
+ .HasMaxLength(1000)
+ .HasColumnName("photopath");
+ entity.Property(e => e.Serviceid).HasColumnName("serviceid");
+
+ entity.HasOne(d => d.Service).WithMany(p => p.Servicephoto1s)
+ .HasForeignKey(d => d.Serviceid)
+ .OnDelete(DeleteBehavior.ClientSetNull)
+ .HasConstraintName("servicephoto_serviceid_fkey");
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("Tag_pkey");
+
+ entity.ToTable("Tag", "Clients");
+
+ entity.Property(e => e.Id).HasColumnName("ID");
+ entity.Property(e => e.Color)
+ .HasMaxLength(6)
+ .IsFixedLength();
+ entity.Property(e => e.Title).HasMaxLength(30);
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(e => e.Id).HasName("tag_pkey");
+
+ entity.ToTable("tag");
+
+ entity.Property(e => e.Id).HasColumnName("id");
+ entity.Property(e => e.Color)
+ .HasMaxLength(6)
+ .IsFixedLength()
+ .HasColumnName("color");
+ entity.Property(e => e.Title)
+ .HasMaxLength(30)
+ .HasColumnName("title");
+ });
+
+ OnModelCreatingPartial(modelBuilder);
+ }
+
+ partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
+}
diff --git a/TestApplication/MainWindowDockPanel.axaml b/TestApplication/MainWindowDockPanel.axaml
new file mode 100644
index 0000000..e44255d
--- /dev/null
+++ b/TestApplication/MainWindowDockPanel.axaml
@@ -0,0 +1,50 @@
+
+
+
+
+ Топ бар
+
+
+
+
+ Ботом бар
+
+
+
+
+
+ Лефт бар
+
+
+
+
+ Райт бар
+
+
+
+
+
diff --git a/TestApplication/MainWindowDockPanel.axaml.cs b/TestApplication/MainWindowDockPanel.axaml.cs
new file mode 100644
index 0000000..41ea957
--- /dev/null
+++ b/TestApplication/MainWindowDockPanel.axaml.cs
@@ -0,0 +1,12 @@
+using Avalonia.Controls;
+
+namespace TestApplication
+{
+ public partial class MainWindowDockPanel : Window
+ {
+ public MainWindowDockPanel()
+ {
+ InitializeComponent();
+ }
+ }
+}
\ No newline at end of file
diff --git a/TestApplication/MainWindowGrid.axaml b/TestApplication/MainWindowGrid.axaml
new file mode 100644
index 0000000..c155b78
--- /dev/null
+++ b/TestApplication/MainWindowGrid.axaml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
diff --git a/TestApplication/MainWindowGrid.axaml.cs b/TestApplication/MainWindowGrid.axaml.cs
new file mode 100644
index 0000000..8a2e1fb
--- /dev/null
+++ b/TestApplication/MainWindowGrid.axaml.cs
@@ -0,0 +1,13 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace TestApplication;
+
+public partial class MainWindowGrid : Window
+{
+ public MainWindowGrid()
+ {
+ InitializeComponent();
+ }
+}
\ No newline at end of file
diff --git a/TestApplication/MainWindowStackPanel.axaml b/TestApplication/MainWindowStackPanel.axaml
new file mode 100644
index 0000000..5d8a8f5
--- /dev/null
+++ b/TestApplication/MainWindowStackPanel.axaml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TestApplication/MainWindowStackPanel.axaml.cs b/TestApplication/MainWindowStackPanel.axaml.cs
new file mode 100644
index 0000000..adbf72e
--- /dev/null
+++ b/TestApplication/MainWindowStackPanel.axaml.cs
@@ -0,0 +1,13 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+
+namespace TestApplication;
+
+public partial class MainWindowStackPanel : Window
+{
+ public MainWindowStackPanel()
+ {
+ InitializeComponent();
+ }
+}
\ No newline at end of file
diff --git a/TestApplication/Program.cs b/TestApplication/Program.cs
new file mode 100644
index 0000000..0190c70
--- /dev/null
+++ b/TestApplication/Program.cs
@@ -0,0 +1,22 @@
+using Avalonia;
+using System;
+
+namespace TestApplication
+{
+ internal class Program
+ {
+ // Initialization code. Don't use any Avalonia, third-party APIs or any
+ // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
+ // yet and stuff might break.
+ [STAThread]
+ public static void Main(string[] args) => BuildAvaloniaApp()
+ .StartWithClassicDesktopLifetime(args);
+
+ // Avalonia configuration, don't remove; also used by visual designer.
+ public static AppBuilder BuildAvaloniaApp()
+ => AppBuilder.Configure()
+ .UsePlatformDetect()
+ .WithInterFont()
+ .LogToTrace();
+ }
+}
diff --git a/TestApplication/TestApplication.csproj b/TestApplication/TestApplication.csproj
new file mode 100644
index 0000000..a50b2a6
--- /dev/null
+++ b/TestApplication/TestApplication.csproj
@@ -0,0 +1,34 @@
+
+
+ WinExe
+ net8.0
+ enable
+ true
+ app.manifest
+ true
+
+
+
+
+
+
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+ MainWindowDockPanel.axaml
+
+
+ MainWindowStackPanel.axaml
+
+
+
diff --git a/TestApplication/app.manifest b/TestApplication/app.manifest
new file mode 100644
index 0000000..a1afb7d
--- /dev/null
+++ b/TestApplication/app.manifest
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+