This commit is contained in:
10Г Егор Романов 2023-04-07 16:32:13 +04:00
parent 904785dbd1
commit 13623b04f9
19 changed files with 617 additions and 22 deletions

View File

@ -6,4 +6,15 @@
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\VeterinaryClinicDatabaseImplement\VeterinaryClinicDatabaseImplement.csproj" />
</ItemGroup>
</Project>

View File

@ -89,12 +89,12 @@ namespace VeterinaryClinicBusinessLogic.BusinessLogics
}
if (string.IsNullOrEmpty(model.MedicationName))
{
throw new ArgumentNullException("Нет названия компонента",
throw new ArgumentNullException("Нет названия Медикамента",
nameof(model.MedicationName));
}
if (model.Cost <= 0)
{
throw new ArgumentNullException("Цена компонента должна быть больше 0", nameof(model.Cost));
throw new ArgumentNullException("Цена Медикамента должна быть больше 0", nameof(model.Cost));
}
_logger.LogInformation("Medication. MedicationName:{MedicationName}. Cost:{ Cost}. Id: { Id}", model.MedicationName, model.Cost, model.Id);
var element = _MedicationStorage.GetElement(new MedicationSearchModel
@ -103,7 +103,7 @@ namespace VeterinaryClinicBusinessLogic.BusinessLogics
});
if (element != null && element.Id != model.Id)
{
throw new InvalidOperationException("Компонент с таким названием уже есть");
throw new InvalidOperationException("Медикамент с таким названием уже есть");
}
}
}

View File

@ -97,7 +97,7 @@ namespace VeterinaryClinicBusinessLogic.BusinessLogics
}
if (string.IsNullOrEmpty(model.MedicineName))
{
throw new ArgumentNullException("Нет названия компонента",
throw new ArgumentNullException("Нет названия Медикамента",
nameof(model.MedicineName));
}
if (model.Price <= 0)

View File

@ -8,6 +8,10 @@
<ItemGroup>
<PackageReference Include="DocumentFormat.OpenXml" Version="2.20.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.Extensions.Logging" Version="7.0.0" />
<PackageReference Include="NLog.Extensions.Logging" Version="5.2.3" />
<PackageReference Include="PdfSharp.MigraDoc.Standard" Version="1.51.15" />

View File

@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
using System.MedicationModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

View File

@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
using System.MedicationModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using VeterinaryClinicDataModels.Models;
namespace VeterinaryClinicContracts.ViewModels
@ -11,7 +11,7 @@ namespace VeterinaryClinicContracts.ViewModels
public class MedicationViewModel : IMedicationModel
{
public int Id { get; set; }
[DisplayName("Название компонента")]
[DisplayName("Название Медикамента")]
public string MedicationName { get; set; } = string.Empty;
[DisplayName("Цена")]
public double Cost { get; set; }

View File

@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
using System.MedicationModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

View File

@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
using System.MedicationModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

View File

@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
using System.MedicationModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -77,7 +77,7 @@ namespace VeterinaryClinicDatabaseImplement.Implements
public MedicationViewModel? Update(MedicationBindingModel model)
{
using var context = new Database();
using var context = new VeterinaryClinicDatabase();
var Medication = context.Medications.FirstOrDefault(x => x.Id ==
model.Id);
if (Medication == null)

View File

@ -0,0 +1,214 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using VeterinaryClinicDatabaseImplement;
#nullable disable
namespace VeterinaryClinicDatabaseImplement.Migrations
{
[DbContext(typeof(VeterinaryClinicDatabase))]
[Migration("20230407123105_InitialCreate")]
partial class InitialCreate
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.4")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Client", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("ClientFIO")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Email")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Clients");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Medication", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<double>("Cost")
.HasColumnType("double precision");
b.Property<string>("MedicationName")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Medications");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Medicine", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("MedicineName")
.IsRequired()
.HasColumnType("text");
b.Property<double>("Price")
.HasColumnType("double precision");
b.HasKey("Id");
b.ToTable("Medicines");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.MedicineMedication", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Count")
.HasColumnType("integer");
b.Property<int>("MedicationId")
.HasColumnType("integer");
b.Property<int>("MedicineId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("MedicationId");
b.HasIndex("MedicineId");
b.ToTable("MedicineMedications");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Order", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ClientId")
.HasColumnType("integer");
b.Property<int>("Count")
.HasColumnType("integer");
b.Property<DateTime>("DateCreate")
.HasColumnType("timestamp with time zone");
b.Property<DateTime?>("DateImplement")
.HasColumnType("timestamp with time zone");
b.Property<int>("MedicineId")
.HasColumnType("integer");
b.Property<int>("Status")
.HasColumnType("integer");
b.Property<double>("Sum")
.HasColumnType("double precision");
b.HasKey("Id");
b.HasIndex("ClientId");
b.HasIndex("MedicineId");
b.ToTable("Orders");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.MedicineMedication", b =>
{
b.HasOne("VeterinaryClinicDatabaseImplement.Models.Medication", "Medication")
.WithMany("MedicineMedications")
.HasForeignKey("MedicationId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("VeterinaryClinicDatabaseImplement.Models.Medicine", "Medicine")
.WithMany("Medications")
.HasForeignKey("MedicineId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Medication");
b.Navigation("Medicine");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Order", b =>
{
b.HasOne("VeterinaryClinicDatabaseImplement.Models.Client", "Client")
.WithMany("Orders")
.HasForeignKey("ClientId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("VeterinaryClinicDatabaseImplement.Models.Medicine", "Medicine")
.WithMany("Orders")
.HasForeignKey("MedicineId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Client");
b.Navigation("Medicine");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Client", b =>
{
b.Navigation("Orders");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Medication", b =>
{
b.Navigation("MedicineMedications");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Medicine", b =>
{
b.Navigation("Medications");
b.Navigation("Orders");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -0,0 +1,156 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace VeterinaryClinicDatabaseImplement.Migrations
{
/// <inheritdoc />
public partial class InitialCreate : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Clients",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
ClientFIO = table.Column<string>(type: "text", nullable: false),
Email = table.Column<string>(type: "text", nullable: false),
Password = table.Column<string>(type: "text", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Clients", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Medications",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
MedicationName = table.Column<string>(type: "text", nullable: false),
Cost = table.Column<double>(type: "double precision", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Medications", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Medicines",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
MedicineName = table.Column<string>(type: "text", nullable: false),
Price = table.Column<double>(type: "double precision", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Medicines", x => x.Id);
});
migrationBuilder.CreateTable(
name: "MedicineMedications",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
MedicineId = table.Column<int>(type: "integer", nullable: false),
MedicationId = table.Column<int>(type: "integer", nullable: false),
Count = table.Column<int>(type: "integer", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_MedicineMedications", x => x.Id);
table.ForeignKey(
name: "FK_MedicineMedications_Medications_MedicationId",
column: x => x.MedicationId,
principalTable: "Medications",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_MedicineMedications_Medicines_MedicineId",
column: x => x.MedicineId,
principalTable: "Medicines",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Orders",
columns: table => new
{
Id = table.Column<int>(type: "integer", nullable: false)
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
MedicineId = table.Column<int>(type: "integer", nullable: false),
ClientId = table.Column<int>(type: "integer", nullable: false),
Count = table.Column<int>(type: "integer", nullable: false),
Sum = table.Column<double>(type: "double precision", nullable: false),
Status = table.Column<int>(type: "integer", nullable: false),
DateCreate = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
DateImplement = table.Column<DateTime>(type: "timestamp with time zone", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Orders", x => x.Id);
table.ForeignKey(
name: "FK_Orders_Clients_ClientId",
column: x => x.ClientId,
principalTable: "Clients",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_Orders_Medicines_MedicineId",
column: x => x.MedicineId,
principalTable: "Medicines",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_MedicineMedications_MedicationId",
table: "MedicineMedications",
column: "MedicationId");
migrationBuilder.CreateIndex(
name: "IX_MedicineMedications_MedicineId",
table: "MedicineMedications",
column: "MedicineId");
migrationBuilder.CreateIndex(
name: "IX_Orders_ClientId",
table: "Orders",
column: "ClientId");
migrationBuilder.CreateIndex(
name: "IX_Orders_MedicineId",
table: "Orders",
column: "MedicineId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "MedicineMedications");
migrationBuilder.DropTable(
name: "Orders");
migrationBuilder.DropTable(
name: "Medications");
migrationBuilder.DropTable(
name: "Clients");
migrationBuilder.DropTable(
name: "Medicines");
}
}
}

View File

@ -0,0 +1,211 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
using VeterinaryClinicDatabaseImplement;
#nullable disable
namespace VeterinaryClinicDatabaseImplement.Migrations
{
[DbContext(typeof(VeterinaryClinicDatabase))]
partial class VeterinaryClinicDatabaseModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "7.0.4")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Client", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("ClientFIO")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Email")
.IsRequired()
.HasColumnType("text");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Clients");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Medication", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<double>("Cost")
.HasColumnType("double precision");
b.Property<string>("MedicationName")
.IsRequired()
.HasColumnType("text");
b.HasKey("Id");
b.ToTable("Medications");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Medicine", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<string>("MedicineName")
.IsRequired()
.HasColumnType("text");
b.Property<double>("Price")
.HasColumnType("double precision");
b.HasKey("Id");
b.ToTable("Medicines");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.MedicineMedication", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("Count")
.HasColumnType("integer");
b.Property<int>("MedicationId")
.HasColumnType("integer");
b.Property<int>("MedicineId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("MedicationId");
b.HasIndex("MedicineId");
b.ToTable("MedicineMedications");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Order", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<int>("ClientId")
.HasColumnType("integer");
b.Property<int>("Count")
.HasColumnType("integer");
b.Property<DateTime>("DateCreate")
.HasColumnType("timestamp with time zone");
b.Property<DateTime?>("DateImplement")
.HasColumnType("timestamp with time zone");
b.Property<int>("MedicineId")
.HasColumnType("integer");
b.Property<int>("Status")
.HasColumnType("integer");
b.Property<double>("Sum")
.HasColumnType("double precision");
b.HasKey("Id");
b.HasIndex("ClientId");
b.HasIndex("MedicineId");
b.ToTable("Orders");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.MedicineMedication", b =>
{
b.HasOne("VeterinaryClinicDatabaseImplement.Models.Medication", "Medication")
.WithMany("MedicineMedications")
.HasForeignKey("MedicationId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("VeterinaryClinicDatabaseImplement.Models.Medicine", "Medicine")
.WithMany("Medications")
.HasForeignKey("MedicineId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Medication");
b.Navigation("Medicine");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Order", b =>
{
b.HasOne("VeterinaryClinicDatabaseImplement.Models.Client", "Client")
.WithMany("Orders")
.HasForeignKey("ClientId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("VeterinaryClinicDatabaseImplement.Models.Medicine", "Medicine")
.WithMany("Orders")
.HasForeignKey("MedicineId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Client");
b.Navigation("Medicine");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Client", b =>
{
b.Navigation("Orders");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Medication", b =>
{
b.Navigation("MedicineMedications");
});
modelBuilder.Entity("VeterinaryClinicDatabaseImplement.Models.Medicine", b =>
{
b.Navigation("Medications");
b.Navigation("Orders");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -1,12 +1,11 @@
using System;
using System.Collections.Generic;
using System.MedicationModel.DataAnnotations;
using System.MedicationModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VeterinaryClinicContracts.BindingModels;
using VeterinaryClinicContracts.BusinessLogicsContracts;
using VeterinaryClinicContracts.ViewModels;
using VeterinaryClinicDataModels.Models;

View File

@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
using System.MedicationModel.DataAnnotations;
using System.MedicationModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

View File

@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
using System.MedicationModel.DataAnnotations;
using System.MedicationModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

View File

@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
using System.MedicationModel.DataAnnotations;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

View File

@ -1,6 +1,6 @@
using System;
using System.Collections.Generic;
using System.MedicationModel.DataAnnotations;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Reflection;
using System.Text;

View File

@ -1,7 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.MedicationModel;
using System.Linq;
using System.Reflection;
using System.Text;
@ -16,7 +15,7 @@ namespace VeterinaryClinicDatabaseImplement
{
if (optionsBuilder.IsConfigured == false)
{
optionsBuilder.UseSqlServer(@"Data Source=LAPTOP-H1JDV6E5\MSSQLSERVER01;Initial Catalog=VeterinaryClinicDatabase;Integrated Security=True;MultipleActiveResultSets=True;TrustServerCertificate=True");
optionsBuilder.UseNpgsql(@"Host=localhost;Port=5432;Database=VeterinaryClinicDatabaseFull;Username=postgres;Password=1953");
}
base.OnConfiguring(optionsBuilder);
}

View File

@ -12,6 +12,7 @@
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.3" />
</ItemGroup>
<ItemGroup>