пересобираем бд в 3 раз

This commit is contained in:
gg12 darfren 2024-04-28 16:01:03 +04:00
parent 51b0308ea8
commit 77484409f6
12 changed files with 162 additions and 1435 deletions

View File

@ -320,5 +320,149 @@ View(APIPharmacist.GetRequest<List<MedicineViewModel>>($"api/medicine/getmedicin
var result = APIPharmacist.GetRequest<AnimalViewModel>($"api/animal/getanimal?animalid={animalId}");
return result;
}
//public IActionResult CreateService()
//{
// if (APIPharmacist.Pharmacist == null)
// {
// return Redirect("~/Home/Enter");
// }
// ViewBag.Medicines = APIPharmacist.GetRequest<List<MedicineViewModel>>($"api/animal/getmedicines");
// return View();
//}
//[HttpPost]
//public void CreateService(string name, string price, List<int> medicines)
//{
// if (APIPharmacist.Pharmacist == null)
// {
// throw new Exception("Âû êàê ñþäà ïîïàëè? Ñþäà âõîä òîëüêî àâòîðèçîâàííûì");
// }
// double _price;
// try
// {
// _price = Convert.ToDouble(price);
// }
// catch (Exception ex)
// {
// throw new Exception("Îøèáêà â ââåäåííûõ äàííûõ");
// }
// if (string.IsNullOrEmpty(name) || _price <= 0)
// {
// throw new Exception("Îøèáêà â ââåäåííûõ äàííûõ");
// }
// Dictionary<int, IMedicineModel> a = new Dictionary<int, IMedicineModel>();
// foreach (int medicine in medicines)
// {
// a.Add(medicine, new AnimalSearchModel { Id = medicine } as IMedicineModel);
// }
// APIPharmacist.PostRequest("api/service/createservice", new ServiceBindingModel
// {
// ServiceName = name,
// Price = Math.Round(_price, 2),
// PharmacistId = APIPharmacist.Pharmacist.Id,
// ServiceMedicines = a
// });
// Response.Redirect("Index");
//}
//public IActionResult DeleteMedicine()
//{
// if (APIPharmacist.Pharmacist == null)
// {
// return Redirect("~/Home/Enter");
// }
// ViewBag.Medicines = APIPharmacist.GetRequest<List<MedicineViewModel>>($"api/medicine/getmedicines?pharmacistid={APIPharmacist.Pharmacist.Id}");
// return View();
//}
//[HttpPost]
//public void DeleteMedicine(int medicine)
//{
// if (APIPharmacist.Pharmacist == null)
// {
// throw new Exception("Âû êàê ñþäà ïîïàëè? Ñþäà âõîä òîëüêî àâòîðèçîâàííûì");
// }
// APIPharmacist.PostRequest("api/medicine/deletemedicine", new MedicineBindingModel
// {
// Id = medicine
// });
// Response.Redirect("Index");
//}
//public IActionResult UpdateMedicine()
//{
// if (APIPharmacist.Pharmacist == null)
// {
// return Redirect("~/Home/Enter");
// }
// ViewBag.Medicines = APIPharmacist.GetRequest<List<MedicineViewModel>>($"api/medicine/getmedicines?pharmacistid={APIPharmacist.Pharmacist.Id}");
// ViewBag.Animals = APIPharmacist.GetRequest<List<AnimalViewModel>>($"api/animal/getanimallist");
// return View();
//}
//[HttpPost]
//public void UpdateMedicine(int medicine, string name, string price,
// List<int> animals)
//{
// if (APIPharmacist.Pharmacist == null)
// {
// throw new Exception("Âû êàê ñþäà ïîïàëè? Ñþäà âõîä òîëüêî àâòîðèçîâàííûì");
// }
// double _price;
// try
// {
// _price = Convert.ToDouble(price);
// }
// catch (Exception ex)
// {
// throw new Exception("Îøèáêà â ââåäåííûõ äàííûõ");
// }
// if (string.IsNullOrEmpty(name) || _price <= 0)
// {
// throw new Exception("Îøèáêà â ââåäåííûõ äàííûõ");
// }
// Dictionary<int, IAnimalModel> a = new Dictionary<int, IAnimalModel>();
// foreach (int animal in animals)
// {
// a.Add(animal, new AnimalSearchModel { Id = animal } as IAnimalModel);
// }
// APIPharmacist.PostRequest("api/medicine/updatemedicine", new MedicineBindingModel
// {
// Id = medicine,
// MedicineName = name,
// Price = Math.Round(_price, 2),
// PharmacistId = APIPharmacist.Pharmacist.Id,
// MedicineAnimals = a
// });
// Response.Redirect("Index");
//}
//[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
//public IActionResult Error()
//{
// return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
//}
//[HttpGet]
//public Tuple<MedicineViewModel, List<string>>? GetMedicine(int medicineId)
//{
// if (APIPharmacist.Pharmacist == null)
// {
// throw new Exception("Âû êàê ñþäà ïîïàëè? Ñþäà âõîä òîëüêî àâòîðèçîâàííûì");
// }
// var result = APIPharmacist.GetRequest<Tuple<MedicineViewModel, List<string>>>($"api/medicine/getmedicine?medicineid={medicineId}");
// if (result == null)
// {
// return default;
// }
// return result;
//}
}
}

View File

@ -103,6 +103,15 @@ namespace VetClinicBusinessLogic.BusinessLogics
}
_logger.LogInformation("Guidance. Text:{Text}.", model.Text);
var element = _guidanceStorage.GetElement(new GuidanceSearchModel
{
Text = model.Text,
ServiceId = model.ServiceId
});
if (element != null && element.Id != model.Id)
{
throw new InvalidOperationException("Рекомаендация для этой услуги с таким текстом уже есть");
}
}
}
}

View File

@ -116,7 +116,7 @@ namespace VetClinicBusinessLogic.BusinessLogics
});
if (element != null && element.Id != model.Id)
{
throw new InvalidOperationException("Клиент с таким логином уже есть");
throw new InvalidOperationException("Клиент с таким email'ом уже есть");
}
}
}

View File

@ -14,6 +14,6 @@ namespace VetClinicContracts.BindingModels
public string ServiceName { get; set; } = string.Empty;
public double Price { get; set; }
public int PharmacistId { get; set; }
public Dictionary<int, (IMedicineModel, int)> ServiceMedicines { get; set; } = new();
public Dictionary<int, IMedicineModel> ServiceMedicines { get; set; } = new();
}
}

View File

@ -18,6 +18,6 @@ namespace VetClinicContracts.ViewModels
[DisplayName("Фармацевт")]
public string PharmacistFIO { get; set; } = string.Empty;
public int PharmacistId { get; set; }
public Dictionary<int, (IMedicineModel, int)> ServiceMedicines { get; set; } = new();
public Dictionary<int, IMedicineModel> ServiceMedicines { get; set; } = new();
}
}

View File

@ -1,518 +0,0 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using VetClinicDataBaseImplement;
#nullable disable
namespace VetClinicDataBaseImplement.Migrations
{
[DbContext(typeof(VetClinicDatabase))]
[Migration("20240427074910_InitialCreate")]
partial class InitialCreate
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "8.0.4")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Admin", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("AdminFIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Admins");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Animal", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("AdminId")
.HasColumnType("int");
b.Property<string>("AnimalName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Family")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("AdminId");
b.ToTable("Animals");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Guidance", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<DateTime>("Date")
.HasColumnType("datetime2");
b.Property<int>("ServiceId")
.HasColumnType("int");
b.Property<string>("Text")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("ServiceId");
b.ToTable("Guidances");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Medicine", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("MedicineName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("PharmacistId")
.HasColumnType("int");
b.Property<double>("Price")
.HasColumnType("float");
b.HasKey("Id");
b.HasIndex("PharmacistId");
b.ToTable("Medicines");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.MedicineAnimal", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("AnimalId")
.HasColumnType("int");
b.Property<int>("MedicineId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("AnimalId");
b.HasIndex("MedicineId");
b.ToTable("MedicineAnimals");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Pharmacist", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("PharmacistFIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Pharmacists");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Service", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("PharmacistId")
.HasColumnType("int");
b.Property<double>("Price")
.HasColumnType("float");
b.Property<string>("ServiceName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("PharmacistId");
b.ToTable("Services");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.ServiceMedicine", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("Count")
.HasColumnType("int");
b.Property<int>("MedicineId")
.HasColumnType("int");
b.Property<int>("ServiceId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("MedicineId");
b.HasIndex("ServiceId");
b.ToTable("ServiceMedicines");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Vaccination", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("AnimalId")
.HasColumnType("int");
b.Property<double>("CostVaccination")
.HasColumnType("float");
b.Property<DateTime?>("DateStamp")
.IsRequired()
.HasColumnType("datetime2");
b.Property<string>("NameVaccination")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("AnimalId");
b.ToTable("Vaccinations");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Visit", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("AdminId")
.HasColumnType("int");
b.Property<DateTime>("DateVisit")
.HasColumnType("datetime2");
b.Property<string>("NameVisit")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("AdminId");
b.ToTable("Visits");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.VisitAnimal", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("AnimalId")
.HasColumnType("int");
b.Property<int>("VisitId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("AnimalId");
b.HasIndex("VisitId");
b.ToTable("VisitAnimals");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.VisitService", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("ServiceId")
.HasColumnType("int");
b.Property<int>("VisitId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ServiceId");
b.HasIndex("VisitId");
b.ToTable("ServiceVisits");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Animal", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Admin", "Admin")
.WithMany("Animals")
.HasForeignKey("AdminId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Admin");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Guidance", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Service", "Service")
.WithMany("Guidances")
.HasForeignKey("ServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Service");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Medicine", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Pharmacist", "Pharmacist")
.WithMany("Medicines")
.HasForeignKey("PharmacistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Pharmacist");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.MedicineAnimal", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Animal", "Animal")
.WithMany("Medicines")
.HasForeignKey("AnimalId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("VetClinicDataBaseImplement.Models.Medicine", "Medicine")
.WithMany("Animals")
.HasForeignKey("MedicineId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Animal");
b.Navigation("Medicine");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Service", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Pharmacist", "Pharmacist")
.WithMany("Services")
.HasForeignKey("PharmacistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Pharmacist");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.ServiceMedicine", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Medicine", "Medicine")
.WithMany("Services")
.HasForeignKey("MedicineId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("VetClinicDataBaseImplement.Models.Service", "Service")
.WithMany("Medicines")
.HasForeignKey("ServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Medicine");
b.Navigation("Service");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Vaccination", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Animal", "Animal")
.WithMany("Vaccinations")
.HasForeignKey("AnimalId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Animal");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Visit", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Admin", "Admin")
.WithMany("Visits")
.HasForeignKey("AdminId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Admin");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.VisitAnimal", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Animal", "Animal")
.WithMany("Visits")
.HasForeignKey("AnimalId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("VetClinicDataBaseImplement.Models.Visit", "Visit")
.WithMany("Animals")
.HasForeignKey("VisitId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Animal");
b.Navigation("Visit");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.VisitService", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Service", "Service")
.WithMany("Visits")
.HasForeignKey("ServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("VetClinicDataBaseImplement.Models.Visit", "Visit")
.WithMany("Services")
.HasForeignKey("VisitId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Service");
b.Navigation("Visit");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Admin", b =>
{
b.Navigation("Animals");
b.Navigation("Visits");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Animal", b =>
{
b.Navigation("Medicines");
b.Navigation("Vaccinations");
b.Navigation("Visits");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Medicine", b =>
{
b.Navigation("Animals");
b.Navigation("Services");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Pharmacist", b =>
{
b.Navigation("Medicines");
b.Navigation("Services");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Service", b =>
{
b.Navigation("Guidances");
b.Navigation("Medicines");
b.Navigation("Visits");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Visit", b =>
{
b.Navigation("Animals");
b.Navigation("Services");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -1,387 +0,0 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace VetClinicDataBaseImplement.Migrations
{
/// <inheritdoc />
public partial class InitialCreate : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Admins",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
AdminFIO = table.Column<string>(type: "nvarchar(max)", nullable: false),
Email = table.Column<string>(type: "nvarchar(max)", nullable: false),
Password = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Admins", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Pharmacists",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
PharmacistFIO = table.Column<string>(type: "nvarchar(max)", nullable: false),
Email = table.Column<string>(type: "nvarchar(max)", nullable: false),
Password = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Pharmacists", x => x.Id);
});
migrationBuilder.CreateTable(
name: "Animals",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
AdminId = table.Column<int>(type: "int", nullable: false),
AnimalName = table.Column<string>(type: "nvarchar(max)", nullable: false),
Family = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Animals", x => x.Id);
table.ForeignKey(
name: "FK_Animals_Admins_AdminId",
column: x => x.AdminId,
principalTable: "Admins",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Visits",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
AdminId = table.Column<int>(type: "int", nullable: false),
NameVisit = table.Column<string>(type: "nvarchar(max)", nullable: false),
DateVisit = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Visits", x => x.Id);
table.ForeignKey(
name: "FK_Visits_Admins_AdminId",
column: x => x.AdminId,
principalTable: "Admins",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Medicines",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
MedicineName = table.Column<string>(type: "nvarchar(max)", nullable: false),
PharmacistId = table.Column<int>(type: "int", nullable: false),
Price = table.Column<double>(type: "float", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Medicines", x => x.Id);
table.ForeignKey(
name: "FK_Medicines_Pharmacists_PharmacistId",
column: x => x.PharmacistId,
principalTable: "Pharmacists",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Services",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ServiceName = table.Column<string>(type: "nvarchar(max)", nullable: false),
Price = table.Column<double>(type: "float", nullable: false),
PharmacistId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Services", x => x.Id);
table.ForeignKey(
name: "FK_Services_Pharmacists_PharmacistId",
column: x => x.PharmacistId,
principalTable: "Pharmacists",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
});
migrationBuilder.CreateTable(
name: "Vaccinations",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
AnimalId = table.Column<int>(type: "int", nullable: false),
NameVaccination = table.Column<string>(type: "nvarchar(max)", nullable: false),
CostVaccination = table.Column<double>(type: "float", nullable: false),
DateStamp = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Vaccinations", x => x.Id);
table.ForeignKey(
name: "FK_Vaccinations_Animals_AnimalId",
column: x => x.AnimalId,
principalTable: "Animals",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "VisitAnimals",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
AnimalId = table.Column<int>(type: "int", nullable: false),
VisitId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_VisitAnimals", x => x.Id);
table.ForeignKey(
name: "FK_VisitAnimals_Animals_AnimalId",
column: x => x.AnimalId,
principalTable: "Animals",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_VisitAnimals_Visits_VisitId",
column: x => x.VisitId,
principalTable: "Visits",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "MedicineAnimals",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
MedicineId = table.Column<int>(type: "int", nullable: false),
AnimalId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_MedicineAnimals", x => x.Id);
table.ForeignKey(
name: "FK_MedicineAnimals_Animals_AnimalId",
column: x => x.AnimalId,
principalTable: "Animals",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_MedicineAnimals_Medicines_MedicineId",
column: x => x.MedicineId,
principalTable: "Medicines",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "Guidances",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ServiceId = table.Column<int>(type: "int", nullable: false),
Text = table.Column<string>(type: "nvarchar(max)", nullable: false),
Date = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Guidances", x => x.Id);
table.ForeignKey(
name: "FK_Guidances_Services_ServiceId",
column: x => x.ServiceId,
principalTable: "Services",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "ServiceMedicines",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ServiceId = table.Column<int>(type: "int", nullable: false),
MedicineId = table.Column<int>(type: "int", nullable: false),
Count = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ServiceMedicines", x => x.Id);
table.ForeignKey(
name: "FK_ServiceMedicines_Medicines_MedicineId",
column: x => x.MedicineId,
principalTable: "Medicines",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ServiceMedicines_Services_ServiceId",
column: x => x.ServiceId,
principalTable: "Services",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "ServiceVisits",
columns: table => new
{
Id = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ServiceId = table.Column<int>(type: "int", nullable: false),
VisitId = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ServiceVisits", x => x.Id);
table.ForeignKey(
name: "FK_ServiceVisits_Services_ServiceId",
column: x => x.ServiceId,
principalTable: "Services",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ServiceVisits_Visits_VisitId",
column: x => x.VisitId,
principalTable: "Visits",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_Animals_AdminId",
table: "Animals",
column: "AdminId");
migrationBuilder.CreateIndex(
name: "IX_Guidances_ServiceId",
table: "Guidances",
column: "ServiceId");
migrationBuilder.CreateIndex(
name: "IX_MedicineAnimals_AnimalId",
table: "MedicineAnimals",
column: "AnimalId");
migrationBuilder.CreateIndex(
name: "IX_MedicineAnimals_MedicineId",
table: "MedicineAnimals",
column: "MedicineId");
migrationBuilder.CreateIndex(
name: "IX_Medicines_PharmacistId",
table: "Medicines",
column: "PharmacistId");
migrationBuilder.CreateIndex(
name: "IX_ServiceMedicines_MedicineId",
table: "ServiceMedicines",
column: "MedicineId");
migrationBuilder.CreateIndex(
name: "IX_ServiceMedicines_ServiceId",
table: "ServiceMedicines",
column: "ServiceId");
migrationBuilder.CreateIndex(
name: "IX_Services_PharmacistId",
table: "Services",
column: "PharmacistId");
migrationBuilder.CreateIndex(
name: "IX_ServiceVisits_ServiceId",
table: "ServiceVisits",
column: "ServiceId");
migrationBuilder.CreateIndex(
name: "IX_ServiceVisits_VisitId",
table: "ServiceVisits",
column: "VisitId");
migrationBuilder.CreateIndex(
name: "IX_Vaccinations_AnimalId",
table: "Vaccinations",
column: "AnimalId");
migrationBuilder.CreateIndex(
name: "IX_VisitAnimals_AnimalId",
table: "VisitAnimals",
column: "AnimalId");
migrationBuilder.CreateIndex(
name: "IX_VisitAnimals_VisitId",
table: "VisitAnimals",
column: "VisitId");
migrationBuilder.CreateIndex(
name: "IX_Visits_AdminId",
table: "Visits",
column: "AdminId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Guidances");
migrationBuilder.DropTable(
name: "MedicineAnimals");
migrationBuilder.DropTable(
name: "ServiceMedicines");
migrationBuilder.DropTable(
name: "ServiceVisits");
migrationBuilder.DropTable(
name: "Vaccinations");
migrationBuilder.DropTable(
name: "VisitAnimals");
migrationBuilder.DropTable(
name: "Medicines");
migrationBuilder.DropTable(
name: "Services");
migrationBuilder.DropTable(
name: "Animals");
migrationBuilder.DropTable(
name: "Visits");
migrationBuilder.DropTable(
name: "Pharmacists");
migrationBuilder.DropTable(
name: "Admins");
}
}
}

View File

@ -1,515 +0,0 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using VetClinicDataBaseImplement;
#nullable disable
namespace VetClinicDataBaseImplement.Migrations
{
[DbContext(typeof(VetClinicDatabase))]
partial class VetClinicDatabaseModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "8.0.4")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder);
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Admin", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("AdminFIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Admins");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Animal", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("AdminId")
.HasColumnType("int");
b.Property<string>("AnimalName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Family")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("AdminId");
b.ToTable("Animals");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Guidance", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<DateTime>("Date")
.HasColumnType("datetime2");
b.Property<int>("ServiceId")
.HasColumnType("int");
b.Property<string>("Text")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("ServiceId");
b.ToTable("Guidances");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Medicine", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("MedicineName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("PharmacistId")
.HasColumnType("int");
b.Property<double>("Price")
.HasColumnType("float");
b.HasKey("Id");
b.HasIndex("PharmacistId");
b.ToTable("Medicines");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.MedicineAnimal", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("AnimalId")
.HasColumnType("int");
b.Property<int>("MedicineId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("AnimalId");
b.HasIndex("MedicineId");
b.ToTable("MedicineAnimals");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Pharmacist", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<string>("Email")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("Password")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<string>("PharmacistFIO")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.ToTable("Pharmacists");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Service", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("PharmacistId")
.HasColumnType("int");
b.Property<double>("Price")
.HasColumnType("float");
b.Property<string>("ServiceName")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("PharmacistId");
b.ToTable("Services");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.ServiceMedicine", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("Count")
.HasColumnType("int");
b.Property<int>("MedicineId")
.HasColumnType("int");
b.Property<int>("ServiceId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("MedicineId");
b.HasIndex("ServiceId");
b.ToTable("ServiceMedicines");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Vaccination", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("AnimalId")
.HasColumnType("int");
b.Property<double>("CostVaccination")
.HasColumnType("float");
b.Property<DateTime?>("DateStamp")
.IsRequired()
.HasColumnType("datetime2");
b.Property<string>("NameVaccination")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("AnimalId");
b.ToTable("Vaccinations");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Visit", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("AdminId")
.HasColumnType("int");
b.Property<DateTime>("DateVisit")
.HasColumnType("datetime2");
b.Property<string>("NameVisit")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("Id");
b.HasIndex("AdminId");
b.ToTable("Visits");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.VisitAnimal", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("AnimalId")
.HasColumnType("int");
b.Property<int>("VisitId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("AnimalId");
b.HasIndex("VisitId");
b.ToTable("VisitAnimals");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.VisitService", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));
b.Property<int>("ServiceId")
.HasColumnType("int");
b.Property<int>("VisitId")
.HasColumnType("int");
b.HasKey("Id");
b.HasIndex("ServiceId");
b.HasIndex("VisitId");
b.ToTable("ServiceVisits");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Animal", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Admin", "Admin")
.WithMany("Animals")
.HasForeignKey("AdminId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Admin");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Guidance", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Service", "Service")
.WithMany("Guidances")
.HasForeignKey("ServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Service");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Medicine", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Pharmacist", "Pharmacist")
.WithMany("Medicines")
.HasForeignKey("PharmacistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Pharmacist");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.MedicineAnimal", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Animal", "Animal")
.WithMany("Medicines")
.HasForeignKey("AnimalId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("VetClinicDataBaseImplement.Models.Medicine", "Medicine")
.WithMany("Animals")
.HasForeignKey("MedicineId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Animal");
b.Navigation("Medicine");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Service", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Pharmacist", "Pharmacist")
.WithMany("Services")
.HasForeignKey("PharmacistId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Pharmacist");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.ServiceMedicine", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Medicine", "Medicine")
.WithMany("Services")
.HasForeignKey("MedicineId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("VetClinicDataBaseImplement.Models.Service", "Service")
.WithMany("Medicines")
.HasForeignKey("ServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Medicine");
b.Navigation("Service");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Vaccination", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Animal", "Animal")
.WithMany("Vaccinations")
.HasForeignKey("AnimalId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Animal");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Visit", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Admin", "Admin")
.WithMany("Visits")
.HasForeignKey("AdminId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Admin");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.VisitAnimal", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Animal", "Animal")
.WithMany("Visits")
.HasForeignKey("AnimalId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("VetClinicDataBaseImplement.Models.Visit", "Visit")
.WithMany("Animals")
.HasForeignKey("VisitId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Animal");
b.Navigation("Visit");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.VisitService", b =>
{
b.HasOne("VetClinicDataBaseImplement.Models.Service", "Service")
.WithMany("Visits")
.HasForeignKey("ServiceId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("VetClinicDataBaseImplement.Models.Visit", "Visit")
.WithMany("Services")
.HasForeignKey("VisitId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Service");
b.Navigation("Visit");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Admin", b =>
{
b.Navigation("Animals");
b.Navigation("Visits");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Animal", b =>
{
b.Navigation("Medicines");
b.Navigation("Vaccinations");
b.Navigation("Visits");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Medicine", b =>
{
b.Navigation("Animals");
b.Navigation("Services");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Pharmacist", b =>
{
b.Navigation("Medicines");
b.Navigation("Services");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Service", b =>
{
b.Navigation("Guidances");
b.Navigation("Medicines");
b.Navigation("Visits");
});
modelBuilder.Entity("VetClinicDataBaseImplement.Models.Visit", b =>
{
b.Navigation("Animals");
b.Navigation("Services");
});
#pragma warning restore 612, 618
}
}
}

View File

@ -22,10 +22,10 @@ namespace VetClinicDataBaseImplement.Models
[Required]
public int PharmacistId { get; set; }
public virtual Pharmacist Pharmacist { get; private set; }
private Dictionary<int, (IMedicineModel, int)>? _serviceMedicines =
private Dictionary<int, IMedicineModel>? _serviceMedicines =
null;
[NotMapped]
public Dictionary<int, (IMedicineModel, int)> ServiceMedicines
public Dictionary<int, IMedicineModel> ServiceMedicines
{
get
{
@ -33,7 +33,7 @@ namespace VetClinicDataBaseImplement.Models
{
_serviceMedicines = Medicines
.ToDictionary(recPC => recPC.MedicineId, recPC =>
(recPC.Medicine as IMedicineModel, recPC.Count));
(recPC.Medicine as IMedicineModel));
}
return _serviceMedicines;
}
@ -56,7 +56,6 @@ namespace VetClinicDataBaseImplement.Models
ServiceMedicine
{
Medicine = context.Medicines.First(y => y.Id == x.Key),
Count = x.Value.Item2
}).ToList()
};
}
@ -85,8 +84,6 @@ namespace VetClinicDataBaseImplement.Models
context.SaveChanges();
foreach (var updateComponent in serviceMedicines)
{
updateComponent.Count =
model.ServiceMedicines[updateComponent.MedicineId].Item2;
model.ServiceMedicines.Remove(updateComponent.MedicineId);
}
context.SaveChanges();
@ -98,7 +95,6 @@ namespace VetClinicDataBaseImplement.Models
{
Service = service,
Medicine = context.Medicines.Include(x => x.Animals).ThenInclude(x => x.Animal).First(x => x.Id == pc.Key),
Count = pc.Value.Item2
});
context.SaveChanges();
}

View File

@ -15,8 +15,6 @@ namespace VetClinicDataBaseImplement.Models
public int ServiceId { get; set; }
[Required]
public int MedicineId { get; set; }
[Required]
public int Count { get; set; }
public virtual Service Service { get; set; } = new();
public virtual Medicine Medicine { get; set; } = new();
}

View File

@ -11,6 +11,6 @@ namespace VetClinicDataModels.Models
string ServiceName { get; }
double Price { get; }
int PharmacistId { get; }
Dictionary<int, (IMedicineModel, int)> ServiceMedicines { get; }
Dictionary<int, IMedicineModel> ServiceMedicines { get; }
}
}

View File

@ -20,14 +20,14 @@ namespace VetClinicRestApi.Controllers
}
[HttpGet]
public Tuple<ServiceViewModel, List<Tuple<string, int>>>? GetService(int serviceId)
public Tuple<ServiceViewModel, List<string>>? GetService(int serviceId)
{
try
{
var elem = _service.ReadElement(new ServiceSearchModel { Id = serviceId });
if (elem == null)
return null;
return Tuple.Create(elem, elem.ServiceMedicines.Select(x => Tuple.Create(x.Value.Item1.MedicineName, x.Value.Item2)).ToList());
return Tuple.Create(elem, elem.ServiceMedicines.Select(x => x.Value.MedicineName).ToList());
}
catch (Exception ex)
{