-
Welcome
-
Learn about building Web apps with ASP.NET Core.
+
+
+
+
@ViewBag.RoomIsReserved%
+
Номеров забронировано (@ViewBag.RoomIsReservedCount из @ViewBag.RoomAll)
+
+
+
@ViewBag.GuestLiving%
+
Постояльцев проживает (@ViewBag.GuestLivingCount из @ViewBag.GuestCount)
+
+
+
+
0
+
@ViewBag.AverageDay
+
@ViewBag.MaxDay
+
+
Среднее время проживания (в днях)
+
+
+
+
0
+
@ViewBag.AverageCost
+
@ViewBag.MaxCost
+
+
Средний чек (в рублях)
+
+
+
Последнее бронирование
+
+ event_seat
+
+ С @ViewBag.LastReservation.StartDate.ToShortDateString()
+ по @ViewBag.LastReservation.EndDate.ToShortDateString()
+
+ Номер: @ViewBag.LastReservationRooms
+ Клиент: @ViewBag.LastReservation.Guest.Fio
+ На сумму @ViewBag.LastReservation.GetCost()
+
+
+
+
Последняя уборка
+
+ wash
+ Дата @ViewBag.LastCleaning.Date
+ Номер: @ViewBag.LastCleaning.Room.Id
+
+
diff --git a/Hotel/HotelView/Views/Home/Register.cshtml b/Hotel/HotelView/Views/Home/Register.cshtml
new file mode 100644
index 0000000..440ec37
--- /dev/null
+++ b/Hotel/HotelView/Views/Home/Register.cshtml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
Регистрация
+
+
+
+
+
\ No newline at end of file
diff --git a/Hotel/HotelView/Views/Home/Report.cshtml b/Hotel/HotelView/Views/Home/Report.cshtml
new file mode 100644
index 0000000..c2beeef
--- /dev/null
+++ b/Hotel/HotelView/Views/Home/Report.cshtml
@@ -0,0 +1,49 @@
+@model List
+@{
+ ViewData["Title"] = "Отчеты";
+ Layout = "_Layout";
+}
+
+
+
+
Создать отчет в формате (.docx) и отправить его на почту @ViewBag.Maitre.Login
+
+ Отправить
+
+
+
+
Создать отчет в формате (.xlsx) и отправить его на почту @ViewBag.Maitre.Login
+
+ Отправить
+
+
+
+
Создать отчет в формате (.pdf) и отправить его на почту @ViewBag.Maitre.Login
+
+
+
\ No newline at end of file
diff --git a/Hotel/HotelView/Views/Home/Reservations.cshtml b/Hotel/HotelView/Views/Home/Reservations.cshtml
new file mode 100644
index 0000000..3c8196e
--- /dev/null
+++ b/Hotel/HotelView/Views/Home/Reservations.cshtml
@@ -0,0 +1,107 @@
+@using HotelContracts.ViewModels
+@model List
+@{
+ ViewData["Title"] = "Бронирования";
+ Layout = "_Layout";
+}
+
+
+
+ @{
+
+ @foreach (var item in Model)
+ {
+ -
+
+
+
Бронирование с @item.StartDate.ToShortDateString() по @item.EndDate.ToShortDateString()
+
+
+
Постоялец: @item.Guest.Fio
+
+ @{
+ @foreach (var room in item.ReservationsRooms)
+ {
+ -
+
+ Номер №@room.Value.Id стоимость за день: @room.Value.Cost
+
+
+ }
+ }
+
+
Общая стоимость @item.GetCost() рублей
+
+
+
+
+ }
+
+ }
+
+
+
\ No newline at end of file
diff --git a/Hotel/HotelView/Views/Home/Rooms.cshtml b/Hotel/HotelView/Views/Home/Rooms.cshtml
new file mode 100644
index 0000000..3ca136c
--- /dev/null
+++ b/Hotel/HotelView/Views/Home/Rooms.cshtml
@@ -0,0 +1,98 @@
+@model List
+@{
+ ViewData["Title"] = "Home Page";
+ Layout = "_Layout";
+}
+
+
+
+ @{
+
+ @foreach (var item in Model)
+ {
+ -
+
+ @{
+ switch (item.Type)
+ {
+ case "standard":
+ chair
+ break;
+ case "superior":
+ weekend
+ break;
+ case "bedroom":
+ bed
+ break;
+ case "apartment":
+ apartment
+ break;
+ case "studio":
+ yard
+ break;
+ case "suite":
+ spa
+ break;
+ }
+ }
+ Номер: №@item.Id
+ Стоимость за сутки: @item.Cost рублей
+
+ @{
+ if (item.IsReserved)
+ {
+ Забронирована
+ }
+ }
+
+ @item.GetTypeRoom()
+
+ Удалить
+
+
+
+ }
+
+ }
+
+
+
\ No newline at end of file
diff --git a/Hotel/HotelView/Views/Home/_Layout.cshtml b/Hotel/HotelView/Views/Home/_Layout.cshtml
new file mode 100644
index 0000000..5430c7f
--- /dev/null
+++ b/Hotel/HotelView/Views/Home/_Layout.cshtml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+ @ViewData["Title"] - Hotel
+
+
+
+
+
diff --git a/Hotel/HotelView/Views/Shared/_Layout.cshtml.css b/Hotel/HotelView/Views/Home/_Layout.cshtml.css
similarity index 100%
rename from Hotel/HotelView/Views/Shared/_Layout.cshtml.css
rename to Hotel/HotelView/Views/Home/_Layout.cshtml.css
diff --git a/Hotel/HotelView/Views/Home/login.cshtml b/Hotel/HotelView/Views/Home/login.cshtml
new file mode 100644
index 0000000..1b6216b
--- /dev/null
+++ b/Hotel/HotelView/Views/Home/login.cshtml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+ Авторизация
+
+
+
+
+
\ No newline at end of file
diff --git a/Hotel/HotelView/Views/Shared/_Layout.cshtml b/Hotel/HotelView/Views/Shared/_Layout.cshtml
deleted file mode 100644
index 0882661..0000000
--- a/Hotel/HotelView/Views/Shared/_Layout.cshtml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
- @ViewData["Title"] - HotelView
-
-
-
-
-
-
-
-
- @RenderBody()
-
-
-
-
-
-
-
- @await RenderSectionAsync("Scripts", required: false)
-
-
diff --git a/Hotel/HotelView/Views/_ViewStart.cshtml b/Hotel/HotelView/Views/_ViewStart.cshtml
index a5f1004..e02abfc 100644
--- a/Hotel/HotelView/Views/_ViewStart.cshtml
+++ b/Hotel/HotelView/Views/_ViewStart.cshtml
@@ -1,3 +1 @@
-@{
- Layout = "_Layout";
-}
+
diff --git a/Hotel/HotelView/appsettings.json b/Hotel/HotelView/appsettings.json
index 10f68b8..3f00fa7 100644
--- a/Hotel/HotelView/appsettings.json
+++ b/Hotel/HotelView/appsettings.json
@@ -5,5 +5,11 @@
"Microsoft.AspNetCore": "Warning"
}
},
- "AllowedHosts": "*"
+ "AllowedHosts": "*",
+ "SmtpClientHost": "smtp.gmail.com",
+ "SmtpClientPort": "587",
+ "PopHost": "pop.gmail.com",
+ "PopPort": "995",
+ "MailLogin": "sushibarulyanosk7@gmail.com",
+ "MailPassword": "qwzj uqlx uukp bpmc"
}
diff --git a/Hotel/HotelView/wwwroot/css/index.css b/Hotel/HotelView/wwwroot/css/index.css
new file mode 100644
index 0000000..ffe53e6
--- /dev/null
+++ b/Hotel/HotelView/wwwroot/css/index.css
@@ -0,0 +1,146 @@
+@property --p {
+ syntax: "";
+ inherits: true;
+ initial-value: 0;
+}
+
+.pie {
+ --p:20;
+ --b:8px;
+ --c:lightgreen;
+ --w:90px;
+
+ width: var(--w);
+ aspect-ratio:1;
+ display:inline-grid;
+ position: relative;
+ place-content:center;
+ font-size:25px;
+ margin: 5px 20px 5px 5px;
+}
+
+.pie:before,
+.pie:after {
+ content:"";
+ position:absolute;
+ border-radius:50%;
+}
+.pie:before {
+ inset:0;
+ background:
+ radial-gradient(farthest-side,var(--c) 98%,#0000) top/var(--b) var(--b) no-repeat,
+ conic-gradient(var(--c) calc(var(--p)*1%),#0000 0);
+ -webkit-mask:radial-gradient(farthest-side,#0000 calc(99% - var(--b)),#000 calc(100% - var(--b)));
+ mask:radial-gradient(farthest-side,#0000 calc(99% - var(--b)),#000 calc(100% - var(--b)));
+}
+.pie:after {
+ inset:calc(50% - var(--b)/2);
+ background:var(--c);
+ transform:rotate(calc(var(--p)*3.6deg)) translateY(calc(50% - var(--w)/2));
+}
+@keyframes p {
+ from{--p:0}
+}
+.animate {
+ animation:p 1s .5s both;
+}
+.no-round:before {
+ background-size: 0 0, auto;
+}
+.no-round:after {
+ content: none;
+}
+
+@property --value {
+ syntax: "";
+ inherits: true;
+ initial-value: 0;
+}
+
+.line {
+ --value: 8;
+ --max: 10;
+
+ position: relative;
+ margin: 1em;
+ width: 100%;
+ height: 2px;
+ background-color: #343a405A;
+ animation:l 1s .5s both;
+}
+
+.line:after {
+ content: "";
+ display: block;
+ height: 4px;
+ top: -1px;
+ position: absolute;
+ background-color: lightgreen;
+ width: calc(var(--value) / var(--max) * 100%);
+ z-index: 2;
+}
+
+.line:before {
+ content: "";
+ display: block;
+ height: 8px;
+ width: 8px;
+ top: -3px;
+ position: absolute;
+ background-color: lightgreen;
+ left: calc(var(--value) / var(--max) * 100%);
+ z-index: 2;
+}
+
+.line * {
+ position: absolute;
+ top: 5px;
+ color: #343a40;
+}
+
+.line .line_max {
+ right: 0;
+}
+
+.line .line_value {
+ left: calc(var(--value) / var(--max) * 100%);
+}
+
+h6.line_label {
+ width: 100%;
+ text-align: center;
+}
+
+@keyframes l {
+ from {--value: 0}
+}
+
+h6.info {
+ width: 100%;
+ text-align: center;
+}
+
+span.info {
+ padding: 0 10px;
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+}
+
+span.info-start {
+ padding: 0 10px;
+ display: flex;
+ align-items: center;
+}
+
+span.info-start * {
+ margin: 0 5px;
+}
+
+.cont {
+ padding: 1rem;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+}
\ No newline at end of file
diff --git a/Hotel/HotelView/wwwroot/css/site.css b/Hotel/HotelView/wwwroot/css/site.css
index f27e5ad..2d850cb 100644
--- a/Hotel/HotelView/wwwroot/css/site.css
+++ b/Hotel/HotelView/wwwroot/css/site.css
@@ -1,18 +1,263 @@
-html {
- font-size: 14px;
+* {
+ padding: 0;
+ margin: 0;
}
-@media (min-width: 768px) {
- html {
- font-size: 16px;
- }
+.demo-layout-transparent {
+ background: url("https://wallpaperaccess.com/full/812556.jpg") center / cover;
}
-html {
+.demo-layout-transparent .mdl-layout__header,
+.demo-layout-transparent .mdl-layout__drawer-button {
+ color: white;
+}
+
+.demo-graph {
+ width: 100px;
+ height: 100px;
+}
+
+html, body {
+ font-family: 'Roboto', 'Helvetica', sans-serif;
+}
+.demo-avatar {
+ width: 48px;
+ height: 48px;
+ border-radius: 24px;
+}
+.demo-layout .mdl-layout__header .mdl-layout__drawer-button {
+ color: rgba(0, 0, 0, 0.54);
+}
+.mdl-layout__drawer .avatar {
+ margin-bottom: 16px;
+}
+.demo-drawer {
+ border: none;
+}
+/* iOS Safari specific workaround */
+.demo-drawer .mdl-menu__container {
+ z-index: -1;
+}
+.demo-drawer .demo-navigation {
+ z-index: -2;
+}
+/* END iOS Safari specific workaround */
+.demo-drawer .mdl-menu .mdl-menu__item {
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+.demo-drawer-header {
+ box-sizing: border-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-justify-content: flex-end;
+ -ms-flex-pack: end;
+ justify-content: flex-end;
+ padding: 16px;
+ height: 151px;
+}
+.demo-avatar-dropdown {
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
position: relative;
- min-height: 100%;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+}
+
+.demo-navigation {
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+.demo-layout .demo-navigation .mdl-navigation__link {
+ display: -webkit-flex !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ color: rgba(255, 255, 255, 0.56);
+ font-weight: 500;
+}
+.demo-layout .demo-navigation .mdl-navigation__link:hover {
+ background-color: #00BCD4;
+ color: #37474F;
+}
+.demo-navigation .mdl-navigation__link .material-icons {
+ font-size: 24px;
+ color: rgba(255, 255, 255, 0.56);
+ margin-right: 32px;
+}
+
+.demo-content {
+ max-width: 1080px;
+}
+
+.demo-charts {
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+.demo-chart:nth-child(1) {
+ color: #ACEC00;
+}
+.demo-chart:nth-child(2) {
+ color: #00BBD6;
+}
+.demo-chart:nth-child(3) {
+ color: #BA65C9;
+}
+.demo-chart:nth-child(4) {
+ color: #EF3C79;
+}
+.demo-graphs {
+ padding: 16px 32px;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-align-items: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+}
+_:-ms-input-placeholder, :root .demo-graphs {
+ min-height: 664px;
+}
+_:-ms-input-placeholder, :root .demo-graph {
+ max-height: 300px;
+}
+/* TODO end */
+.demo-graph:nth-child(1) {
+ color: #00b9d8;
+}
+.demo-graph:nth-child(2) {
+ color: #d9006e;
+}
+
+.demo-cards {
+ -webkit-align-items: flex-start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ -webkit-align-content: flex-start;
+ -ms-flex-line-pack: start;
+ align-content: flex-start;
+}
+.demo-cards .demo-separator {
+ height: 32px;
+}
+.demo-cards .mdl-card__title.mdl-card__title {
+ color: white;
+ font-size: 24px;
+ font-weight: 400;
+}
+.demo-cards ul {
+ padding: 0;
+}
+.demo-cards h3 {
+ font-size: 1em;
+}
+.demo-updates .mdl-card__title {
+ min-height: 200px;
+ background-image: url('https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTSIsmpJQm0OTBcGyY-Y3ECq4UMpN2lAcagoQ&usqp=CAU');
+ background-position: 90% 100%;
+ background-repeat: no-repeat;
+}
+.demo-cards .mdl-card__actions a {
+ color: #00BCD4;
+ text-decoration: none;
+}
+
+.demo-options h3 {
+ margin: 0;
+}
+.demo-options .mdl-checkbox__box-outline {
+ border-color: rgba(255, 255, 255, 0.89);
+}
+.demo-options ul {
+ margin: 0;
+ list-style-type: none;
+}
+.demo-options li {
+ margin: 4px 0;
+}
+.demo-options .material-icons {
+ color: rgba(255, 255, 255, 0.89);
+}
+.demo-options .mdl-card__actions {
+ height: 64px;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ box-sizing: border-box;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
}
body {
- margin-bottom: 60px;
+ background-color: #000;
+}
+
+.auth {
+ display: flex;
+ height: 100vh;
+ justify-content: center;
+ align-items: center;
+}
+
+.auth-cont {
+ padding: 1em;
+ display: flex;
+ flex-direction: column;
+ background-color: #fff;
+ border-radius: 10px;
+}
+
+.auth-btn {
+ display: flex;
+ width: 100%;
+ justify-content: space-between;
+}
+
+.auth-btn * {
+ width: 100%;
+ margin: 5px;
+}
+
+.main {
+ padding: 40px;
+}
+
+dialog {
+ position: absolute;
+ top: 30%;
+ left: 20px;
+}
+
+.mdl-list__item-avatar {
+ background-color: #00000000 !important;
+ color: black !important;
+}
+
+header.demo-drawer-header {
+ height: min-content !important;
}
\ No newline at end of file