Реализован выход, исправлено редактирование, добавлены корректные ссылки
This commit is contained in:
parent
44cfe0a90b
commit
c5eaf380d1
@ -238,7 +238,7 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public JsonResult RegistrationOnEvent(int id, string name, string phone, string email, DateTime dayBirth)
|
public void RegistrationOnEvent(int id, string name, string phone, string email, DateTime dayBirth)
|
||||||
{
|
{
|
||||||
var eventDetails = APIClient.GetRequest<EventViewModel>($"api/main/GetEvent?EventId={id}");
|
var eventDetails = APIClient.GetRequest<EventViewModel>($"api/main/GetEvent?EventId={id}");
|
||||||
|
|
||||||
@ -282,11 +282,11 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
Subject = "Ðåãèñòðàöèÿ íà ìåðîïðèÿòèå",
|
Subject = "Ðåãèñòðàöèÿ íà ìåðîïðèÿòèå",
|
||||||
Text = "Âû çàðåãåñòðèðîâàíû íà ìåðîïðèÿòèå " + eventDetails.Name + ", êîòîðîå ïðîéäåò " + eventDetails.TimeStart + ". Ïî àäðåñó: " + eventDetails.Address + " ã. " + eventDetails.City + ".\n" + "Ïî âñåì âîïðîñàì ìîæíî îáðàùàòüñÿ ïî òåëåôîíó: " + eventDetails.ContactPhone + " èëè ïî ïî÷òå: " + eventDetails.ContactEmail + ".\n" + "Áóäåì æäàòü Âàñ íà íàøèõ ìåðîïðèÿòèÿõ!"
|
Text = "Âû çàðåãåñòðèðîâàíû íà ìåðîïðèÿòèå " + eventDetails.Name + ", êîòîðîå ïðîéäåò " + eventDetails.TimeStart + ". Ïî àäðåñó: " + eventDetails.Address + " ã. " + eventDetails.City + ".\n" + "Ïî âñåì âîïðîñàì ìîæíî îáðàùàòüñÿ ïî òåëåôîíó: " + eventDetails.ContactPhone + " èëè ïî ïî÷òå: " + eventDetails.ContactEmail + ".\n" + "Áóäåì æäàòü Âàñ íà íàøèõ ìåðîïðèÿòèÿõ!"
|
||||||
});
|
});
|
||||||
return Json(new { success = true });
|
Response.Redirect("/Home/ResultRegistration");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return Json(new { success = false });
|
Response.Redirect("MyEvents");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -361,12 +361,16 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
|
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public void UpdateEvent(int id, string name, string description, string type, string phone, string email, string address, string city, string status, int count, DateTime timestart, DateTime timeend)
|
public void UpdateEvent(int id, string name, string description, string type, string phone, string email, string address, string city, string status, int count, DateTime? timestart, DateTime? timeend)
|
||||||
{
|
{
|
||||||
if (APIClient.Client == null)
|
if (APIClient.Client == null)
|
||||||
{
|
{
|
||||||
throw new Exception("Íåîáõîäèìà àâòîðèçàöèÿ");
|
throw new Exception("Íåîáõîäèìà àâòîðèçàöèÿ");
|
||||||
}
|
}
|
||||||
|
var existingEvent = APIClient.GetRequest<EventViewModel>($"api/main/GetEvent?EventId={id}");
|
||||||
|
DateTime start = (timestart.HasValue) ? DateTime.SpecifyKind(timestart.Value, DateTimeKind.Utc) : existingEvent.TimeStart.ToUniversalTime();
|
||||||
|
DateTime end = (timeend.HasValue) ? DateTime.SpecifyKind(timeend.Value, DateTimeKind.Utc) : existingEvent.TimeEnd.ToUniversalTime();
|
||||||
|
int countRegisterPlace = existingEvent.CountVisitors - existingEvent.FreePlaces;
|
||||||
APIClient.PostRequest("api/main/UpdateEvent", new EventBindingModel
|
APIClient.PostRequest("api/main/UpdateEvent", new EventBindingModel
|
||||||
{
|
{
|
||||||
Id = id,
|
Id = id,
|
||||||
@ -378,13 +382,14 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
City = city,
|
City = city,
|
||||||
Status = status,
|
Status = status,
|
||||||
ContactEmail = email,
|
ContactEmail = email,
|
||||||
TimeEnd = timeend.ToUniversalTime(),
|
TimeEnd = end,
|
||||||
TimeStart = timestart.ToUniversalTime(),
|
TimeStart = start,
|
||||||
Date = DateTime.Now.ToUniversalTime(),
|
Date = DateTime.Now.ToUniversalTime(),
|
||||||
CountVisitors = count,
|
CountVisitors = count,
|
||||||
|
FreePlaces = count - countRegisterPlace,
|
||||||
OrganizerId = APIClient.Client.Id
|
OrganizerId = APIClient.Client.Id
|
||||||
});
|
});
|
||||||
Response.Redirect("MyEvents");
|
Response.Redirect("/Home/MyEvents");
|
||||||
}
|
}
|
||||||
|
|
||||||
public IActionResult GetWordFile()
|
public IActionResult GetWordFile()
|
||||||
@ -392,6 +397,12 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
return new PhysicalFileResult("F:\\EventVisitor\\wordfile.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
return new PhysicalFileResult("F:\\EventVisitor\\wordfile.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IActionResult Logout()
|
||||||
|
{
|
||||||
|
APIClient.Client = null;
|
||||||
|
return Redirect("~/Home/Enter");
|
||||||
|
}
|
||||||
|
|
||||||
public IActionResult GetExcelFile()
|
public IActionResult GetExcelFile()
|
||||||
{
|
{
|
||||||
return new PhysicalFileResult("F:\\EventVisitor\\excelfile.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
return new PhysicalFileResult("F:\\EventVisitor\\excelfile.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
||||||
|
@ -35,7 +35,14 @@
|
|||||||
<td>@Html.DisplayFor(modelItem => item.Status)</td>
|
<td>@Html.DisplayFor(modelItem => item.Status)</td>
|
||||||
<td>@Html.DisplayFor(modelItem => item.FreePlaces)</td>
|
<td>@Html.DisplayFor(modelItem => item.FreePlaces)</td>
|
||||||
<td>
|
<td>
|
||||||
<a class="btn btn-success btn-sm" asp-action="UpdateEvent" asp-route-id="@item.Id">Редактировать</a>
|
@if (item.TimeStart < DateTime.Now)
|
||||||
|
{
|
||||||
|
<button class="btn btn-success btn-sm" disabled>Редактировать</button>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<a class="btn btn-success btn-sm" asp-action="UpdateEvent" asp-route-id="@item.Id">Редактировать</a>
|
||||||
|
}
|
||||||
<a class="btn btn-danger btn-sm" asp-action="DeleteEvent" asp-route-id="@item.Id">Удалить</a>
|
<a class="btn btn-danger btn-sm" asp-action="DeleteEvent" asp-route-id="@item.Id">Удалить</a>
|
||||||
<a class="btn btn btn-secondary btn-sm" asp-action="ViewEvent" asp-route-id="@item.Id">Посмотреть</a>
|
<a class="btn btn btn-secondary btn-sm" asp-action="ViewEvent" asp-route-id="@item.Id">Посмотреть</a>
|
||||||
</td>
|
</td>
|
||||||
|
@ -80,22 +80,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal fade" id="registrationSuccessModal" tabindex="-1" aria-labelledby="registrationSuccessModalLabel" aria-hidden="true">
|
|
||||||
<div class="modal-dialog">
|
|
||||||
<div class="modal-content">
|
|
||||||
<div class="modal-header">
|
|
||||||
<h5 class="modal-title" id="registrationSuccessModalLabel">Успешно зарегистрировано!</h5>
|
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрыть"></button>
|
|
||||||
</div>
|
|
||||||
<div class="modal-body">
|
|
||||||
Вы зарегистрировались успешно! Проверьте почту. Мы прислали вам сообщение с информацией о мероприятии.
|
|
||||||
</div>
|
|
||||||
<div class="modal-footer">
|
|
||||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Закрыть</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|
||||||
@ -109,26 +94,4 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script src="~/lib/jquery/dist/jquery.min.js"></script>
|
|
||||||
<script>
|
|
||||||
$('#registrationForm').on('submit', function (e) {
|
|
||||||
e.preventDefault(); // Предотвращаем стандартное поведение формы
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
type: "POST",
|
|
||||||
url: '@Url.Action("RegistrationOnEvent", "Home")',
|
|
||||||
data: $(this).serialize(), // Сериализуем данные формы
|
|
||||||
success: function (response) {
|
|
||||||
// Если регистрация успешна
|
|
||||||
if (response.success) {
|
|
||||||
$('#registrationSuccessModal').modal('show'); // Показываем модальное окно
|
|
||||||
} else {
|
|
||||||
alert("Нет свободных мест!"); // Или обработка ошибки
|
|
||||||
}
|
|
||||||
},
|
|
||||||
error: function () {
|
|
||||||
alert("Произошла ошибка при регистрации.");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
Layout = null;
|
Layout = null;
|
||||||
ViewData["Title"] = "Успешная регистрация";
|
ViewData["Title"] = "Успешная регистрация";
|
||||||
}
|
}
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
@ -10,38 +11,33 @@
|
|||||||
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
|
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
|
||||||
<link rel="stylesheet" href="~/EventVisitorClientApp.styles.css" asp-append-version="true" />
|
<link rel="stylesheet" href="~/EventVisitorClientApp.styles.css" asp-append-version="true" />
|
||||||
</head>
|
</head>
|
||||||
<div class="container enter mt-5">
|
|
||||||
<div class="row">
|
<body>
|
||||||
<div class="col-md-12">
|
<div class="container mt-5">
|
||||||
<div class="card h-90">
|
<div class="row align-items-center justify-content-center">
|
||||||
<div class="card-header bg-secondary text-light">
|
<div class="col-md-6 text-center">
|
||||||
<h2>Успешная регистрация</h2>
|
<h1 class="display-4">Спасибо за регистрацию</h1>
|
||||||
</div>
|
<p class="lead">Проверьте свою электронную почту</p>
|
||||||
<div class="card-body">
|
</div>
|
||||||
<p>Вы успешно зарегистрированы на мероприятие. Проверьте почту, мы отправили вам всю информацию туда.</p>
|
<div class="col-md-6 text-center">
|
||||||
<p>Спасибо за регистрацию!</p>
|
<img src="https://www.pngkey.com/png/full/20-207091_happy-people-cartoon-transparent.png" alt="Счастливые люди" class="img-fluid" />
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
background-color: #f8f9fa;
|
margin-top: 100px;
|
||||||
}
|
background-color: #f8f9fa;
|
||||||
|
}
|
||||||
|
|
||||||
.card {
|
h1 {
|
||||||
margin-top: 20px;
|
margin-bottom: 20px; /* Отступ ниже заголовка */
|
||||||
padding: 20px;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-black {
|
p {
|
||||||
background-color: black; /* Цвет кнопки */
|
margin: 0; /* Убираем отступы для абзацев */
|
||||||
color: white; /* Цвет текста кнопки */
|
}
|
||||||
}
|
</style>
|
||||||
|
</body>
|
||||||
.btn-block {
|
|
||||||
width: 100%; /* Широкая кнопка */
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
@{
|
@{
|
||||||
ViewData["Title"] = "UpdateEvent";
|
ViewData["Title"] = "UpdateEvent";
|
||||||
}
|
}
|
||||||
|
|
||||||
<div class="container mt-5">
|
<div class="container mt-5">
|
||||||
<h2 class="text-center mb-4">Редактирование мероприятия</h2>
|
<h2 class="text-center mb-4">Редактирование мероприятия</h2>
|
||||||
<form method="post" class="needs-validation" novalidate>
|
<form method="post" class="needs-validation" novalidate>
|
||||||
@ -18,7 +17,7 @@
|
|||||||
<label for="timestart" class="col-sm-4 col-form-label">Дата и время начала:</label>
|
<label for="timestart" class="col-sm-4 col-form-label">Дата и время начала:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="datetime-local" class="form-control" id="timestart" name="timestart"
|
<input type="datetime-local" class="form-control" id="timestart" name="timestart"
|
||||||
value="@Model.TimeStart" required>
|
value="@Model.TimeStart.ToString("yyyy-MM-ddTHH:mm")" required>
|
||||||
<div class="invalid-feedback">Пожалуйста, выберите дату и время начала.</div>
|
<div class="invalid-feedback">Пожалуйста, выберите дату и время начала.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -26,7 +25,7 @@
|
|||||||
<label for="timeend" class="col-sm-4 col-form-label">Дата и время конца:</label>
|
<label for="timeend" class="col-sm-4 col-form-label">Дата и время конца:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="datetime-local" class="form-control" id="timeend" name="timeend"
|
<input type="datetime-local" class="form-control" id="timeend" name="timeend"
|
||||||
value="@Model.TimeEnd" required>
|
value="@Model.TimeEnd.ToString("yyyy-MM-ddTHH:mm")" required>
|
||||||
<div class="invalid-feedback">Пожалуйста, выберите дату и время окончания.</div>
|
<div class="invalid-feedback">Пожалуйста, выберите дату и время окончания.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -39,16 +38,20 @@
|
|||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<label for="type" class="col-sm-4 col-form-label">Тип:</label>
|
<label for="type" class="col-sm-4 col-form-label">Тип:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<select class="form-select" id="type" name="type">
|
@Html.DropDownListFor(model => model.Type,
|
||||||
<option value="">@Html.DisplayFor(model => model.Type)</option>
|
new List<SelectListItem>
|
||||||
<option value="Конференция">Конференция</option>
|
{
|
||||||
<option value="Встреча">Встреча</option>
|
new SelectListItem { Text = "Конференция", Value = "Конференция" },
|
||||||
<option value="Семинар">Семинар</option>
|
new SelectListItem { Text = "Встреча", Value = "Встреча" },
|
||||||
<option value="Тренинг">Тренинг</option>
|
new SelectListItem { Text = "Семинар", Value = "Семинар" },
|
||||||
<option value="Фестиваль">Фестиваль</option>
|
new SelectListItem { Text = "Тренинг", Value = "Тренинг" },
|
||||||
<option value="Соревнование">Соревнование</option>
|
new SelectListItem { Text = "Фестиваль", Value = "Фестиваль" },
|
||||||
<option value="Другое">Другое</option>
|
new SelectListItem { Text = "Соревнование", Value = "Соревнование" },
|
||||||
</select>
|
new SelectListItem { Text = "Другое", Value = "Другое" },
|
||||||
|
},
|
||||||
|
"Выберете тип",
|
||||||
|
new { @class = "form-control" }
|
||||||
|
)
|
||||||
<div class="invalid-feedback">Пожалуйста, выберите тип мероприятия.</div>
|
<div class="invalid-feedback">Пожалуйста, выберите тип мероприятия.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -83,19 +86,23 @@
|
|||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<label for="status" class="col-sm-4 col-form-label">Статус:</label>
|
<label for="status" class="col-sm-4 col-form-label">Статус:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<select class="form-select" id="status" name="status" value="@Html.DisplayFor(model => model.Status)">
|
@Html.DropDownListFor(model => model.Status,
|
||||||
<option value="">@Html.DisplayFor(model => model.Status)</option>
|
new List<SelectListItem>
|
||||||
<option value="Регистрация открыта">Регистрация открыта</option>
|
{
|
||||||
<option value="Регистрация закрыта">Регистрация закрыта</option>
|
new SelectListItem { Text = "Регистрация открыта", Value = "Регистрация открыта" },
|
||||||
</select>
|
new SelectListItem { Text = "Регистрация закрыта", Value = "Регистрация закрыта" },
|
||||||
|
},
|
||||||
|
"Выберете статус",
|
||||||
|
new { @class = "form-control" }
|
||||||
|
)
|
||||||
<div class="invalid-feedback">Пожалуйста, выберите статус мероприятия.</div>
|
<div class="invalid-feedback">Пожалуйста, выберите статус мероприятия.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<label for="count" class="col-sm-4 col-form-label">Количество посетителей:</label>
|
<label for="count" class="col-sm-4 col-form-label">Количество посетителей:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="number" class="form-control" id="count" name="count" value="@Html.DisplayFor(model => model.CountVisitors)" required>
|
<input type="number" class="form-control" id="count" name="count" value="@Html.DisplayFor(model => model.CountVisitors)" required min="0" />
|
||||||
<div class="invalid-feedback">Пожалуйста, введите количество посетителей.</div>
|
<div class="invalid-feedback">Пожалуйста, введите количество посетителей. Минимальное количество: 0.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
</li>
|
</li>
|
||||||
<ul class="navbar-nav ms-auto">
|
<ul class="navbar-nav ms-auto">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<form method="post" asp-area="" asp-controller="Account" asp-action="Logout" id="logoutForm" class="d-inline">
|
<form method="post" asp-area="" asp-controller="Home" asp-action="Logout" id="logoutForm" class="d-inline">
|
||||||
<button type="submit" class="nav-link btn btn-link text-dark">Выход</button>
|
<button type="submit" class="nav-link btn btn-link text-dark">Выход</button>
|
||||||
</form>
|
</form>
|
||||||
</li>
|
</li>
|
||||||
|
Loading…
Reference in New Issue
Block a user