From 01ec2a2324faa0a96f1fa78fdb2e7dafff239113 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=B0=D1=88=D0=B8=D0=BD=20=D0=9C=D0=B0=D0=BA=D1=81?= =?UTF-8?q?=D0=B8=D0=BC?= Date: Fri, 19 May 2023 00:58:09 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=BF=D1=8F=D1=82=D1=8C=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20=D0=B2=20=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BE=D0=B5=20=D1=81=D1=83=D1=89=D0=BD=D0=BE=D1=81=D1=82=D1=8C?= =?UTF-8?q?,=20=D0=BD=D0=BE=20=D0=BE=D0=BD=D0=BE=20=D0=BD=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F=D0=B5=D1=82=D1=81=D1=8F=20:(?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/HomeController.cs | 1 + .../AddConferenceBookingToConference.cshtml | 9 + .../BusinessLogics/ReportLogicHeadwaiter.cs | 1 + .../ConferenceBookingBindingModel.cs | 2 + .../ViewModels/ConferenceBookingViewModel.cs | 3 + Hotel/HotelDataBaseImplement/HotelDataBase.cs | 2 +- .../20230518202913_newdatamaksim.Designer.cs | 567 ++++++++++++++++++ .../20230518202913_newdatamaksim.cs | 30 + .../Migrations/HotelDataBaseModelSnapshot.cs | 4 + .../Models/ConferenceBooking.cs | 3 + Hotel/HotelRestApi/Отчет PDF.pdf | Bin 0 -> 30263 bytes 11 files changed, 621 insertions(+), 1 deletion(-) create mode 100644 Hotel/HotelDataBaseImplement/Migrations/20230518202913_newdatamaksim.Designer.cs create mode 100644 Hotel/HotelDataBaseImplement/Migrations/20230518202913_newdatamaksim.cs create mode 100644 Hotel/HotelRestApi/Отчет PDF.pdf diff --git a/Hotel/HostrelHeadwaiterApp/Controllers/HomeController.cs b/Hotel/HostrelHeadwaiterApp/Controllers/HomeController.cs index 60cab97..eabdeb6 100644 --- a/Hotel/HostrelHeadwaiterApp/Controllers/HomeController.cs +++ b/Hotel/HostrelHeadwaiterApp/Controllers/HomeController.cs @@ -550,6 +550,7 @@ namespace HostrelHeadwaiterApp.Controllers Id = conferenceBooking, ConferenceId = conference, NameHall = conferenceBookingElem.NameHall, + StartDate = conferenceBookingElem.StartDate, HeadwaiterId = conferenceBookingElem.HeadwaiterId, }); Response.Redirect("ListConferenceBookings"); diff --git a/Hotel/HostrelHeadwaiterApp/Views/Home/AddConferenceBookingToConference.cshtml b/Hotel/HostrelHeadwaiterApp/Views/Home/AddConferenceBookingToConference.cshtml index eacd630..2ffb672 100644 --- a/Hotel/HostrelHeadwaiterApp/Views/Home/AddConferenceBookingToConference.cshtml +++ b/Hotel/HostrelHeadwaiterApp/Views/Home/AddConferenceBookingToConference.cshtml @@ -18,6 +18,15 @@ +
+ + +

diff --git a/Hotel/HotelBusinessLogic/BusinessLogics/ReportLogicHeadwaiter.cs b/Hotel/HotelBusinessLogic/BusinessLogics/ReportLogicHeadwaiter.cs index d03693a..75ed295 100644 --- a/Hotel/HotelBusinessLogic/BusinessLogics/ReportLogicHeadwaiter.cs +++ b/Hotel/HotelBusinessLogic/BusinessLogics/ReportLogicHeadwaiter.cs @@ -105,6 +105,7 @@ namespace HotelBusinessLogic.BusinessLogics DinnerName = mp.DinnerName, DinnerPrice = mp.DinnerPrice, NameHall = conferenceBooking.NameHall + }); } } diff --git a/Hotel/HotelContracts/BindingModels/ConferenceBookingBindingModel.cs b/Hotel/HotelContracts/BindingModels/ConferenceBookingBindingModel.cs index 94368a8..865c583 100644 --- a/Hotel/HotelContracts/BindingModels/ConferenceBookingBindingModel.cs +++ b/Hotel/HotelContracts/BindingModels/ConferenceBookingBindingModel.cs @@ -10,6 +10,8 @@ namespace HotelContracts.BindingModels public string NameHall { get; set; } = string.Empty; + public DateTime? StartDate { get; set; } = DateTime.Now; + public int Id { get; set; } public Dictionary ConferenceBookingDinners { get; set; } = new(); } diff --git a/Hotel/HotelContracts/ViewModels/ConferenceBookingViewModel.cs b/Hotel/HotelContracts/ViewModels/ConferenceBookingViewModel.cs index 740125c..c62bb3c 100644 --- a/Hotel/HotelContracts/ViewModels/ConferenceBookingViewModel.cs +++ b/Hotel/HotelContracts/ViewModels/ConferenceBookingViewModel.cs @@ -2,6 +2,7 @@ using Newtonsoft.Json; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -10,6 +11,8 @@ namespace HotelContracts.ViewModels { public class ConferenceBookingViewModel : IConferenceBookingModel { + [DisplayName("Дата начала конференции")] + public DateTime? StartDate { get; set; } public int HeadwaiterId { get; set; } public int? ConferenceId { get; set; } diff --git a/Hotel/HotelDataBaseImplement/HotelDataBase.cs b/Hotel/HotelDataBaseImplement/HotelDataBase.cs index 6d7ccea..7141379 100644 --- a/Hotel/HotelDataBaseImplement/HotelDataBase.cs +++ b/Hotel/HotelDataBaseImplement/HotelDataBase.cs @@ -9,7 +9,7 @@ namespace HotelDataBaseImplement { if (optionsBuilder.IsConfigured == false) { - optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-VG5USAH\SQLEXPRESS;Initial Catalog=HotelDataBaseFull;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); + optionsBuilder.UseSqlServer(@"Data Source=DESKTOP-V0ON61E\SQLEXPRESS;Initial Catalog=HotelDataBaseFull;Integrated Security=True;MultipleActiveResultSets=True;;TrustServerCertificate=True"); } base.OnConfiguring(optionsBuilder); } diff --git a/Hotel/HotelDataBaseImplement/Migrations/20230518202913_newdatamaksim.Designer.cs b/Hotel/HotelDataBaseImplement/Migrations/20230518202913_newdatamaksim.Designer.cs new file mode 100644 index 0000000..e986be2 --- /dev/null +++ b/Hotel/HotelDataBaseImplement/Migrations/20230518202913_newdatamaksim.Designer.cs @@ -0,0 +1,567 @@ +// +using System; +using HotelDataBaseImplement; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace HotelDataBaseImplement.Migrations +{ + [DbContext(typeof(HotelDataBase))] + [Migration("20230518202913_newdatamaksim")] + partial class newdatamaksim + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.5") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Conference", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConferenceName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("OrganiserId") + .HasColumnType("int"); + + b.Property("StartDate") + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.HasIndex("OrganiserId"); + + b.ToTable("Conferences"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.ConferenceBooking", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConferenceId") + .HasColumnType("int"); + + b.Property("HeadwaiterId") + .HasColumnType("int"); + + b.Property("NameHall") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("StartDate") + .IsRequired() + .HasColumnType("datetime2"); + + b.HasKey("Id"); + + b.HasIndex("ConferenceId"); + + b.HasIndex("HeadwaiterId"); + + b.ToTable("ConferenceBookings"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.ConferenceBookingDinner", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConferenceBookingId") + .HasColumnType("int"); + + b.Property("DinnerId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ConferenceBookingId"); + + b.HasIndex("DinnerId"); + + b.ToTable("ConferenceBookingDinners"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.ConferenceMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("ConferenceId") + .HasColumnType("int"); + + b.Property("MemberId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("ConferenceId"); + + b.HasIndex("MemberId"); + + b.ToTable("ConferenceMembers"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Dinner", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("DinnerName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("DinnerPrice") + .HasColumnType("float"); + + b.Property("HeadwaiterId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("HeadwaiterId"); + + b.ToTable("Dinners"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Headwaiter", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("HeadwaiterEmail") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("HeadwaiterFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("HeadwaiterLogin") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("HeadwaiterNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("HeadwaiterPassword") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Headwaiters"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.MealPlan", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("MealPlanName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("MealPlanPrice") + .HasColumnType("float"); + + b.Property("OrganiserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("OrganiserId"); + + b.ToTable("MealPlans"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.MealPlanMember", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("MealPlanId") + .HasColumnType("int"); + + b.Property("MemberId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("MealPlanId"); + + b.HasIndex("MemberId"); + + b.ToTable("MealPlanMembers"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Member", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Citizenship") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("MemberFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("OrganiserId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("OrganiserId"); + + b.ToTable("Members"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Organiser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("OrganiserEmail") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("OrganiserFIO") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("OrganiserLogin") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("OrganiserNumber") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("OrganiserPassword") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Organisers"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Room", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("HeadwaiterId") + .HasColumnType("int"); + + b.Property("MealPlanId") + .HasColumnType("int"); + + b.Property("RoomFrame") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("RoomName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property("RoomPrice") + .HasColumnType("float"); + + b.HasKey("Id"); + + b.HasIndex("HeadwaiterId"); + + b.HasIndex("MealPlanId"); + + b.ToTable("Rooms"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.RoomDinner", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Count") + .HasColumnType("int"); + + b.Property("DinnerId") + .HasColumnType("int"); + + b.Property("RoomId") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.HasIndex("DinnerId"); + + b.HasIndex("RoomId"); + + b.ToTable("RoomDinners"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Conference", b => + { + b.HasOne("HotelDataBaseImplement.Models.Organiser", "Organiser") + .WithMany("Conferences") + .HasForeignKey("OrganiserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Organiser"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.ConferenceBooking", b => + { + b.HasOne("HotelDataBaseImplement.Models.Conference", "Conference") + .WithMany("ConferenceBookings") + .HasForeignKey("ConferenceId"); + + b.HasOne("HotelDataBaseImplement.Models.Headwaiter", "Headwaiter") + .WithMany("ConferenceBookings") + .HasForeignKey("HeadwaiterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Conference"); + + b.Navigation("Headwaiter"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.ConferenceBookingDinner", b => + { + b.HasOne("HotelDataBaseImplement.Models.ConferenceBooking", "ConferenceBooking") + .WithMany("Dinners") + .HasForeignKey("ConferenceBookingId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("HotelDataBaseImplement.Models.Dinner", "Dinner") + .WithMany("ConferenceBookingDinner") + .HasForeignKey("DinnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("ConferenceBooking"); + + b.Navigation("Dinner"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.ConferenceMember", b => + { + b.HasOne("HotelDataBaseImplement.Models.Conference", "Conference") + .WithMany("Members") + .HasForeignKey("ConferenceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("HotelDataBaseImplement.Models.Member", "Member") + .WithMany("ConferenceMembers") + .HasForeignKey("MemberId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Conference"); + + b.Navigation("Member"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Dinner", b => + { + b.HasOne("HotelDataBaseImplement.Models.Headwaiter", "Headwaiter") + .WithMany("Dinners") + .HasForeignKey("HeadwaiterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Headwaiter"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.MealPlan", b => + { + b.HasOne("HotelDataBaseImplement.Models.Organiser", "Organiser") + .WithMany("MealPlans") + .HasForeignKey("OrganiserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Organiser"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.MealPlanMember", b => + { + b.HasOne("HotelDataBaseImplement.Models.MealPlan", "MealPlan") + .WithMany("Members") + .HasForeignKey("MealPlanId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("HotelDataBaseImplement.Models.Member", "Member") + .WithMany("MealPlanMember") + .HasForeignKey("MemberId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("MealPlan"); + + b.Navigation("Member"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Member", b => + { + b.HasOne("HotelDataBaseImplement.Models.Organiser", "Organiser") + .WithMany("Members") + .HasForeignKey("OrganiserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Organiser"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Room", b => + { + b.HasOne("HotelDataBaseImplement.Models.Headwaiter", "Headwaiter") + .WithMany("Rooms") + .HasForeignKey("HeadwaiterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("HotelDataBaseImplement.Models.MealPlan", "MealPlan") + .WithMany("Rooms") + .HasForeignKey("MealPlanId"); + + b.Navigation("Headwaiter"); + + b.Navigation("MealPlan"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.RoomDinner", b => + { + b.HasOne("HotelDataBaseImplement.Models.Dinner", "Dinner") + .WithMany("RoomDinners") + .HasForeignKey("DinnerId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("HotelDataBaseImplement.Models.Room", "Room") + .WithMany("Dinners") + .HasForeignKey("RoomId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Dinner"); + + b.Navigation("Room"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Conference", b => + { + b.Navigation("ConferenceBookings"); + + b.Navigation("Members"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.ConferenceBooking", b => + { + b.Navigation("Dinners"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Dinner", b => + { + b.Navigation("ConferenceBookingDinner"); + + b.Navigation("RoomDinners"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Headwaiter", b => + { + b.Navigation("ConferenceBookings"); + + b.Navigation("Dinners"); + + b.Navigation("Rooms"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.MealPlan", b => + { + b.Navigation("Members"); + + b.Navigation("Rooms"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Member", b => + { + b.Navigation("ConferenceMembers"); + + b.Navigation("MealPlanMember"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Organiser", b => + { + b.Navigation("Conferences"); + + b.Navigation("MealPlans"); + + b.Navigation("Members"); + }); + + modelBuilder.Entity("HotelDataBaseImplement.Models.Room", b => + { + b.Navigation("Dinners"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Hotel/HotelDataBaseImplement/Migrations/20230518202913_newdatamaksim.cs b/Hotel/HotelDataBaseImplement/Migrations/20230518202913_newdatamaksim.cs new file mode 100644 index 0000000..bad3640 --- /dev/null +++ b/Hotel/HotelDataBaseImplement/Migrations/20230518202913_newdatamaksim.cs @@ -0,0 +1,30 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace HotelDataBaseImplement.Migrations +{ + /// + public partial class newdatamaksim : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "StartDate", + table: "ConferenceBookings", + type: "datetime2", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "StartDate", + table: "ConferenceBookings"); + } + } +} diff --git a/Hotel/HotelDataBaseImplement/Migrations/HotelDataBaseModelSnapshot.cs b/Hotel/HotelDataBaseImplement/Migrations/HotelDataBaseModelSnapshot.cs index be610ba..cbef860 100644 --- a/Hotel/HotelDataBaseImplement/Migrations/HotelDataBaseModelSnapshot.cs +++ b/Hotel/HotelDataBaseImplement/Migrations/HotelDataBaseModelSnapshot.cs @@ -65,6 +65,10 @@ namespace HotelDataBaseImplement.Migrations .IsRequired() .HasColumnType("nvarchar(max)"); + b.Property("StartDate") + .IsRequired() + .HasColumnType("datetime2"); + b.HasKey("Id"); b.HasIndex("ConferenceId"); diff --git a/Hotel/HotelDataBaseImplement/Models/ConferenceBooking.cs b/Hotel/HotelDataBaseImplement/Models/ConferenceBooking.cs index d247e8c..710791c 100644 --- a/Hotel/HotelDataBaseImplement/Models/ConferenceBooking.cs +++ b/Hotel/HotelDataBaseImplement/Models/ConferenceBooking.cs @@ -13,6 +13,8 @@ namespace HotelDataBaseImplement.Models { public class ConferenceBooking : IConferenceBookingModel { + [Required] + public DateTime? StartDate { get; set; } = DateTime.Now; public int HeadwaiterId { get; private set; } public int? ConferenceId { get; private set; } public int Id { get; private set; } @@ -68,6 +70,7 @@ namespace HotelDataBaseImplement.Models ConferenceId = ConferenceId, HeadwaiterId = HeadwaiterId, NameHall = NameHall, + StartDate = StartDate, ConferenceBookingDinners = ConferenceBookingDinners, ConfName = Conference?.ConferenceName }; diff --git a/Hotel/HotelRestApi/Отчет PDF.pdf b/Hotel/HotelRestApi/Отчет PDF.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c21d2fe2182a434dce29c080c150f9d4223368a3 GIT binary patch literal 30263 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