diff --git a/demo_hard/Migrations/20250421231548_CreateOrderServiceTable.Designer.cs b/demo_hard/Migrations/20250421231548_CreateOrderServiceTable.Designer.cs
new file mode 100644
index 0000000..c61f0e2
--- /dev/null
+++ b/demo_hard/Migrations/20250421231548_CreateOrderServiceTable.Designer.cs
@@ -0,0 +1,288 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using demo_hard.Models;
+
+#nullable disable
+
+namespace demo_hard.Migrations
+{
+ [DbContext(typeof(User15Context))]
+ [Migration("20250421231548_CreateOrderServiceTable")]
+ partial class CreateOrderServiceTable
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "8.0.10")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("OrderService", b =>
+ {
+ b.Property("OrdersOrderId")
+ .HasColumnType("integer");
+
+ b.Property("ServicesServiceId")
+ .HasColumnType("integer");
+
+ b.HasKey("OrdersOrderId", "ServicesServiceId");
+
+ b.HasIndex("ServicesServiceId");
+
+ b.ToTable("OrderService");
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Client", b =>
+ {
+ b.Property("ClientId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("client_id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityAlwaysColumn(b.Property("ClientId"));
+
+ b.Property("Address")
+ .HasColumnType("character varying")
+ .HasColumnName("address");
+
+ b.Property("Birthday")
+ .HasColumnType("date")
+ .HasColumnName("birthday");
+
+ b.Property("ClientCode")
+ .HasColumnType("integer")
+ .HasColumnName("client_code");
+
+ b.Property("Email")
+ .HasColumnType("character varying")
+ .HasColumnName("email");
+
+ b.Property("Fio")
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)")
+ .HasColumnName("fio");
+
+ b.Property("Passport")
+ .HasMaxLength(10)
+ .HasColumnType("character varying(10)")
+ .HasColumnName("passport");
+
+ b.Property("Password")
+ .HasColumnType("character varying")
+ .HasColumnName("password");
+
+ b.Property("Role")
+ .HasColumnType("integer")
+ .HasColumnName("role");
+
+ b.HasKey("ClientId")
+ .HasName("client_pk");
+
+ b.HasIndex(new[] { "ClientCode" }, "client_unique")
+ .IsUnique();
+
+ b.ToTable("client", (string)null);
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Employee", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ b.Property("EnterStatus")
+ .HasColumnType("character varying")
+ .HasColumnName("enter_status");
+
+ b.Property("Fio")
+ .HasColumnType("character varying")
+ .HasColumnName("fio");
+
+ b.Property("LastEnter")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_enter");
+
+ b.Property("Login")
+ .HasColumnType("character varying")
+ .HasColumnName("login");
+
+ b.Property("Password")
+ .HasColumnType("character varying")
+ .HasColumnName("password");
+
+ b.Property("Photo")
+ .HasColumnType("character varying")
+ .HasColumnName("photo");
+
+ b.Property("Role")
+ .HasColumnType("integer")
+ .HasColumnName("role");
+
+ b.HasKey("Id")
+ .HasName("employees_pk");
+
+ b.ToTable("employees", (string)null);
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Order", b =>
+ {
+ b.Property("OrderId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("order_id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityAlwaysColumn(b.Property("OrderId"));
+
+ b.Property("ClientId")
+ .HasColumnType("integer")
+ .HasColumnName("client_id");
+
+ b.Property("EndDate")
+ .HasColumnType("date")
+ .HasColumnName("end_date");
+
+ b.Property("OrderCode")
+ .HasColumnType("character varying")
+ .HasColumnName("order_code");
+
+ b.Property("RentTime")
+ .HasColumnType("integer")
+ .HasColumnName("rent_time");
+
+ b.Property("StartDate")
+ .HasColumnType("date")
+ .HasColumnName("start_date");
+
+ b.Property("Status")
+ .HasColumnType("character varying")
+ .HasColumnName("status");
+
+ b.Property("Time")
+ .HasColumnType("time without time zone")
+ .HasColumnName("time");
+
+ b.HasKey("OrderId")
+ .HasName("orders_pk");
+
+ b.ToTable("orders", (string)null);
+ });
+
+ modelBuilder.Entity("demo_hard.Models.OrderService", b =>
+ {
+ b.Property("OrderId")
+ .HasColumnType("integer")
+ .HasColumnName("order_id");
+
+ b.Property("ServiceId")
+ .HasColumnType("integer")
+ .HasColumnName("service_id");
+
+ b.Property("RentTime")
+ .HasColumnType("integer")
+ .HasColumnName("rent_time");
+
+ b.HasKey("OrderId", "ServiceId");
+
+ b.HasIndex("ServiceId");
+
+ b.ToTable("order_services", (string)null);
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Role", b =>
+ {
+ b.Property("RoleId")
+ .HasColumnType("integer")
+ .HasColumnName("role_id");
+
+ b.Property("RoleName")
+ .HasColumnType("character varying")
+ .HasColumnName("role_name");
+
+ b.ToTable("roles", (string)null);
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Service", b =>
+ {
+ b.Property("ServiceId")
+ .HasColumnType("integer")
+ .HasColumnName("service_id");
+
+ b.Property("CostPerHour")
+ .HasColumnType("integer")
+ .HasColumnName("cost_per_hour");
+
+ b.Property("ServiceCode")
+ .IsRequired()
+ .HasColumnType("character varying")
+ .HasColumnName("service_code");
+
+ b.Property("ServiceName")
+ .HasColumnType("character varying")
+ .HasColumnName("service_name");
+
+ b.HasKey("ServiceId")
+ .HasName("services_pk");
+
+ b.HasIndex(new[] { "ServiceCode" }, "services_unique")
+ .IsUnique();
+
+ b.ToTable("services", (string)null);
+ });
+
+ modelBuilder.Entity("OrderService", b =>
+ {
+ b.HasOne("demo_hard.Models.Order", null)
+ .WithMany()
+ .HasForeignKey("OrdersOrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("demo_hard.Models.Service", null)
+ .WithMany()
+ .HasForeignKey("ServicesServiceId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("demo_hard.Models.OrderService", b =>
+ {
+ b.HasOne("demo_hard.Models.Order", "Order")
+ .WithMany("OrderServices")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("order_services_order_id_fkey");
+
+ b.HasOne("demo_hard.Models.Service", "Service")
+ .WithMany("OrderServices")
+ .HasForeignKey("ServiceId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("order_services_service_id_fkey");
+
+ b.Navigation("Order");
+
+ b.Navigation("Service");
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Order", b =>
+ {
+ b.Navigation("OrderServices");
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Service", b =>
+ {
+ b.Navigation("OrderServices");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/demo_hard/Migrations/20250421231548_CreateOrderServiceTable.cs b/demo_hard/Migrations/20250421231548_CreateOrderServiceTable.cs
new file mode 100644
index 0000000..1e7e54e
--- /dev/null
+++ b/demo_hard/Migrations/20250421231548_CreateOrderServiceTable.cs
@@ -0,0 +1,53 @@
+using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace demo_hard.Migrations
+{
+ ///
+ public partial class CreateOrderServiceTable : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "order_services",
+ columns: table => new
+ {
+ order_id = table.Column(type: "integer", nullable: false),
+ service_id = table.Column(type: "integer", nullable: false),
+ rent_time = table.Column(type: "integer", nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_order_services", x => new { x.order_id, x.service_id });
+ table.ForeignKey(
+ name: "FK_order_services_orders_order_id",
+ column: x => x.order_id,
+ principalTable: "orders",
+ principalColumn: "order_id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_order_services_services_service_id",
+ column: x => x.service_id,
+ principalTable: "services",
+ principalColumn: "service_id",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_order_services_service_id",
+ table: "order_services",
+ column: "service_id");
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "order_services");
+ }
+ }
+}
+
diff --git a/demo_hard/Migrations/User15ContextModelSnapshot.cs b/demo_hard/Migrations/User15ContextModelSnapshot.cs
new file mode 100644
index 0000000..5928cef
--- /dev/null
+++ b/demo_hard/Migrations/User15ContextModelSnapshot.cs
@@ -0,0 +1,285 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using demo_hard.Models;
+
+#nullable disable
+
+namespace demo_hard.Migrations
+{
+ [DbContext(typeof(User15Context))]
+ partial class User15ContextModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "8.0.10")
+ .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+ NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+ modelBuilder.Entity("OrderService", b =>
+ {
+ b.Property("OrdersOrderId")
+ .HasColumnType("integer");
+
+ b.Property("ServicesServiceId")
+ .HasColumnType("integer");
+
+ b.HasKey("OrdersOrderId", "ServicesServiceId");
+
+ b.HasIndex("ServicesServiceId");
+
+ b.ToTable("OrderService");
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Client", b =>
+ {
+ b.Property("ClientId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("client_id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityAlwaysColumn(b.Property("ClientId"));
+
+ b.Property("Address")
+ .HasColumnType("character varying")
+ .HasColumnName("address");
+
+ b.Property("Birthday")
+ .HasColumnType("date")
+ .HasColumnName("birthday");
+
+ b.Property("ClientCode")
+ .HasColumnType("integer")
+ .HasColumnName("client_code");
+
+ b.Property("Email")
+ .HasColumnType("character varying")
+ .HasColumnName("email");
+
+ b.Property("Fio")
+ .HasMaxLength(100)
+ .HasColumnType("character varying(100)")
+ .HasColumnName("fio");
+
+ b.Property("Passport")
+ .HasMaxLength(10)
+ .HasColumnType("character varying(10)")
+ .HasColumnName("passport");
+
+ b.Property("Password")
+ .HasColumnType("character varying")
+ .HasColumnName("password");
+
+ b.Property("Role")
+ .HasColumnType("integer")
+ .HasColumnName("role");
+
+ b.HasKey("ClientId")
+ .HasName("client_pk");
+
+ b.HasIndex(new[] { "ClientCode" }, "client_unique")
+ .IsUnique();
+
+ b.ToTable("client", (string)null);
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Employee", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("integer")
+ .HasColumnName("id");
+
+ b.Property("EnterStatus")
+ .HasColumnType("character varying")
+ .HasColumnName("enter_status");
+
+ b.Property("Fio")
+ .HasColumnType("character varying")
+ .HasColumnName("fio");
+
+ b.Property("LastEnter")
+ .HasColumnType("timestamp without time zone")
+ .HasColumnName("last_enter");
+
+ b.Property("Login")
+ .HasColumnType("character varying")
+ .HasColumnName("login");
+
+ b.Property("Password")
+ .HasColumnType("character varying")
+ .HasColumnName("password");
+
+ b.Property("Photo")
+ .HasColumnType("character varying")
+ .HasColumnName("photo");
+
+ b.Property("Role")
+ .HasColumnType("integer")
+ .HasColumnName("role");
+
+ b.HasKey("Id")
+ .HasName("employees_pk");
+
+ b.ToTable("employees", (string)null);
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Order", b =>
+ {
+ b.Property("OrderId")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("integer")
+ .HasColumnName("order_id");
+
+ NpgsqlPropertyBuilderExtensions.UseIdentityAlwaysColumn(b.Property("OrderId"));
+
+ b.Property("ClientId")
+ .HasColumnType("integer")
+ .HasColumnName("client_id");
+
+ b.Property("EndDate")
+ .HasColumnType("date")
+ .HasColumnName("end_date");
+
+ b.Property("OrderCode")
+ .HasColumnType("character varying")
+ .HasColumnName("order_code");
+
+ b.Property("RentTime")
+ .HasColumnType("integer")
+ .HasColumnName("rent_time");
+
+ b.Property("StartDate")
+ .HasColumnType("date")
+ .HasColumnName("start_date");
+
+ b.Property("Status")
+ .HasColumnType("character varying")
+ .HasColumnName("status");
+
+ b.Property("Time")
+ .HasColumnType("time without time zone")
+ .HasColumnName("time");
+
+ b.HasKey("OrderId")
+ .HasName("orders_pk");
+
+ b.ToTable("orders", (string)null);
+ });
+
+ modelBuilder.Entity("demo_hard.Models.OrderService", b =>
+ {
+ b.Property("OrderId")
+ .HasColumnType("integer")
+ .HasColumnName("order_id");
+
+ b.Property("ServiceId")
+ .HasColumnType("integer")
+ .HasColumnName("service_id");
+
+ b.Property("RentTime")
+ .HasColumnType("integer")
+ .HasColumnName("rent_time");
+
+ b.HasKey("OrderId", "ServiceId");
+
+ b.HasIndex("ServiceId");
+
+ b.ToTable("order_services", (string)null);
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Role", b =>
+ {
+ b.Property("RoleId")
+ .HasColumnType("integer")
+ .HasColumnName("role_id");
+
+ b.Property("RoleName")
+ .HasColumnType("character varying")
+ .HasColumnName("role_name");
+
+ b.ToTable("roles", (string)null);
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Service", b =>
+ {
+ b.Property("ServiceId")
+ .HasColumnType("integer")
+ .HasColumnName("service_id");
+
+ b.Property("CostPerHour")
+ .HasColumnType("integer")
+ .HasColumnName("cost_per_hour");
+
+ b.Property("ServiceCode")
+ .IsRequired()
+ .HasColumnType("character varying")
+ .HasColumnName("service_code");
+
+ b.Property("ServiceName")
+ .HasColumnType("character varying")
+ .HasColumnName("service_name");
+
+ b.HasKey("ServiceId")
+ .HasName("services_pk");
+
+ b.HasIndex(new[] { "ServiceCode" }, "services_unique")
+ .IsUnique();
+
+ b.ToTable("services", (string)null);
+ });
+
+ modelBuilder.Entity("OrderService", b =>
+ {
+ b.HasOne("demo_hard.Models.Order", null)
+ .WithMany()
+ .HasForeignKey("OrdersOrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.HasOne("demo_hard.Models.Service", null)
+ .WithMany()
+ .HasForeignKey("ServicesServiceId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+ });
+
+ modelBuilder.Entity("demo_hard.Models.OrderService", b =>
+ {
+ b.HasOne("demo_hard.Models.Order", "Order")
+ .WithMany("OrderServices")
+ .HasForeignKey("OrderId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("order_services_order_id_fkey");
+
+ b.HasOne("demo_hard.Models.Service", "Service")
+ .WithMany("OrderServices")
+ .HasForeignKey("ServiceId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired()
+ .HasConstraintName("order_services_service_id_fkey");
+
+ b.Navigation("Order");
+
+ b.Navigation("Service");
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Order", b =>
+ {
+ b.Navigation("OrderServices");
+ });
+
+ modelBuilder.Entity("demo_hard.Models.Service", b =>
+ {
+ b.Navigation("OrderServices");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/demo_hard/Models/Order.cs b/demo_hard/Models/Order.cs
index 5a2e259..80190d7 100644
--- a/demo_hard/Models/Order.cs
+++ b/demo_hard/Models/Order.cs
@@ -6,20 +6,14 @@ namespace demo_hard.Models;
public partial class Order
{
public int OrderId { get; set; }
-
public string? OrderCode { get; set; }
-
public TimeOnly? Time { get; set; }
-
public DateOnly? EndDate { get; set; }
-
public int? RentTime { get; set; }
-
public DateOnly? StartDate { get; set; }
-
public int? ClientId { get; set; }
-
public string? Status { get; set; }
-
+
+ public virtual ICollection OrderServices { get; set; } = new List();
public virtual ICollection Services { get; set; } = new List();
-}
+}
\ No newline at end of file
diff --git a/demo_hard/Models/OrderService.cs b/demo_hard/Models/OrderService.cs
new file mode 100644
index 0000000..0efac48
--- /dev/null
+++ b/demo_hard/Models/OrderService.cs
@@ -0,0 +1,12 @@
+namespace demo_hard.Models;
+
+public class OrderService
+{
+ public int OrderId { get; set; }
+ public int ServiceId { get; set; }
+ public int RentTime { get; set; }
+
+ public virtual Order Order { get; set; }
+
+ public virtual Service Service { get; set; }
+}
\ No newline at end of file
diff --git a/demo_hard/Models/Service.cs b/demo_hard/Models/Service.cs
index c18c048..a43e9b4 100644
--- a/demo_hard/Models/Service.cs
+++ b/demo_hard/Models/Service.cs
@@ -1,17 +1,14 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
namespace demo_hard.Models;
public partial class Service
{
public string? ServiceName { get; set; }
-
public int? CostPerHour { get; set; }
-
public string ServiceCode { get; set; } = null!;
-
public int ServiceId { get; set; }
-
+
+ public virtual ICollection OrderServices { get; set; } = new List();
public virtual ICollection Orders { get; set; } = new List();
-}
+}
\ No newline at end of file
diff --git a/demo_hard/Models/User15Context.cs b/demo_hard/Models/User15Context.cs
index 167a850..5582c80 100644
--- a/demo_hard/Models/User15Context.cs
+++ b/demo_hard/Models/User15Context.cs
@@ -16,27 +16,26 @@ public partial class User15Context : DbContext
}
public virtual DbSet Clients { get; set; }
-
public virtual DbSet Employees { get; set; }
-
public virtual DbSet Orders { get; set; }
-
public virtual DbSet Roles { get; set; }
-
public virtual DbSet Services { get; set; }
+ public virtual DbSet OrderServices { 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=5421;USERNAME=user15;DATABASE=user15;Password=3XkvwMOb");
+ {
+ if (!optionsBuilder.IsConfigured)
+ {
+ optionsBuilder.UseNpgsql("Host=45.67.56.214;Port=5421;USERNAME=user15;DATABASE=user15;Password=3XkvwMOb");
+ }
+ }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity(entity =>
{
entity.HasKey(e => e.ClientId).HasName("client_pk");
-
entity.ToTable("client");
-
entity.HasIndex(e => e.ClientCode, "client_unique").IsUnique();
entity.Property(e => e.ClientId)
@@ -65,7 +64,6 @@ public partial class User15Context : DbContext
modelBuilder.Entity(entity =>
{
entity.HasKey(e => e.Id).HasName("employees_pk");
-
entity.ToTable("employees");
entity.Property(e => e.Id)
@@ -95,7 +93,6 @@ public partial class User15Context : DbContext
modelBuilder.Entity(entity =>
{
entity.HasKey(e => e.OrderId).HasName("orders_pk");
-
entity.ToTable("orders");
entity.Property(e => e.OrderId)
@@ -113,32 +110,14 @@ public partial class User15Context : DbContext
.HasColumnName("status");
entity.Property(e => e.Time).HasColumnName("time");
- entity.HasMany(d => d.Services).WithMany(p => p.Orders)
- .UsingEntity>(
- "OrderService",
- r => r.HasOne().WithMany()
- .HasForeignKey("ServiceId")
- .OnDelete(DeleteBehavior.ClientSetNull)
- .HasConstraintName("order_services_service_id_fkey"),
- l => l.HasOne().WithMany()
- .HasForeignKey("OrderId")
- .OnDelete(DeleteBehavior.ClientSetNull)
- .HasConstraintName("order_services_order_id_fkey"),
- j =>
- {
- j.HasKey("OrderId", "ServiceId").HasName("order_services_pkey");
- j.ToTable("order_services");
- j.IndexerProperty("OrderId").HasColumnName("order_id");
- j.IndexerProperty("ServiceId").HasColumnName("service_id");
- });
+ entity.HasMany(o => o.OrderServices)
+ .WithOne(os => os.Order)
+ .HasForeignKey(os => os.OrderId);
});
modelBuilder.Entity(entity =>
{
- entity
- .HasNoKey()
- .ToTable("roles");
-
+ entity.HasNoKey().ToTable("roles");
entity.Property(e => e.RoleId).HasColumnName("role_id");
entity.Property(e => e.RoleName)
.HasColumnType("character varying")
@@ -148,9 +127,7 @@ public partial class User15Context : DbContext
modelBuilder.Entity(entity =>
{
entity.HasKey(e => e.ServiceId).HasName("services_pk");
-
entity.ToTable("services");
-
entity.HasIndex(e => e.ServiceCode, "services_unique").IsUnique();
entity.Property(e => e.ServiceId)
@@ -163,10 +140,34 @@ public partial class User15Context : DbContext
entity.Property(e => e.ServiceName)
.HasColumnType("character varying")
.HasColumnName("service_name");
+
+ entity.HasMany(s => s.OrderServices)
+ .WithOne(os => os.Service)
+ .HasForeignKey(os => os.ServiceId);
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasKey(os => new { os.OrderId, os.ServiceId });
+ entity.ToTable("order_services");
+
+ entity.Property(os => os.OrderId).HasColumnName("order_id");
+ entity.Property(os => os.ServiceId).HasColumnName("service_id");
+ entity.Property(os => os.RentTime).HasColumnName("rent_time");
+
+ entity.HasOne(os => os.Order)
+ .WithMany(o => o.OrderServices)
+ .HasForeignKey(os => os.OrderId)
+ .HasConstraintName("order_services_order_id_fkey");
+
+ entity.HasOne(os => os.Service)
+ .WithMany(s => s.OrderServices)
+ .HasForeignKey(os => os.ServiceId)
+ .HasConstraintName("order_services_service_id_fkey");
});
OnModelCreatingPartial(modelBuilder);
}
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
-}
+}
\ No newline at end of file
diff --git a/demo_hard/Order.axaml.cs b/demo_hard/Order.axaml.cs
index 06ad9fb..c9a55e2 100644
--- a/demo_hard/Order.axaml.cs
+++ b/demo_hard/Order.axaml.cs
@@ -20,24 +20,52 @@ public partial class Order : Window
private void LoadOrderData()
{
-
var client = _db.Clients.FirstOrDefault(c => c.ClientId == _order.ClientId);
OrderNumber.Text = _order.OrderId.ToString();
- ClientName.Text = client?.Fio ?? "Не указан";
+ ClientName.Text = client?.Fio ?? "Не указан";
OrderDate.Text = $"{_order.StartDate} {_order.Time}";
- TotalCost.Text = _order.Services.Sum(s => s.CostPerHour ?? 0).ToString("C");
- StatusText.Text = _order.Status ?? "active";
+
+ // Парсим информацию об услугах из OrderCode
+ var servicesInfo = ParseServicesInfo(_order);
+ TotalCost.Text = servicesInfo.totalCost.ToString("C");
+ StatusText.Text = _order.Status ?? "Новая";
+ }
+
+ private (decimal totalCost, string servicesText) ParseServicesInfo(Models.Order order)
+ {
+ decimal total = 0;
+ string info = "";
+
+ if (!string.IsNullOrEmpty(order.OrderCode))
+ {
+ var parts = order.OrderCode.Split(';');
+ foreach (var part in parts)
+ {
+ if (string.IsNullOrEmpty(part)) continue;
+
+ var serviceParts = part.Split(':');
+ if (serviceParts.Length == 2 &&
+ int.TryParse(serviceParts[0], out var serviceId) &&
+ int.TryParse(serviceParts[1], out var rentTime))
+ {
+ var service = _db.Services.Find(serviceId);
+ if (service != null)
+ {
+ var cost = (service.CostPerHour ?? 0) * rentTime;
+ total += cost;
+ info += $"{service.ServiceName} - {rentTime} ч ({cost:C})\n";
+ }
+ }
+ }
+ }
+
+ return (total, info);
}
private void PrintBarcode_Click(object sender, RoutedEventArgs e)
{
- if (_order.RentTime == null)
- {
- _order.RentTime = 1;
- }
-
- new BarcodeWindow(_order.OrderId, _order.RentTime.Value).Show();
+ new BarcodeWindow(_order.OrderId, _order.RentTime ?? 1).Show();
Close();
}
diff --git a/demo_hard/SallerWindow.axaml b/demo_hard/SallerWindow.axaml
index 428ae8c..c21bdb5 100644
--- a/demo_hard/SallerWindow.axaml
+++ b/demo_hard/SallerWindow.axaml
@@ -3,64 +3,91 @@
x:Class="demo_hard.SallerWindow"
x:CompileBindings="False"
Title="Оформление заказа"
- Width="600"
- Height="500">
+ Width="650"
+ Height="600">
-
-
-
-
+
+
+
+
+ Watermark="Будет сгенерирован автоматически"
+ IsReadOnly="True"
+ FontSize="14"
+ Padding="5"/>
-
-
-
+
+
+
-
-
+
+ FontSize="14"
+ Padding="5"/>
-
-
-
-
-
\ No newline at end of file
diff --git a/demo_hard/SallerWindow.axaml.cs b/demo_hard/SallerWindow.axaml.cs
index 955be25..3e2a07a 100644
--- a/demo_hard/SallerWindow.axaml.cs
+++ b/demo_hard/SallerWindow.axaml.cs
@@ -6,47 +6,72 @@ using Avalonia.Interactivity;
using demo_hard.Models;
using Microsoft.EntityFrameworkCore;
using System.Threading.Tasks;
-using Avalonia.Input;
+using System.IO;
+using System.Diagnostics;
+using iTextSharp.text;
+using iTextSharp.text.pdf;
+using ReactiveUI;
using System.ComponentModel;
namespace demo_hard;
-public partial class SallerWindow : Window, INotifyPropertyChanged
+public partial class SallerWindow : Window, INotifyPropertyChanged, IReactiveObject, INotifyPropertyChanging
{
- private readonly User15Context _db = new();
- public ObservableCollection Clients { get; } = new();
- public ObservableCollection Services { get; } = new();
- public ObservableCollection SelectedServices { get; } = new();
+ private readonly User15Context _databaseContext = new User15Context();
+ public ObservableCollection Clients { get; } = new ObservableCollection();
+ public ObservableCollection Services { get; } = new ObservableCollection();
+ public ObservableCollection SelectedServices { get; } = new ObservableCollection();
- private Client? _selectedClient;
- public Client? SelectedClient
+ public class ServiceWithRentTime : Service
{
- get => _selectedClient;
- set
- {
- _selectedClient = value;
- OnPropertyChanged(nameof(SelectedClient));
- }
+ public int RentTime { get; set; } = 30;
+ public string Status { get; set; } = "Новая";
}
- private Service? _selectedService;
- public Service? SelectedService
+ private Client _selectedClient;
+ public Client SelectedClient
{
- get => _selectedService;
- set
- {
- _selectedService = value;
- OnPropertyChanged(nameof(SelectedService));
- }
+ get { return _selectedClient; }
+ set { this.RaiseAndSetIfChanged(ref _selectedClient, value); }
}
- public event PropertyChangedEventHandler? PropertyChanged;
+ private Service _selectedService;
+ public Service SelectedService
+ {
+ get { return _selectedService; }
+ set { this.RaiseAndSetIfChanged(ref _selectedService, value); }
+ }
+
+ private int _selectedRentTime = 30;
+ public int SelectedRentTime
+ {
+ get { return _selectedRentTime; }
+ set { this.RaiseAndSetIfChanged(ref _selectedRentTime, value); }
+ }
+
+ public event PropertyChangedEventHandler PropertyChanged;
+ public event PropertyChangingEventHandler PropertyChanging;
+
+ void IReactiveObject.RaisePropertyChanged(PropertyChangedEventArgs eventArgs)
+ {
+ PropertyChanged?.Invoke(this, eventArgs);
+ }
+
+ void IReactiveObject.RaisePropertyChanging(PropertyChangingEventArgs eventArgs)
+ {
+ PropertyChanging?.Invoke(this, eventArgs);
+ }
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
+ protected virtual void OnPropertyChanging(string propertyName)
+ {
+ PropertyChanging?.Invoke(this, new PropertyChangingEventArgs(propertyName));
+ }
+
public SallerWindow()
{
InitializeComponent();
@@ -59,52 +84,63 @@ public partial class SallerWindow : Window, INotifyPropertyChanged
{
try
{
- await _db.Clients.LoadAsync();
- await _db.Services.LoadAsync();
+ await _databaseContext.Clients.LoadAsync();
+ await _databaseContext.Services.LoadAsync();
Clients.Clear();
Services.Clear();
- foreach (var client in _db.Clients.Local.ToList())
+ foreach (Client client in _databaseContext.Clients.Local.ToList())
+ {
Clients.Add(client);
+ }
- foreach (var service in _db.Services.Local.ToList())
+ foreach (Service service in _databaseContext.Services.Local.ToList())
+ {
Services.Add(service);
+ }
}
- catch (Exception ex)
+ catch (Exception exception)
{
- StatusText.Text = $"Ошибка загрузки данных: {ex.Message}";
+ StatusText.Text = $"Ошибка загрузки данных: {exception.Message}";
}
}
- private async void AddClient_Click(object sender, RoutedEventArgs e)
+ private async void AddClientButtonClick(object sender, RoutedEventArgs routedEventArgs)
{
- var dialog = new AddClient();
- var newClient = await dialog.ShowDialog(this);
+ AddClient dialogWindow = new AddClient();
+ Client newClient = await dialogWindow.ShowDialog(this);
if (newClient != null)
{
try
{
- _db.Clients.Add(newClient);
- await _db.SaveChangesAsync();
+ _databaseContext.Clients.Add(newClient);
+ await _databaseContext.SaveChangesAsync();
Clients.Add(newClient);
SelectedClient = newClient;
}
- catch (Exception ex)
+ catch (Exception exception)
{
- StatusText.Text = $"Ошибка добавления клиента: {ex.Message}";
+ StatusText.Text = $"Ошибка добавления клиента: {exception.Message}";
}
}
}
- private void AddService_Click(object sender, RoutedEventArgs e)
+ private void AddServiceButtonClick(object sender, RoutedEventArgs routedEventArgs)
{
if (SelectedService != null)
{
- if (!SelectedServices.Contains(SelectedService))
+ if (!SelectedServices.Any(service => service.ServiceId == SelectedService.ServiceId))
{
- SelectedServices.Add(SelectedService);
+ SelectedServices.Add(new ServiceWithRentTime
+ {
+ ServiceId = SelectedService.ServiceId,
+ ServiceName = SelectedService.ServiceName,
+ CostPerHour = SelectedService.CostPerHour,
+ RentTime = SelectedRentTime,
+ Status = "Новая"
+ });
}
else
{
@@ -117,25 +153,23 @@ public partial class SallerWindow : Window, INotifyPropertyChanged
}
}
- private void RemoveService_Click(object sender, RoutedEventArgs e)
+ private void RemoveServiceButtonClick(object sender, RoutedEventArgs routedEventArgs)
{
- if (sender is Button button && button.CommandParameter is Service service)
+ if (sender is Button button && button.CommandParameter is ServiceWithRentTime service)
{
SelectedServices.Remove(service);
}
}
- private async void CreateOrder_Click(object sender, RoutedEventArgs e)
+ private async void CreateOrderButtonClick(object sender, RoutedEventArgs routedEventArgs)
{
-
if (SelectedClient == null)
{
StatusText.Text = "Выберите клиента";
return;
}
-
- if (!SelectedServices.Any())
+ if (SelectedServices.Count == 0)
{
StatusText.Text = "Добавьте хотя бы одну услугу";
return;
@@ -143,40 +177,117 @@ public partial class SallerWindow : Window, INotifyPropertyChanged
try
{
-
- var order = new Models.Order()
+ string orderNumber = $"{new Random().Next(10000000, 99999999)}/{DateTime.Now:dd.MM.yyyy}";
+ Models.Order newOrder = new Models.Order()
{
ClientId = SelectedClient.ClientId,
Time = TimeOnly.FromDateTime(DateTime.Now),
StartDate = DateOnly.FromDateTime(DateTime.Now),
- Status = "active",
- Services = SelectedServices.ToList(),
- RentTime = 1
+ Status = "Новая",
+ RentTime = SelectedServices.Max(service => service.RentTime),
+ OrderCode = orderNumber
};
-
- _db.Orders.Add(order);
- await _db.SaveChangesAsync();
+ _databaseContext.Orders.Add(newOrder);
+ await _databaseContext.SaveChangesAsync();
-
- order.OrderCode = GenerateBarcode(order.OrderId, order.RentTime ?? 1);
- await _db.SaveChangesAsync();
+ foreach (ServiceWithRentTime service in SelectedServices)
+ {
+ _databaseContext.OrderServices.Add(new OrderService
+ {
+ OrderId = newOrder.OrderId,
+ ServiceId = service.ServiceId,
+ RentTime = service.RentTime
+ });
+ }
-
- new BarcodeWindow(order.OrderId, order.RentTime ?? 1).Show();
-
-
+ await _databaseContext.SaveChangesAsync();
+ GenerateOrderPdfDocument(newOrder);
+ new BarcodeWindow(newOrder.OrderId, newOrder.RentTime ?? 30).Show();
Close();
}
- catch (Exception ex)
+ catch (Exception exception)
{
- StatusText.Text = $"Ошибка создания заказа: {ex.Message}";
+ StatusText.Text = $"Ошибка создания заказа: {exception.Message}";
}
}
- private string GenerateBarcode(int orderId, int rentTime)
+ private void GenerateOrderPdfDocument(Models.Order order)
{
- var rnd = new Random();
- return $"{orderId}{DateTime.Now:ddMMyyHHmm}{rentTime}{rnd.Next(100000, 999999)}";
+ string documentsDirectoryPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
+ string pdfFilePath = Path.Combine(documentsDirectoryPath, $"Заказ_{order.OrderCode.Replace("/", "_")}.pdf");
+
+ using (Document document = new Document(PageSize.A4, 40, 40, 40, 40))
+ {
+ PdfWriter pdfWriter = PdfWriter.GetInstance(document, new FileStream(pdfFilePath, FileMode.Create));
+ document.Open();
+
+ Font titleFont = FontFactory.GetFont("Arial", 16, Font.BOLD);
+ Font headerFont = FontFactory.GetFont("Arial", 12, Font.BOLD);
+ Font normalFont = FontFactory.GetFont("Arial", 12);
+
+ Paragraph titleParagraph = new Paragraph("Квитанция об оплате", titleFont);
+ titleParagraph.Alignment = Element.ALIGN_CENTER;
+ titleParagraph.SpacingAfter = 20;
+ document.Add(titleParagraph);
+
+ PdfPTable orderInfoTable = new PdfPTable(2);
+ orderInfoTable.WidthPercentage = 100;
+ orderInfoTable.SetWidths(new float[] { 30, 70 });
+
+ AddPdfTableRow(orderInfoTable, "Номер заказа:", order.OrderCode, headerFont, normalFont);
+ AddPdfTableRow(orderInfoTable, "Дата и время:", $"{order.StartDate:dd.MM.yyyy} {order.Time:hh\\:mm}", headerFont, normalFont);
+ AddPdfTableRow(orderInfoTable, "Клиент:", SelectedClient?.Fio ?? "Не указан", headerFont, normalFont);
+ AddPdfTableRow(orderInfoTable, "Статус:", order.Status, headerFont, normalFont);
+
+ document.Add(orderInfoTable);
+ document.Add(new Paragraph(" "));
+
+ Paragraph servicesTitleParagraph = new Paragraph("Оказанные услуги:", headerFont);
+ servicesTitleParagraph.SpacingAfter = 10;
+ document.Add(servicesTitleParagraph);
+
+ PdfPTable servicesTable = new PdfPTable(3);
+ servicesTable.WidthPercentage = 100;
+ servicesTable.SetWidths(new float[] { 60, 20, 20 });
+
+ servicesTable.AddCell(new Phrase("Наименование услуги", headerFont));
+ servicesTable.AddCell(new Phrase("Стоимость/час", headerFont));
+ servicesTable.AddCell(new Phrase("Время (мин)", headerFont));
+
+ foreach (ServiceWithRentTime service in SelectedServices)
+ {
+ servicesTable.AddCell(new Phrase(service.ServiceName, normalFont));
+ servicesTable.AddCell(new Phrase($"{service.CostPerHour:N2} ₽", normalFont));
+ servicesTable.AddCell(new Phrase(service.RentTime.ToString(), normalFont));
+ }
+
+ document.Add(servicesTable);
+ document.Add(new Paragraph(" "));
+
+ decimal totalAmount = SelectedServices.Sum(service => (service.CostPerHour ?? 0) * (service.RentTime / 60m));
+ Paragraph totalParagraph = new Paragraph($"Итого к оплате: {totalAmount:N2} ₽", headerFont);
+ totalParagraph.Alignment = Element.ALIGN_RIGHT;
+ document.Add(totalParagraph);
+ }
+
+ try
+ {
+ Process.Start(new ProcessStartInfo
+ {
+ FileName = pdfFilePath,
+ UseShellExecute = true
+ });
+ }
+ catch (Exception exception)
+ {
+ StatusText.Text = $"Ошибка при открытии PDF: {exception.Message}";
+ }
+ }
+
+ private void AddPdfTableRow(PdfPTable table, string label, string value, Font labelFont, Font valueFont)
+ {
+ table.AddCell(new Phrase(label, labelFont));
+ table.AddCell(new Phrase(value, valueFont));
}
}
\ No newline at end of file
diff --git a/demo_hard/bin/Debug/net9.0/DynamicData.dll b/demo_hard/bin/Debug/net9.0/DynamicData.dll
new file mode 100644
index 0000000..1c7f8f1
Binary files /dev/null and b/demo_hard/bin/Debug/net9.0/DynamicData.dll differ
diff --git a/demo_hard/bin/Debug/net9.0/ReactiveUI.dll b/demo_hard/bin/Debug/net9.0/ReactiveUI.dll
new file mode 100644
index 0000000..32e440c
Binary files /dev/null and b/demo_hard/bin/Debug/net9.0/ReactiveUI.dll differ
diff --git a/demo_hard/bin/Debug/net9.0/Splat.dll b/demo_hard/bin/Debug/net9.0/Splat.dll
new file mode 100644
index 0000000..f288522
Binary files /dev/null and b/demo_hard/bin/Debug/net9.0/Splat.dll differ
diff --git a/demo_hard/bin/Debug/net9.0/System.Reactive.dll b/demo_hard/bin/Debug/net9.0/System.Reactive.dll
new file mode 100644
index 0000000..d6d2efa
Binary files /dev/null and b/demo_hard/bin/Debug/net9.0/System.Reactive.dll differ
diff --git a/demo_hard/bin/Debug/net9.0/demo_hard.deps.json b/demo_hard/bin/Debug/net9.0/demo_hard.deps.json
index f54a041..4cf98a3 100644
--- a/demo_hard/bin/Debug/net9.0/demo_hard.deps.json
+++ b/demo_hard/bin/Debug/net9.0/demo_hard.deps.json
@@ -17,6 +17,7 @@
"Microsoft.EntityFrameworkCore": "8.0.10",
"Microsoft.EntityFrameworkCore.Design": "8.0.10",
"Npgsql.EntityFrameworkCore.PostgreSQL": "8.0.10",
+ "ReactiveUI": "20.2.45",
"iTextSharp": "5.5.13.4",
"xunit": "2.9.3"
},
@@ -282,6 +283,17 @@
}
}
},
+ "DynamicData/9.1.2": {
+ "dependencies": {
+ "System.Reactive": "6.0.1"
+ },
+ "runtime": {
+ "lib/net8.0/DynamicData.dll": {
+ "assemblyVersion": "9.1.0.0",
+ "fileVersion": "9.1.2.12211"
+ }
+ }
+ },
"HarfBuzzSharp/7.3.0.2": {
"dependencies": {
"HarfBuzzSharp.NativeAssets.Win32": "7.3.0.2",
@@ -812,6 +824,20 @@
}
}
},
+ "ReactiveUI/20.2.45": {
+ "dependencies": {
+ "DynamicData": "9.1.2",
+ "Splat": "15.3.1",
+ "System.ComponentModel.Annotations": "5.0.0",
+ "System.Text.Json": "9.0.2"
+ },
+ "runtime": {
+ "lib/net9.0/ReactiveUI.dll": {
+ "assemblyVersion": "20.2.0.0",
+ "fileVersion": "20.2.45.45496"
+ }
+ }
+ },
"SkiaSharp/2.88.8": {
"dependencies": {
"SkiaSharp.NativeAssets.Win32": "2.88.8",
@@ -880,6 +906,14 @@
}
}
},
+ "Splat/15.3.1": {
+ "runtime": {
+ "lib/net9.0/Splat.dll": {
+ "assemblyVersion": "15.3.0.0",
+ "fileVersion": "15.3.1.27942"
+ }
+ }
+ },
"System.CodeDom/4.4.0": {
"runtime": {
"lib/netstandard2.0/System.CodeDom.dll": {
@@ -893,6 +927,7 @@
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
+ "System.ComponentModel.Annotations/5.0.0": {},
"System.Composition/6.0.0": {
"dependencies": {
"System.Composition.AttributedModel": "6.0.0",
@@ -954,6 +989,14 @@
}
},
"System.IO.Pipelines/8.0.0": {},
+ "System.Reactive/6.0.1": {
+ "runtime": {
+ "lib/net6.0/System.Reactive.dll": {
+ "assemblyVersion": "6.0.0.0",
+ "fileVersion": "6.0.1.7420"
+ }
+ }
+ },
"System.Reflection.Metadata/6.0.1": {
"dependencies": {
"System.Collections.Immutable": "6.0.0"
@@ -965,6 +1008,7 @@
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
}
},
+ "System.Text.Json/9.0.2": {},
"System.Threading.Channels/6.0.0": {},
"Tmds.DBus.Protocol/0.20.0": {
"dependencies": {
@@ -1163,6 +1207,13 @@
"path": "dialoghost.avalonia/0.8.1",
"hashPath": "dialoghost.avalonia.0.8.1.nupkg.sha512"
},
+ "DynamicData/9.1.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-KMomv26cewTHkHENVKEajxM4EaFJw6fwXGsrdlncq5cdJGnWBHYMTRMuu7y2vbbyb8/VdxkYHlDwZa8mupDrww==",
+ "path": "dynamicdata/9.1.2",
+ "hashPath": "dynamicdata.9.1.2.nupkg.sha512"
+ },
"HarfBuzzSharp/7.3.0.2": {
"type": "package",
"serviceable": true,
@@ -1394,6 +1445,13 @@
"path": "npgsql.entityframeworkcore.postgresql/8.0.10",
"hashPath": "npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512"
},
+ "ReactiveUI/20.2.45": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-1wyThKtWNi0naldJBYcKcZWib2POzS+fVX28apHGTAl+Gd5iLzoDSlItvC22Yiy+hc8TB7KnkW47kofuXmBhmg==",
+ "path": "reactiveui/20.2.45",
+ "hashPath": "reactiveui.20.2.45.nupkg.sha512"
+ },
"SkiaSharp/2.88.8": {
"type": "package",
"serviceable": true,
@@ -1429,6 +1487,13 @@
"path": "skiasharp.nativeassets.win32/2.88.8",
"hashPath": "skiasharp.nativeassets.win32.2.88.8.nupkg.sha512"
},
+ "Splat/15.3.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-zyu98Mwp8gTi3MlS6EGtvcacmw5W/qA4/h/DVeZ28A1dR6mcM628ujHck6LK5SM6LwroR5LzBonWgeFtwo2Afg==",
+ "path": "splat/15.3.1",
+ "hashPath": "splat.15.3.1.nupkg.sha512"
+ },
"System.CodeDom/4.4.0": {
"type": "package",
"serviceable": true,
@@ -1443,6 +1508,13 @@
"path": "system.collections.immutable/6.0.0",
"hashPath": "system.collections.immutable.6.0.0.nupkg.sha512"
},
+ "System.ComponentModel.Annotations/5.0.0": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==",
+ "path": "system.componentmodel.annotations/5.0.0",
+ "hashPath": "system.componentmodel.annotations.5.0.0.nupkg.sha512"
+ },
"System.Composition/6.0.0": {
"type": "package",
"serviceable": true,
@@ -1492,6 +1564,13 @@
"path": "system.io.pipelines/8.0.0",
"hashPath": "system.io.pipelines.8.0.0.nupkg.sha512"
},
+ "System.Reactive/6.0.1": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-rHaWtKDwCi9qJ3ObKo8LHPMuuwv33YbmQi7TcUK1C264V3MFnOr5Im7QgCTdLniztP3GJyeiSg5x8NqYJFqRmg==",
+ "path": "system.reactive/6.0.1",
+ "hashPath": "system.reactive.6.0.1.nupkg.sha512"
+ },
"System.Reflection.Metadata/6.0.1": {
"type": "package",
"serviceable": true,
@@ -1513,6 +1592,13 @@
"path": "system.text.encoding.codepages/6.0.0",
"hashPath": "system.text.encoding.codepages.6.0.0.nupkg.sha512"
},
+ "System.Text.Json/9.0.2": {
+ "type": "package",
+ "serviceable": true,
+ "sha512": "sha512-4TY2Yokh5Xp8XHFhsY9y84yokS7B0rhkaZCXuRiKppIiKwPVH4lVSFD9EEFzRpXdBM5ZeZXD43tc2vB6njEwwQ==",
+ "path": "system.text.json/9.0.2",
+ "hashPath": "system.text.json.9.0.2.nupkg.sha512"
+ },
"System.Threading.Channels/6.0.0": {
"type": "package",
"serviceable": true,
diff --git a/demo_hard/bin/Debug/net9.0/demo_hard.dll b/demo_hard/bin/Debug/net9.0/demo_hard.dll
index 4d81d5f..8e15a5b 100644
Binary files a/demo_hard/bin/Debug/net9.0/demo_hard.dll and b/demo_hard/bin/Debug/net9.0/demo_hard.dll differ
diff --git a/demo_hard/bin/Debug/net9.0/demo_hard.exe b/demo_hard/bin/Debug/net9.0/demo_hard.exe
index e39250e..d14ffb5 100644
Binary files a/demo_hard/bin/Debug/net9.0/demo_hard.exe and b/demo_hard/bin/Debug/net9.0/demo_hard.exe differ
diff --git a/demo_hard/bin/Debug/net9.0/demo_hard.pdb b/demo_hard/bin/Debug/net9.0/demo_hard.pdb
index 1c37295..a367cd4 100644
Binary files a/demo_hard/bin/Debug/net9.0/demo_hard.pdb and b/demo_hard/bin/Debug/net9.0/demo_hard.pdb differ
diff --git a/demo_hard/demo_hard.csproj b/demo_hard/demo_hard.csproj
index 7fb76af..046d77b 100644
--- a/demo_hard/demo_hard.csproj
+++ b/demo_hard/demo_hard.csproj
@@ -26,6 +26,7 @@
runtime; build; native; contentfiles; analyzers; buildtransitive
+
diff --git a/demo_hard/obj/Debug/net9.0/Avalonia/Resources.Inputs.cache b/demo_hard/obj/Debug/net9.0/Avalonia/Resources.Inputs.cache
index 8bbdc02..a8c66a9 100644
--- a/demo_hard/obj/Debug/net9.0/Avalonia/Resources.Inputs.cache
+++ b/demo_hard/obj/Debug/net9.0/Avalonia/Resources.Inputs.cache
@@ -1 +1 @@
-d54093b2d5e283d443ce525f04f5738e8a7e63f037e2a7880fd2507b446d2e06
+a1a313d6927bda03862de3792a717da1cb8b66b60fd436676cb5d57a9b1e725b
diff --git a/demo_hard/obj/Debug/net9.0/Avalonia/demo_hard.dll b/demo_hard/obj/Debug/net9.0/Avalonia/demo_hard.dll
index 4d81d5f..8e15a5b 100644
Binary files a/demo_hard/obj/Debug/net9.0/Avalonia/demo_hard.dll and b/demo_hard/obj/Debug/net9.0/Avalonia/demo_hard.dll differ
diff --git a/demo_hard/obj/Debug/net9.0/Avalonia/demo_hard.pdb b/demo_hard/obj/Debug/net9.0/Avalonia/demo_hard.pdb
index 1c37295..a367cd4 100644
Binary files a/demo_hard/obj/Debug/net9.0/Avalonia/demo_hard.pdb and b/demo_hard/obj/Debug/net9.0/Avalonia/demo_hard.pdb differ
diff --git a/demo_hard/obj/Debug/net9.0/Avalonia/references b/demo_hard/obj/Debug/net9.0/Avalonia/references
index ec253d7..85e70f2 100644
--- a/demo_hard/obj/Debug/net9.0/Avalonia/references
+++ b/demo_hard/obj/Debug/net9.0/Avalonia/references
@@ -24,6 +24,7 @@ C:\Users\IVAN\.nuget\packages\avalonia.win32\11.2.1\lib\net8.0\Avalonia.Win32.dl
C:\Users\IVAN\.nuget\packages\avalonia.x11\11.2.1\lib\net8.0\Avalonia.X11.dll
C:\Users\IVAN\.nuget\packages\bouncycastle.cryptography\2.4.0\lib\net6.0\BouncyCastle.Cryptography.dll
C:\Users\IVAN\.nuget\packages\dialoghost.avalonia\0.8.1\lib\netstandard2.0\DialogHost.Avalonia.dll
+C:\Users\IVAN\.nuget\packages\dynamicdata\9.1.2\lib\net8.0\DynamicData.dll
C:\Users\IVAN\.nuget\packages\harfbuzzsharp\7.3.0.2\lib\net6.0\HarfBuzzSharp.dll
C:\Users\IVAN\.nuget\packages\itextsharp\5.5.13.4\lib\net461\itextsharp.dll
C:\Users\IVAN\.nuget\packages\microcom.runtime\0.11.0\lib\net5.0\MicroCom.Runtime.dll
@@ -49,7 +50,9 @@ C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\9.0.2\ref\net9.0\mscorli
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\9.0.2\ref\net9.0\netstandard.dll
C:\Users\IVAN\.nuget\packages\npgsql\8.0.5\lib\net8.0\Npgsql.dll
C:\Users\IVAN\.nuget\packages\npgsql.entityframeworkcore.postgresql\8.0.10\lib\net8.0\Npgsql.EntityFrameworkCore.PostgreSQL.dll
+C:\Users\IVAN\.nuget\packages\reactiveui\20.2.45\lib\net9.0\ReactiveUI.dll
C:\Users\IVAN\.nuget\packages\skiasharp\2.88.8\lib\net6.0\SkiaSharp.dll
+C:\Users\IVAN\.nuget\packages\splat\15.3.1\lib\net9.0\Splat.dll
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\9.0.2\ref\net9.0\System.AppContext.dll
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\9.0.2\ref\net9.0\System.Buffers.dll
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\9.0.2\ref\net9.0\System.Collections.Concurrent.dll
@@ -131,6 +134,7 @@ C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\9.0.2\ref\net9.0\System.
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\9.0.2\ref\net9.0\System.Numerics.dll
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\9.0.2\ref\net9.0\System.Numerics.Vectors.dll
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\9.0.2\ref\net9.0\System.ObjectModel.dll
+C:\Users\IVAN\.nuget\packages\system.reactive\6.0.1\lib\net6.0\System.Reactive.dll
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\9.0.2\ref\net9.0\System.Reflection.DispatchProxy.dll
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\9.0.2\ref\net9.0\System.Reflection.dll
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\9.0.2\ref\net9.0\System.Reflection.Emit.dll
diff --git a/demo_hard/obj/Debug/net9.0/Avalonia/resources b/demo_hard/obj/Debug/net9.0/Avalonia/resources
index 543f1db..7d556f2 100644
Binary files a/demo_hard/obj/Debug/net9.0/Avalonia/resources and b/demo_hard/obj/Debug/net9.0/Avalonia/resources differ
diff --git a/demo_hard/obj/Debug/net9.0/apphost.exe b/demo_hard/obj/Debug/net9.0/apphost.exe
index e39250e..d14ffb5 100644
Binary files a/demo_hard/obj/Debug/net9.0/apphost.exe and b/demo_hard/obj/Debug/net9.0/apphost.exe differ
diff --git a/demo_hard/obj/Debug/net9.0/demo_hard.AssemblyInfo.cs b/demo_hard/obj/Debug/net9.0/demo_hard.AssemblyInfo.cs
index 9bf0b88..4640289 100644
--- a/demo_hard/obj/Debug/net9.0/demo_hard.AssemblyInfo.cs
+++ b/demo_hard/obj/Debug/net9.0/demo_hard.AssemblyInfo.cs
@@ -13,7 +13,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("demo_hard")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
-[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+474cfc34bd9df61d876e8fbb651d8638dc01db9a")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+156a9ed6bb53a76169eafb82e995c01d89a56817")]
[assembly: System.Reflection.AssemblyProductAttribute("demo_hard")]
[assembly: System.Reflection.AssemblyTitleAttribute("demo_hard")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
diff --git a/demo_hard/obj/Debug/net9.0/demo_hard.AssemblyInfoInputs.cache b/demo_hard/obj/Debug/net9.0/demo_hard.AssemblyInfoInputs.cache
index e4ce4b9..55df951 100644
--- a/demo_hard/obj/Debug/net9.0/demo_hard.AssemblyInfoInputs.cache
+++ b/demo_hard/obj/Debug/net9.0/demo_hard.AssemblyInfoInputs.cache
@@ -1 +1 @@
-268d25cb93c11a76a997999df85f8bd0b552c42c71329977e2c2727a2fc7b623
+812ad4f6e1371c563aeffa5b4bf990438482d87b5551f2810d09b0e13e09da16
diff --git a/demo_hard/obj/Debug/net9.0/demo_hard.assets.cache b/demo_hard/obj/Debug/net9.0/demo_hard.assets.cache
index 55b3c74..2a8fe7f 100644
Binary files a/demo_hard/obj/Debug/net9.0/demo_hard.assets.cache and b/demo_hard/obj/Debug/net9.0/demo_hard.assets.cache differ
diff --git a/demo_hard/obj/Debug/net9.0/demo_hard.csproj.AssemblyReference.cache b/demo_hard/obj/Debug/net9.0/demo_hard.csproj.AssemblyReference.cache
index 6c67a1b..3f884c7 100644
Binary files a/demo_hard/obj/Debug/net9.0/demo_hard.csproj.AssemblyReference.cache and b/demo_hard/obj/Debug/net9.0/demo_hard.csproj.AssemblyReference.cache differ
diff --git a/demo_hard/obj/Debug/net9.0/demo_hard.csproj.CoreCompileInputs.cache b/demo_hard/obj/Debug/net9.0/demo_hard.csproj.CoreCompileInputs.cache
index 18f807a..d46144e 100644
--- a/demo_hard/obj/Debug/net9.0/demo_hard.csproj.CoreCompileInputs.cache
+++ b/demo_hard/obj/Debug/net9.0/demo_hard.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-8f2b4c029a45ededea9ba19ced05047d31bbfb527a26f175d7285e3085cc6e48
+0bbac13ec88c23487d9db86ba7974427e4532f7c392dba1fdea7e096e6b18f90
diff --git a/demo_hard/obj/Debug/net9.0/demo_hard.csproj.FileListAbsolute.txt b/demo_hard/obj/Debug/net9.0/demo_hard.csproj.FileListAbsolute.txt
index fe7edc6..b154892 100644
--- a/demo_hard/obj/Debug/net9.0/demo_hard.csproj.FileListAbsolute.txt
+++ b/demo_hard/obj/Debug/net9.0/demo_hard.csproj.FileListAbsolute.txt
@@ -304,3 +304,7 @@ C:\Users\IVAN\RiderProjects\demo_hard\demo_hard\bin\Debug\net9.0\BouncyCastle.Cr
C:\Users\IVAN\RiderProjects\demo_hard\demo_hard\bin\Debug\net9.0\itextsharp.dll
C:\Users\IVAN\RiderProjects\demo_hard\demo_hard\bin\Debug\net9.0\DialogHost.Avalonia.dll
C:\Users\IVAN\RiderProjects\demo_hard\demo_hard\bin\Debug\net9.0\MsBox.Avalonia.dll
+C:\Users\IVAN\RiderProjects\demo_hard\demo_hard\bin\Debug\net9.0\DynamicData.dll
+C:\Users\IVAN\RiderProjects\demo_hard\demo_hard\bin\Debug\net9.0\ReactiveUI.dll
+C:\Users\IVAN\RiderProjects\demo_hard\demo_hard\bin\Debug\net9.0\Splat.dll
+C:\Users\IVAN\RiderProjects\demo_hard\demo_hard\bin\Debug\net9.0\System.Reactive.dll
diff --git a/demo_hard/obj/Debug/net9.0/demo_hard.dll b/demo_hard/obj/Debug/net9.0/demo_hard.dll
index c0d2ab9..47550f9 100644
Binary files a/demo_hard/obj/Debug/net9.0/demo_hard.dll and b/demo_hard/obj/Debug/net9.0/demo_hard.dll differ
diff --git a/demo_hard/obj/Debug/net9.0/demo_hard.pdb b/demo_hard/obj/Debug/net9.0/demo_hard.pdb
index 9b2d3ef..cdfff64 100644
Binary files a/demo_hard/obj/Debug/net9.0/demo_hard.pdb and b/demo_hard/obj/Debug/net9.0/demo_hard.pdb differ
diff --git a/demo_hard/obj/Debug/net9.0/ref/demo_hard.dll b/demo_hard/obj/Debug/net9.0/ref/demo_hard.dll
index 1af27bd..7f58a73 100644
Binary files a/demo_hard/obj/Debug/net9.0/ref/demo_hard.dll and b/demo_hard/obj/Debug/net9.0/ref/demo_hard.dll differ
diff --git a/demo_hard/obj/Debug/net9.0/refint/Avalonia/demo_hard.dll b/demo_hard/obj/Debug/net9.0/refint/Avalonia/demo_hard.dll
index 1af27bd..7f58a73 100644
Binary files a/demo_hard/obj/Debug/net9.0/refint/Avalonia/demo_hard.dll and b/demo_hard/obj/Debug/net9.0/refint/Avalonia/demo_hard.dll differ
diff --git a/demo_hard/obj/Debug/net9.0/refint/demo_hard.dll b/demo_hard/obj/Debug/net9.0/refint/demo_hard.dll
index 455237b..a986928 100644
Binary files a/demo_hard/obj/Debug/net9.0/refint/demo_hard.dll and b/demo_hard/obj/Debug/net9.0/refint/demo_hard.dll differ
diff --git a/demo_hard/obj/demo_hard.csproj.nuget.dgspec.json b/demo_hard/obj/demo_hard.csproj.nuget.dgspec.json
index 6dbb425..1237154 100644
--- a/demo_hard/obj/demo_hard.csproj.nuget.dgspec.json
+++ b/demo_hard/obj/demo_hard.csproj.nuget.dgspec.json
@@ -89,6 +89,10 @@
"target": "Package",
"version": "[8.0.10, )"
},
+ "ReactiveUI": {
+ "target": "Package",
+ "version": "[20.2.45, )"
+ },
"iTextSharp": {
"target": "Package",
"version": "[5.5.13.4, )"
diff --git a/demo_hard/obj/demo_hard.csproj.nuget.g.targets b/demo_hard/obj/demo_hard.csproj.nuget.g.targets
index 6ce058e..c93349c 100644
--- a/demo_hard/obj/demo_hard.csproj.nuget.g.targets
+++ b/demo_hard/obj/demo_hard.csproj.nuget.g.targets
@@ -2,6 +2,7 @@
+
diff --git a/demo_hard/obj/project.assets.json b/demo_hard/obj/project.assets.json
index 4b0c68a..1058df4 100644
--- a/demo_hard/obj/project.assets.json
+++ b/demo_hard/obj/project.assets.json
@@ -366,6 +366,22 @@
}
}
},
+ "DynamicData/9.1.2": {
+ "type": "package",
+ "dependencies": {
+ "System.Reactive": "6.0.1"
+ },
+ "compile": {
+ "lib/net8.0/DynamicData.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/DynamicData.dll": {
+ "related": ".xml"
+ }
+ }
+ },
"HarfBuzzSharp/7.3.0.2": {
"type": "package",
"dependencies": {
@@ -1089,6 +1105,25 @@
}
}
},
+ "ReactiveUI/20.2.45": {
+ "type": "package",
+ "dependencies": {
+ "DynamicData": "9.1.2",
+ "Splat": "15.3.1",
+ "System.ComponentModel.Annotations": "5.0.0",
+ "System.Text.Json": "9.0.2"
+ },
+ "compile": {
+ "lib/net9.0/ReactiveUI.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/ReactiveUI.dll": {
+ "related": ".xml"
+ }
+ }
+ },
"SkiaSharp/2.88.8": {
"type": "package",
"dependencies": {
@@ -1187,6 +1222,19 @@
}
}
},
+ "Splat/15.3.1": {
+ "type": "package",
+ "compile": {
+ "lib/net9.0/Splat.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Splat.dll": {
+ "related": ".xml"
+ }
+ }
+ },
"System.CodeDom/4.4.0": {
"type": "package",
"compile": {
@@ -1217,6 +1265,19 @@
"buildTransitive/netcoreapp3.1/_._": {}
}
},
+ "System.ComponentModel.Annotations/5.0.0": {
+ "type": "package",
+ "compile": {
+ "ref/netstandard2.1/System.ComponentModel.Annotations.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.1/System.ComponentModel.Annotations.dll": {
+ "related": ".xml"
+ }
+ }
+ },
"System.Composition/6.0.0": {
"type": "package",
"dependencies": {
@@ -1337,6 +1398,22 @@
"buildTransitive/net6.0/_._": {}
}
},
+ "System.Reactive/6.0.1": {
+ "type": "package",
+ "compile": {
+ "lib/net6.0/System.Reactive.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net6.0/System.Reactive.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net6.0/_._": {}
+ }
+ },
"System.Reflection.Metadata/6.0.1": {
"type": "package",
"dependencies": {
@@ -1397,6 +1474,22 @@
}
}
},
+ "System.Text.Json/9.0.2": {
+ "type": "package",
+ "compile": {
+ "lib/net9.0/System.Text.Json.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/System.Text.Json.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/System.Text.Json.targets": {}
+ }
+ },
"System.Threading.Channels/6.0.0": {
"type": "package",
"compile": {
@@ -1984,6 +2077,30 @@
"lib/netstandard2.0/DialogHost.Avalonia.xml"
]
},
+ "DynamicData/9.1.2": {
+ "sha512": "KMomv26cewTHkHENVKEajxM4EaFJw6fwXGsrdlncq5cdJGnWBHYMTRMuu7y2vbbyb8/VdxkYHlDwZa8mupDrww==",
+ "type": "package",
+ "path": "dynamicdata/9.1.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "LICENSE/LICENSE",
+ "README.md",
+ "dynamicdata.9.1.2.nupkg.sha512",
+ "dynamicdata.nuspec",
+ "lib/net462/DynamicData.dll",
+ "lib/net462/DynamicData.xml",
+ "lib/net6.0/DynamicData.dll",
+ "lib/net6.0/DynamicData.xml",
+ "lib/net7.0/DynamicData.dll",
+ "lib/net7.0/DynamicData.xml",
+ "lib/net8.0/DynamicData.dll",
+ "lib/net8.0/DynamicData.xml",
+ "lib/netstandard2.0/DynamicData.dll",
+ "lib/netstandard2.0/DynamicData.xml",
+ "logo.png"
+ ]
+ },
"HarfBuzzSharp/7.3.0.2": {
"sha512": "0tCd6HyCmNsX/DniCp2b00fo0xPbdNwKOs9BxxyT8oOOuMlWjcSFwzONKyeckCKVBFEsbSmsAHPDTqxoSDwZMg==",
"type": "package",
@@ -3164,6 +3281,58 @@
"postgresql.png"
]
},
+ "ReactiveUI/20.2.45": {
+ "sha512": "1wyThKtWNi0naldJBYcKcZWib2POzS+fVX28apHGTAl+Gd5iLzoDSlItvC22Yiy+hc8TB7KnkW47kofuXmBhmg==",
+ "type": "package",
+ "path": "reactiveui/20.2.45",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "LICENSE/LICENSE",
+ "README.md",
+ "lib/net462/ReactiveUI.dll",
+ "lib/net462/ReactiveUI.xml",
+ "lib/net472/ReactiveUI.dll",
+ "lib/net472/ReactiveUI.xml",
+ "lib/net8.0-android34.0/ReactiveUI.dll",
+ "lib/net8.0-android34.0/ReactiveUI.xml",
+ "lib/net8.0-ios18.0/ReactiveUI.dll",
+ "lib/net8.0-ios18.0/ReactiveUI.xml",
+ "lib/net8.0-maccatalyst18.0/ReactiveUI.dll",
+ "lib/net8.0-maccatalyst18.0/ReactiveUI.xml",
+ "lib/net8.0-macos15.0/ReactiveUI.dll",
+ "lib/net8.0-macos15.0/ReactiveUI.xml",
+ "lib/net8.0-tvos18.0/ReactiveUI.dll",
+ "lib/net8.0-tvos18.0/ReactiveUI.xml",
+ "lib/net8.0-windows10.0.17763/ReactiveUI.dll",
+ "lib/net8.0-windows10.0.17763/ReactiveUI.xml",
+ "lib/net8.0-windows10.0.19041/ReactiveUI.dll",
+ "lib/net8.0-windows10.0.19041/ReactiveUI.xml",
+ "lib/net8.0/ReactiveUI.dll",
+ "lib/net8.0/ReactiveUI.xml",
+ "lib/net9.0-android35.0/ReactiveUI.dll",
+ "lib/net9.0-android35.0/ReactiveUI.xml",
+ "lib/net9.0-ios18.0/ReactiveUI.dll",
+ "lib/net9.0-ios18.0/ReactiveUI.xml",
+ "lib/net9.0-maccatalyst18.0/ReactiveUI.dll",
+ "lib/net9.0-maccatalyst18.0/ReactiveUI.xml",
+ "lib/net9.0-macos15.0/ReactiveUI.dll",
+ "lib/net9.0-macos15.0/ReactiveUI.xml",
+ "lib/net9.0-tvos18.0/ReactiveUI.dll",
+ "lib/net9.0-tvos18.0/ReactiveUI.xml",
+ "lib/net9.0-windows10.0.17763/ReactiveUI.dll",
+ "lib/net9.0-windows10.0.17763/ReactiveUI.xml",
+ "lib/net9.0-windows10.0.19041/ReactiveUI.dll",
+ "lib/net9.0-windows10.0.19041/ReactiveUI.xml",
+ "lib/net9.0/ReactiveUI.dll",
+ "lib/net9.0/ReactiveUI.xml",
+ "lib/netstandard2.0/ReactiveUI.dll",
+ "lib/netstandard2.0/ReactiveUI.xml",
+ "logo.png",
+ "reactiveui.20.2.45.nupkg.sha512",
+ "reactiveui.nuspec"
+ ]
+ },
"SkiaSharp/2.88.8": {
"sha512": "bRkp3uKp5ZI8gXYQT57uKwil1uobb2p8c69n7v5evlB/2JNcMAXVcw9DZAP5Ig3WSvgzGm2YSn27UVeOi05NlA==",
"type": "package",
@@ -3338,6 +3507,26 @@
"skiasharp.nativeassets.win32.nuspec"
]
},
+ "Splat/15.3.1": {
+ "sha512": "zyu98Mwp8gTi3MlS6EGtvcacmw5W/qA4/h/DVeZ28A1dR6mcM628ujHck6LK5SM6LwroR5LzBonWgeFtwo2Afg==",
+ "type": "package",
+ "path": "splat/15.3.1",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "LICENSE/LICENSE",
+ "README.md",
+ "lib/net8.0/Splat.dll",
+ "lib/net8.0/Splat.xml",
+ "lib/net9.0/Splat.dll",
+ "lib/net9.0/Splat.xml",
+ "lib/netstandard2.0/Splat.dll",
+ "lib/netstandard2.0/Splat.xml",
+ "logo.png",
+ "splat.15.3.1.nupkg.sha512",
+ "splat.nuspec"
+ ]
+ },
"System.CodeDom/4.4.0": {
"sha512": "2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==",
"type": "package",
@@ -3382,6 +3571,96 @@
"useSharedDesignerContext.txt"
]
},
+ "System.ComponentModel.Annotations/5.0.0": {
+ "sha512": "dMkqfy2el8A8/I76n2Hi1oBFEbG1SfxD2l5nhwXV3XjlnOmwxJlQbYpJH4W51odnU9sARCSAgv7S3CyAFMkpYg==",
+ "type": "package",
+ "path": "system.componentmodel.annotations/5.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/MonoAndroid10/_._",
+ "lib/MonoTouch10/_._",
+ "lib/net45/_._",
+ "lib/net461/System.ComponentModel.Annotations.dll",
+ "lib/netcore50/System.ComponentModel.Annotations.dll",
+ "lib/netstandard1.4/System.ComponentModel.Annotations.dll",
+ "lib/netstandard2.0/System.ComponentModel.Annotations.dll",
+ "lib/netstandard2.1/System.ComponentModel.Annotations.dll",
+ "lib/netstandard2.1/System.ComponentModel.Annotations.xml",
+ "lib/portable-net45+win8/_._",
+ "lib/win8/_._",
+ "lib/xamarinios10/_._",
+ "lib/xamarinmac20/_._",
+ "lib/xamarintvos10/_._",
+ "lib/xamarinwatchos10/_._",
+ "ref/MonoAndroid10/_._",
+ "ref/MonoTouch10/_._",
+ "ref/net45/_._",
+ "ref/net461/System.ComponentModel.Annotations.dll",
+ "ref/net461/System.ComponentModel.Annotations.xml",
+ "ref/netcore50/System.ComponentModel.Annotations.dll",
+ "ref/netcore50/System.ComponentModel.Annotations.xml",
+ "ref/netcore50/de/System.ComponentModel.Annotations.xml",
+ "ref/netcore50/es/System.ComponentModel.Annotations.xml",
+ "ref/netcore50/fr/System.ComponentModel.Annotations.xml",
+ "ref/netcore50/it/System.ComponentModel.Annotations.xml",
+ "ref/netcore50/ja/System.ComponentModel.Annotations.xml",
+ "ref/netcore50/ko/System.ComponentModel.Annotations.xml",
+ "ref/netcore50/ru/System.ComponentModel.Annotations.xml",
+ "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml",
+ "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.1/System.ComponentModel.Annotations.dll",
+ "ref/netstandard1.1/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.3/System.ComponentModel.Annotations.dll",
+ "ref/netstandard1.3/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.4/System.ComponentModel.Annotations.dll",
+ "ref/netstandard1.4/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml",
+ "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml",
+ "ref/netstandard2.0/System.ComponentModel.Annotations.dll",
+ "ref/netstandard2.0/System.ComponentModel.Annotations.xml",
+ "ref/netstandard2.1/System.ComponentModel.Annotations.dll",
+ "ref/netstandard2.1/System.ComponentModel.Annotations.xml",
+ "ref/portable-net45+win8/_._",
+ "ref/win8/_._",
+ "ref/xamarinios10/_._",
+ "ref/xamarinmac20/_._",
+ "ref/xamarintvos10/_._",
+ "ref/xamarinwatchos10/_._",
+ "system.componentmodel.annotations.5.0.0.nupkg.sha512",
+ "system.componentmodel.annotations.nuspec",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
"System.Composition/6.0.0": {
"sha512": "d7wMuKQtfsxUa7S13tITC8n1cQzewuhD5iDjZtK2prwFfKVzdYtgrTHgjaV03Zq7feGQ5gkP85tJJntXwInsJA==",
"type": "package",
@@ -3543,6 +3822,34 @@
"useSharedDesignerContext.txt"
]
},
+ "System.Reactive/6.0.1": {
+ "sha512": "rHaWtKDwCi9qJ3ObKo8LHPMuuwv33YbmQi7TcUK1C264V3MFnOr5Im7QgCTdLniztP3GJyeiSg5x8NqYJFqRmg==",
+ "type": "package",
+ "path": "system.reactive/6.0.1",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "build/net6.0-windows10.0.19041/_._",
+ "build/net6.0/_._",
+ "buildTransitive/net6.0-windows10.0.19041/_._",
+ "buildTransitive/net6.0/_._",
+ "icon.png",
+ "lib/net472/System.Reactive.dll",
+ "lib/net472/System.Reactive.xml",
+ "lib/net6.0-windows10.0.19041/System.Reactive.dll",
+ "lib/net6.0-windows10.0.19041/System.Reactive.xml",
+ "lib/net6.0/System.Reactive.dll",
+ "lib/net6.0/System.Reactive.xml",
+ "lib/netstandard2.0/System.Reactive.dll",
+ "lib/netstandard2.0/System.Reactive.xml",
+ "lib/uap10.0.18362/System.Reactive.dll",
+ "lib/uap10.0.18362/System.Reactive.pri",
+ "lib/uap10.0.18362/System.Reactive.xml",
+ "readme.md",
+ "system.reactive.6.0.1.nupkg.sha512",
+ "system.reactive.nuspec"
+ ]
+ },
"System.Reflection.Metadata/6.0.1": {
"sha512": "III/lNMSn0ZRBuM9m5Cgbiho5j81u0FAEagFX5ta2DKbljZ3T0IpD8j+BIiHQPeKqJppWS9bGEp6JnKnWKze0g==",
"type": "package",
@@ -3630,6 +3937,77 @@
"useSharedDesignerContext.txt"
]
},
+ "System.Text.Json/9.0.2": {
+ "sha512": "4TY2Yokh5Xp8XHFhsY9y84yokS7B0rhkaZCXuRiKppIiKwPVH4lVSFD9EEFzRpXdBM5ZeZXD43tc2vB6njEwwQ==",
+ "type": "package",
+ "path": "system.text.json/9.0.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll",
+ "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll",
+ "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll",
+ "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll",
+ "buildTransitive/net461/System.Text.Json.targets",
+ "buildTransitive/net462/System.Text.Json.targets",
+ "buildTransitive/net8.0/System.Text.Json.targets",
+ "buildTransitive/netcoreapp2.0/System.Text.Json.targets",
+ "buildTransitive/netstandard2.0/System.Text.Json.targets",
+ "lib/net462/System.Text.Json.dll",
+ "lib/net462/System.Text.Json.xml",
+ "lib/net8.0/System.Text.Json.dll",
+ "lib/net8.0/System.Text.Json.xml",
+ "lib/net9.0/System.Text.Json.dll",
+ "lib/net9.0/System.Text.Json.xml",
+ "lib/netstandard2.0/System.Text.Json.dll",
+ "lib/netstandard2.0/System.Text.Json.xml",
+ "system.text.json.9.0.2.nupkg.sha512",
+ "system.text.json.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
"System.Threading.Channels/6.0.0": {
"sha512": "TY8/9+tI0mNaUMgntOxxaq2ndTkdXqLSxvPmas7XEqOlv9lQtB7wLjYGd756lOaO7Dvb5r/WXhluM+0Xe87v5Q==",
"type": "package",
@@ -3803,6 +4181,7 @@
"Microsoft.EntityFrameworkCore >= 8.0.10",
"Microsoft.EntityFrameworkCore.Design >= 8.0.10",
"Npgsql.EntityFrameworkCore.PostgreSQL >= 8.0.10",
+ "ReactiveUI >= 20.2.45",
"iTextSharp >= 5.5.13.4",
"xunit >= 2.9.3"
]
@@ -3896,6 +4275,10 @@
"target": "Package",
"version": "[8.0.10, )"
},
+ "ReactiveUI": {
+ "target": "Package",
+ "version": "[20.2.45, )"
+ },
"iTextSharp": {
"target": "Package",
"version": "[5.5.13.4, )"
diff --git a/demo_hard/obj/project.nuget.cache b/demo_hard/obj/project.nuget.cache
index 4262531..7bcbb7c 100644
--- a/demo_hard/obj/project.nuget.cache
+++ b/demo_hard/obj/project.nuget.cache
@@ -1,6 +1,6 @@
{
"version": 2,
- "dgSpecHash": "V6Z95Xb+ZCs=",
+ "dgSpecHash": "rJUIf6Qta8g=",
"success": true,
"projectFilePath": "C:\\Users\\IVAN\\RiderProjects\\demo_hard\\demo_hard\\demo_hard.csproj",
"expectedPackageFiles": [
@@ -22,6 +22,7 @@
"C:\\Users\\IVAN\\.nuget\\packages\\avalonia.x11\\11.2.1\\avalonia.x11.11.2.1.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\bouncycastle.cryptography\\2.4.0\\bouncycastle.cryptography.2.4.0.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\dialoghost.avalonia\\0.8.1\\dialoghost.avalonia.0.8.1.nupkg.sha512",
+ "C:\\Users\\IVAN\\.nuget\\packages\\dynamicdata\\9.1.2\\dynamicdata.9.1.2.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\harfbuzzsharp\\7.3.0.2\\harfbuzzsharp.7.3.0.2.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\harfbuzzsharp.nativeassets.linux\\7.3.0.2\\harfbuzzsharp.nativeassets.linux.7.3.0.2.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\harfbuzzsharp.nativeassets.macos\\7.3.0.2\\harfbuzzsharp.nativeassets.macos.7.3.0.2.nupkg.sha512",
@@ -55,13 +56,16 @@
"C:\\Users\\IVAN\\.nuget\\packages\\mono.texttemplating\\2.2.1\\mono.texttemplating.2.2.1.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\npgsql\\8.0.5\\npgsql.8.0.5.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\npgsql.entityframeworkcore.postgresql\\8.0.10\\npgsql.entityframeworkcore.postgresql.8.0.10.nupkg.sha512",
+ "C:\\Users\\IVAN\\.nuget\\packages\\reactiveui\\20.2.45\\reactiveui.20.2.45.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\skiasharp\\2.88.8\\skiasharp.2.88.8.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\skiasharp.nativeassets.linux\\2.88.8\\skiasharp.nativeassets.linux.2.88.8.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\skiasharp.nativeassets.macos\\2.88.8\\skiasharp.nativeassets.macos.2.88.8.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\skiasharp.nativeassets.webassembly\\2.88.8\\skiasharp.nativeassets.webassembly.2.88.8.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\skiasharp.nativeassets.win32\\2.88.8\\skiasharp.nativeassets.win32.2.88.8.nupkg.sha512",
+ "C:\\Users\\IVAN\\.nuget\\packages\\splat\\15.3.1\\splat.15.3.1.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\system.codedom\\4.4.0\\system.codedom.4.4.0.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\system.collections.immutable\\6.0.0\\system.collections.immutable.6.0.0.nupkg.sha512",
+ "C:\\Users\\IVAN\\.nuget\\packages\\system.componentmodel.annotations\\5.0.0\\system.componentmodel.annotations.5.0.0.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\system.composition\\6.0.0\\system.composition.6.0.0.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\system.composition.attributedmodel\\6.0.0\\system.composition.attributedmodel.6.0.0.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\system.composition.convention\\6.0.0\\system.composition.convention.6.0.0.nupkg.sha512",
@@ -69,9 +73,11 @@
"C:\\Users\\IVAN\\.nuget\\packages\\system.composition.runtime\\6.0.0\\system.composition.runtime.6.0.0.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\system.composition.typedparts\\6.0.0\\system.composition.typedparts.6.0.0.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\system.io.pipelines\\8.0.0\\system.io.pipelines.8.0.0.nupkg.sha512",
+ "C:\\Users\\IVAN\\.nuget\\packages\\system.reactive\\6.0.1\\system.reactive.6.0.1.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\system.reflection.metadata\\6.0.1\\system.reflection.metadata.6.0.1.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512",
+ "C:\\Users\\IVAN\\.nuget\\packages\\system.text.json\\9.0.2\\system.text.json.9.0.2.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\system.threading.channels\\6.0.0\\system.threading.channels.6.0.0.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\tmds.dbus.protocol\\0.20.0\\tmds.dbus.protocol.0.20.0.nupkg.sha512",
"C:\\Users\\IVAN\\.nuget\\packages\\xunit\\2.9.3\\xunit.2.9.3.nupkg.sha512",
diff --git a/demo_hard/obj/project.packagespec.json b/demo_hard/obj/project.packagespec.json
index bc8538f..d9734e9 100644
--- a/demo_hard/obj/project.packagespec.json
+++ b/demo_hard/obj/project.packagespec.json
@@ -1 +1 @@
-"restore":{"projectUniqueName":"C:\\Users\\IVAN\\RiderProjects\\demo_hard\\demo_hard\\demo_hard.csproj","projectName":"demo_hard","projectPath":"C:\\Users\\IVAN\\RiderProjects\\demo_hard\\demo_hard\\demo_hard.csproj","outputPath":"C:\\Users\\IVAN\\RiderProjects\\demo_hard\\demo_hard\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net9.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"C:\\Program Files\\dotnet\\library-packs":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net9.0":{"targetAlias":"net9.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"9.0.200"}"frameworks":{"net9.0":{"targetAlias":"net9.0","dependencies":{"Avalonia":{"target":"Package","version":"[11.2.1, )"},"Avalonia.Desktop":{"target":"Package","version":"[11.2.1, )"},"Avalonia.Diagnostics":{"target":"Package","version":"[11.2.1, )"},"Avalonia.Fonts.Inter":{"target":"Package","version":"[11.2.1, )"},"Avalonia.Themes.Fluent":{"target":"Package","version":"[11.2.1, )"},"MessageBox.Avalonia":{"target":"Package","version":"[3.2.0, )"},"Microsoft.EntityFrameworkCore":{"target":"Package","version":"[8.0.10, )"},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.10, )"},"Npgsql.EntityFrameworkCore.PostgreSQL":{"target":"Package","version":"[8.0.10, )"},"iTextSharp":{"target":"Package","version":"[5.5.13.4, )"},"xunit":{"target":"Package","version":"[2.9.3, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\9.0.200/PortableRuntimeIdentifierGraph.json"}}
\ No newline at end of file
+"restore":{"projectUniqueName":"C:\\Users\\IVAN\\RiderProjects\\demo_hard\\demo_hard\\demo_hard.csproj","projectName":"demo_hard","projectPath":"C:\\Users\\IVAN\\RiderProjects\\demo_hard\\demo_hard\\demo_hard.csproj","outputPath":"C:\\Users\\IVAN\\RiderProjects\\demo_hard\\demo_hard\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net9.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"C:\\Program Files\\dotnet\\library-packs":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net9.0":{"targetAlias":"net9.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"9.0.200"}"frameworks":{"net9.0":{"targetAlias":"net9.0","dependencies":{"Avalonia":{"target":"Package","version":"[11.2.1, )"},"Avalonia.Desktop":{"target":"Package","version":"[11.2.1, )"},"Avalonia.Diagnostics":{"target":"Package","version":"[11.2.1, )"},"Avalonia.Fonts.Inter":{"target":"Package","version":"[11.2.1, )"},"Avalonia.Themes.Fluent":{"target":"Package","version":"[11.2.1, )"},"MessageBox.Avalonia":{"target":"Package","version":"[3.2.0, )"},"Microsoft.EntityFrameworkCore":{"target":"Package","version":"[8.0.10, )"},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.10, )"},"Npgsql.EntityFrameworkCore.PostgreSQL":{"target":"Package","version":"[8.0.10, )"},"ReactiveUI":{"target":"Package","version":"[20.2.45, )"},"iTextSharp":{"target":"Package","version":"[5.5.13.4, )"},"xunit":{"target":"Package","version":"[2.9.3, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\9.0.200/PortableRuntimeIdentifierGraph.json"}}
\ No newline at end of file
diff --git a/demo_hard/obj/rider.project.model.nuget.info b/demo_hard/obj/rider.project.model.nuget.info
index 20cc087..9178972 100644
--- a/demo_hard/obj/rider.project.model.nuget.info
+++ b/demo_hard/obj/rider.project.model.nuget.info
@@ -1 +1 @@
-17452715769561693
\ No newline at end of file
+17452753038636502
\ No newline at end of file
diff --git a/demo_hard/obj/rider.project.restore.info b/demo_hard/obj/rider.project.restore.info
index 20cc087..d32e49a 100644
--- a/demo_hard/obj/rider.project.restore.info
+++ b/demo_hard/obj/rider.project.restore.info
@@ -1 +1 @@
-17452715769561693
\ No newline at end of file
+17452753050856052
\ No newline at end of file