diff --git a/TravelAgency/TravelAgencyDatabaseImplement/Migrations/20240429172546_InitialCreate.Designer.cs b/TravelAgency/TravelAgencyDatabaseImplement/Migrations/20240429172546_InitialCreate.Designer.cs new file mode 100644 index 0000000..8ab879c --- /dev/null +++ b/TravelAgency/TravelAgencyDatabaseImplement/Migrations/20240429172546_InitialCreate.Designer.cs @@ -0,0 +1,442 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using TravelAgencyDatabaseImplement; + +#nullable disable + +namespace TravelAgencyDatabaseImplement.Migrations +{ + [DbContext(typeof(TravelAgencyDatabase))] + [Migration("20240429172546_InitialCreate")] + partial class InitialCreate + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.18") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Excursion", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExcursionDescription") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ExcursionName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Price") + .HasColumnType("float"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("Excursions"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExcursionGroupName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("GuideId") + .HasColumnType("int"); + + b.Property("ParticipantsAmount") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("GuideId"); + + b.HasIndex("UserId"); + + b.ToTable("ExcursionGroups"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionGroupTour", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExcursionGroupId") + .HasColumnType("int"); + + b.Property("TourId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ExcursionGroupId"); + + b.HasIndex("TourId"); + + b.ToTable("ExcursionGroupTours"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionTour", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExcursionId") + .HasColumnType("int"); + + b.Property("TourId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ExcursionId"); + + b.HasIndex("TourId"); + + b.ToTable("ExcursionTours"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Guide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("GuideFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Guides"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Place", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExcursionId") + .HasColumnType("int"); + + b.Property("PlaceAddress") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PlaceName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ExcursionId"); + + b.ToTable("Places"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Tour", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Price") + .HasColumnType("float"); + + b.Property("TourDate") + .HasColumnType("datetime2"); + + b.Property("TourDescription") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("TourName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("Tours"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Trip", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("GuideId") + .HasColumnType("int"); + + b.Property("TripDate") + .HasColumnType("datetime2"); + + b.Property("TripName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("GuideId"); + + b.ToTable("Trips"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.TripPlace", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlaceId") + .HasColumnType("int"); + + b.Property("TripId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("PlaceId"); + + b.HasIndex("TripId"); + + b.ToTable("TripPlaces"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Excursion", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionGroup", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.Guide", "Guide") + .WithMany() + .HasForeignKey("GuideId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TravelAgencyDatabaseImplement.Models.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Guide"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionGroupTour", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.ExcursionGroup", "ExcursionGroup") + .WithMany("Tours") + .HasForeignKey("ExcursionGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TravelAgencyDatabaseImplement.Models.Tour", "Tour") + .WithMany("ExcursionGroups") + .HasForeignKey("TourId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ExcursionGroup"); + + b.Navigation("Tour"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionTour", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.Excursion", "Excursion") + .WithMany("Tours") + .HasForeignKey("ExcursionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TravelAgencyDatabaseImplement.Models.Tour", "Tour") + .WithMany("Excursions") + .HasForeignKey("TourId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Excursion"); + + b.Navigation("Tour"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Place", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.Excursion", "Excursion") + .WithMany() + .HasForeignKey("ExcursionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Excursion"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Tour", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Trip", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.Guide", "Guide") + .WithMany() + .HasForeignKey("GuideId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Guide"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.TripPlace", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.Place", "Place") + .WithMany("Trips") + .HasForeignKey("PlaceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TravelAgencyDatabaseImplement.Models.Trip", "Trip") + .WithMany("Places") + .HasForeignKey("TripId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Place"); + + b.Navigation("Trip"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Excursion", b => + { + b.Navigation("Tours"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionGroup", b => + { + b.Navigation("Tours"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Place", b => + { + b.Navigation("Trips"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Tour", b => + { + b.Navigation("ExcursionGroups"); + + b.Navigation("Excursions"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Trip", b => + { + b.Navigation("Places"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/TravelAgency/TravelAgencyDatabaseImplement/Migrations/20240429172546_InitialCreate.cs b/TravelAgency/TravelAgencyDatabaseImplement/Migrations/20240429172546_InitialCreate.cs new file mode 100644 index 0000000..762d552 --- /dev/null +++ b/TravelAgency/TravelAgencyDatabaseImplement/Migrations/20240429172546_InitialCreate.cs @@ -0,0 +1,333 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace TravelAgencyDatabaseImplement.Migrations +{ + /// + public partial class InitialCreate : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Guides", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + GuideFIO = table.Column(type: "nvarchar(max)", nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: false), + PhoneNumber = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Guides", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Users", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + UserFIO = table.Column(type: "nvarchar(max)", nullable: false), + Email = table.Column(type: "nvarchar(max)", nullable: false), + PhoneNumber = table.Column(type: "nvarchar(max)", nullable: false), + Password = table.Column(type: "nvarchar(max)", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Users", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Trips", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + TripName = table.Column(type: "nvarchar(max)", nullable: false), + TripDate = table.Column(type: "datetime2", nullable: false), + GuideId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Trips", x => x.Id); + table.ForeignKey( + name: "FK_Trips_Guides_GuideId", + column: x => x.GuideId, + principalTable: "Guides", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ExcursionGroups", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ExcursionGroupName = table.Column(type: "nvarchar(max)", nullable: false), + ParticipantsAmount = table.Column(type: "int", nullable: false), + UserId = table.Column(type: "int", nullable: false), + GuideId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ExcursionGroups", x => x.Id); + table.ForeignKey( + name: "FK_ExcursionGroups_Guides_GuideId", + column: x => x.GuideId, + principalTable: "Guides", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ExcursionGroups_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "Excursions", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ExcursionName = table.Column(type: "nvarchar(max)", nullable: false), + ExcursionDescription = table.Column(type: "nvarchar(max)", nullable: false), + Price = table.Column(type: "float", nullable: false), + UserId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Excursions", x => x.Id); + table.ForeignKey( + name: "FK_Excursions_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "Tours", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + TourName = table.Column(type: "nvarchar(max)", nullable: false), + TourDescription = table.Column(type: "nvarchar(max)", nullable: false), + Price = table.Column(type: "float", nullable: false), + TourDate = table.Column(type: "datetime2", nullable: false), + UserId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Tours", x => x.Id); + table.ForeignKey( + name: "FK_Tours_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "Places", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + PlaceName = table.Column(type: "nvarchar(max)", nullable: false), + PlaceAddress = table.Column(type: "nvarchar(max)", nullable: false), + ExcursionId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Places", x => x.Id); + table.ForeignKey( + name: "FK_Places_Excursions_ExcursionId", + column: x => x.ExcursionId, + principalTable: "Excursions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ExcursionGroupTours", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ExcursionGroupId = table.Column(type: "int", nullable: false), + TourId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ExcursionGroupTours", x => x.Id); + table.ForeignKey( + name: "FK_ExcursionGroupTours_ExcursionGroups_ExcursionGroupId", + column: x => x.ExcursionGroupId, + principalTable: "ExcursionGroups", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ExcursionGroupTours_Tours_TourId", + column: x => x.TourId, + principalTable: "Tours", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "ExcursionTours", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + ExcursionId = table.Column(type: "int", nullable: false), + TourId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ExcursionTours", x => x.Id); + table.ForeignKey( + name: "FK_ExcursionTours_Excursions_ExcursionId", + column: x => x.ExcursionId, + principalTable: "Excursions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_ExcursionTours_Tours_TourId", + column: x => x.TourId, + principalTable: "Tours", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "TripPlaces", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + TripId = table.Column(type: "int", nullable: false), + PlaceId = table.Column(type: "int", nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_TripPlaces", x => x.Id); + table.ForeignKey( + name: "FK_TripPlaces_Places_PlaceId", + column: x => x.PlaceId, + principalTable: "Places", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + table.ForeignKey( + name: "FK_TripPlaces_Trips_TripId", + column: x => x.TripId, + principalTable: "Trips", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_ExcursionGroups_GuideId", + table: "ExcursionGroups", + column: "GuideId"); + + migrationBuilder.CreateIndex( + name: "IX_ExcursionGroups_UserId", + table: "ExcursionGroups", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_ExcursionGroupTours_ExcursionGroupId", + table: "ExcursionGroupTours", + column: "ExcursionGroupId"); + + migrationBuilder.CreateIndex( + name: "IX_ExcursionGroupTours_TourId", + table: "ExcursionGroupTours", + column: "TourId"); + + migrationBuilder.CreateIndex( + name: "IX_Excursions_UserId", + table: "Excursions", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_ExcursionTours_ExcursionId", + table: "ExcursionTours", + column: "ExcursionId"); + + migrationBuilder.CreateIndex( + name: "IX_ExcursionTours_TourId", + table: "ExcursionTours", + column: "TourId"); + + migrationBuilder.CreateIndex( + name: "IX_Places_ExcursionId", + table: "Places", + column: "ExcursionId"); + + migrationBuilder.CreateIndex( + name: "IX_Tours_UserId", + table: "Tours", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_TripPlaces_PlaceId", + table: "TripPlaces", + column: "PlaceId"); + + migrationBuilder.CreateIndex( + name: "IX_TripPlaces_TripId", + table: "TripPlaces", + column: "TripId"); + + migrationBuilder.CreateIndex( + name: "IX_Trips_GuideId", + table: "Trips", + column: "GuideId"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ExcursionGroupTours"); + + migrationBuilder.DropTable( + name: "ExcursionTours"); + + migrationBuilder.DropTable( + name: "TripPlaces"); + + migrationBuilder.DropTable( + name: "ExcursionGroups"); + + migrationBuilder.DropTable( + name: "Tours"); + + migrationBuilder.DropTable( + name: "Places"); + + migrationBuilder.DropTable( + name: "Trips"); + + migrationBuilder.DropTable( + name: "Excursions"); + + migrationBuilder.DropTable( + name: "Guides"); + + migrationBuilder.DropTable( + name: "Users"); + } + } +} diff --git a/TravelAgency/TravelAgencyDatabaseImplement/Migrations/TravelAgencyDatabaseModelSnapshot.cs b/TravelAgency/TravelAgencyDatabaseImplement/Migrations/TravelAgencyDatabaseModelSnapshot.cs new file mode 100644 index 0000000..86eba00 --- /dev/null +++ b/TravelAgency/TravelAgencyDatabaseImplement/Migrations/TravelAgencyDatabaseModelSnapshot.cs @@ -0,0 +1,439 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using TravelAgencyDatabaseImplement; + +#nullable disable + +namespace TravelAgencyDatabaseImplement.Migrations +{ + [DbContext(typeof(TravelAgencyDatabase))] + partial class TravelAgencyDatabaseModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.18") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Excursion", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExcursionDescription") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("ExcursionName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Price") + .HasColumnType("float"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("Excursions"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionGroup", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExcursionGroupName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("GuideId") + .HasColumnType("int"); + + b.Property("ParticipantsAmount") + .HasColumnType("int"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("GuideId"); + + b.HasIndex("UserId"); + + b.ToTable("ExcursionGroups"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionGroupTour", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExcursionGroupId") + .HasColumnType("int"); + + b.Property("TourId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ExcursionGroupId"); + + b.HasIndex("TourId"); + + b.ToTable("ExcursionGroupTours"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionTour", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExcursionId") + .HasColumnType("int"); + + b.Property("TourId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ExcursionId"); + + b.HasIndex("TourId"); + + b.ToTable("ExcursionTours"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Guide", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("GuideFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Guides"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Place", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ExcursionId") + .HasColumnType("int"); + + b.Property("PlaceAddress") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PlaceName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ExcursionId"); + + b.ToTable("Places"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Tour", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Price") + .HasColumnType("float"); + + b.Property("TourDate") + .HasColumnType("datetime2"); + + b.Property("TourDescription") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("TourName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("Tours"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Trip", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("GuideId") + .HasColumnType("int"); + + b.Property("TripDate") + .HasColumnType("datetime2"); + + b.Property("TripName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("GuideId"); + + b.ToTable("Trips"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.TripPlace", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("PlaceId") + .HasColumnType("int"); + + b.Property("TripId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("PlaceId"); + + b.HasIndex("TripId"); + + b.ToTable("TripPlaces"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Email") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("Password") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("PhoneNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("UserFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Excursion", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionGroup", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.Guide", "Guide") + .WithMany() + .HasForeignKey("GuideId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TravelAgencyDatabaseImplement.Models.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Guide"); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionGroupTour", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.ExcursionGroup", "ExcursionGroup") + .WithMany("Tours") + .HasForeignKey("ExcursionGroupId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TravelAgencyDatabaseImplement.Models.Tour", "Tour") + .WithMany("ExcursionGroups") + .HasForeignKey("TourId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ExcursionGroup"); + + b.Navigation("Tour"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionTour", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.Excursion", "Excursion") + .WithMany("Tours") + .HasForeignKey("ExcursionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TravelAgencyDatabaseImplement.Models.Tour", "Tour") + .WithMany("Excursions") + .HasForeignKey("TourId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Excursion"); + + b.Navigation("Tour"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Place", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.Excursion", "Excursion") + .WithMany() + .HasForeignKey("ExcursionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Excursion"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Tour", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("User"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Trip", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.Guide", "Guide") + .WithMany() + .HasForeignKey("GuideId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Guide"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.TripPlace", b => + { + b.HasOne("TravelAgencyDatabaseImplement.Models.Place", "Place") + .WithMany("Trips") + .HasForeignKey("PlaceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("TravelAgencyDatabaseImplement.Models.Trip", "Trip") + .WithMany("Places") + .HasForeignKey("TripId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Place"); + + b.Navigation("Trip"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Excursion", b => + { + b.Navigation("Tours"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.ExcursionGroup", b => + { + b.Navigation("Tours"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Place", b => + { + b.Navigation("Trips"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Tour", b => + { + b.Navigation("ExcursionGroups"); + + b.Navigation("Excursions"); + }); + + modelBuilder.Entity("TravelAgencyDatabaseImplement.Models.Trip", b => + { + b.Navigation("Places"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/TravelAgency/TravelAgencyDatabaseImplement/Models/Excursion.cs b/TravelAgency/TravelAgencyDatabaseImplement/Models/Excursion.cs index f81ad60..9ca2663 100644 --- a/TravelAgency/TravelAgencyDatabaseImplement/Models/Excursion.cs +++ b/TravelAgency/TravelAgencyDatabaseImplement/Models/Excursion.cs @@ -1,4 +1,5 @@ -using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using TravelAgencyContracts.BindingModels; using TravelAgencyContracts.ViewModels; @@ -21,6 +22,7 @@ namespace TravelAgencyDatabaseImplement.Models [Required] public int UserId { get; set; } + [DeleteBehavior(DeleteBehavior.Restrict)] public virtual User User { get; set; } private Dictionary? _excursionTours = null; diff --git a/TravelAgency/TravelAgencyDatabaseImplement/Models/ExcursionGroup.cs b/TravelAgency/TravelAgencyDatabaseImplement/Models/ExcursionGroup.cs index f12a4df..f8dc21e 100644 --- a/TravelAgency/TravelAgencyDatabaseImplement/Models/ExcursionGroup.cs +++ b/TravelAgency/TravelAgencyDatabaseImplement/Models/ExcursionGroup.cs @@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations; using TravelAgencyContracts.BindingModels; using TravelAgencyContracts.ViewModels; using TravelAgencyDataModels.Models; +using Microsoft.EntityFrameworkCore; namespace TravelAgencyDatabaseImplement.Models { @@ -19,13 +20,14 @@ namespace TravelAgencyDatabaseImplement.Models [Required] public int UserId { get; set; } + [DeleteBehavior(DeleteBehavior.Restrict)] + public virtual User User { get; set; } + [Required] public int GuideId { get; set; } public virtual Guide Guide { get; set; } - public virtual User User { get; set; } - private Dictionary? _excursionGroupTours = null; [NotMapped] diff --git a/TravelAgency/TravelAgencyDatabaseImplement/Models/Tour.cs b/TravelAgency/TravelAgencyDatabaseImplement/Models/Tour.cs index 1f9d94d..f402385 100644 --- a/TravelAgency/TravelAgencyDatabaseImplement/Models/Tour.cs +++ b/TravelAgency/TravelAgencyDatabaseImplement/Models/Tour.cs @@ -1,4 +1,5 @@ -using System.ComponentModel.DataAnnotations; +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using TravelAgencyContracts.BindingModels; using TravelAgencyContracts.ViewModels; @@ -24,6 +25,7 @@ namespace TravelAgencyDatabaseImplement.Models [Required] public int UserId { get; set; } + [DeleteBehavior(DeleteBehavior.Restrict)] public virtual User User { get; set; } [ForeignKey("TourId")] diff --git a/TravelAgency/TravelAgencyDatabaseImplement/TravelAgencyDatabaseImplement.csproj b/TravelAgency/TravelAgencyDatabaseImplement/TravelAgencyDatabaseImplement.csproj index 312e9a9..0b5b5dc 100644 --- a/TravelAgency/TravelAgencyDatabaseImplement/TravelAgencyDatabaseImplement.csproj +++ b/TravelAgency/TravelAgencyDatabaseImplement/TravelAgencyDatabaseImplement.csproj @@ -7,9 +7,9 @@ - - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive