Реализован выход, исправлено редактирование, добавлены корректные ссылки
This commit is contained in:
parent
44cfe0a90b
commit
c5eaf380d1
@ -238,7 +238,7 @@ namespace EventVisitorClientApp.Controllers
|
||||
}
|
||||
|
||||
[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}");
|
||||
|
||||
@ -282,11 +282,11 @@ namespace EventVisitorClientApp.Controllers
|
||||
Subject = "Ðåãèñòðàöèÿ íà ìåðîïðèÿòèå",
|
||||
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
|
||||
{
|
||||
return Json(new { success = false });
|
||||
Response.Redirect("MyEvents");
|
||||
}
|
||||
}
|
||||
|
||||
@ -361,12 +361,16 @@ namespace EventVisitorClientApp.Controllers
|
||||
|
||||
|
||||
[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)
|
||||
{
|
||||
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
|
||||
{
|
||||
Id = id,
|
||||
@ -378,13 +382,14 @@ namespace EventVisitorClientApp.Controllers
|
||||
City = city,
|
||||
Status = status,
|
||||
ContactEmail = email,
|
||||
TimeEnd = timeend.ToUniversalTime(),
|
||||
TimeStart = timestart.ToUniversalTime(),
|
||||
TimeEnd = end,
|
||||
TimeStart = start,
|
||||
Date = DateTime.Now.ToUniversalTime(),
|
||||
CountVisitors = count,
|
||||
FreePlaces = count - countRegisterPlace,
|
||||
OrganizerId = APIClient.Client.Id
|
||||
});
|
||||
Response.Redirect("MyEvents");
|
||||
Response.Redirect("/Home/MyEvents");
|
||||
}
|
||||
|
||||
public IActionResult GetWordFile()
|
||||
@ -392,6 +397,12 @@ namespace EventVisitorClientApp.Controllers
|
||||
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()
|
||||
{
|
||||
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.FreePlaces)</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 btn-secondary btn-sm" asp-action="ViewEvent" asp-route-id="@item.Id">Посмотреть</a>
|
||||
</td>
|
||||
|
@ -80,22 +80,7 @@
|
||||
</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>
|
||||
|
||||
|
||||
@ -109,26 +94,4 @@
|
||||
}
|
||||
</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;
|
||||
ViewData["Title"] = "Успешная регистрация";
|
||||
}
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<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="~/EventVisitorClientApp.styles.css" asp-append-version="true" />
|
||||
</head>
|
||||
<div class="container enter mt-5">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="card h-90">
|
||||
<div class="card-header bg-secondary text-light">
|
||||
<h2>Успешная регистрация</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p>Вы успешно зарегистрированы на мероприятие. Проверьте почту, мы отправили вам всю информацию туда.</p>
|
||||
<p>Спасибо за регистрацию!</p>
|
||||
</div>
|
||||
|
||||
<body>
|
||||
<div class="container mt-5">
|
||||
<div class="row align-items-center justify-content-center">
|
||||
<div class="col-md-6 text-center">
|
||||
<h1 class="display-4">Спасибо за регистрацию</h1>
|
||||
<p class="lead">Проверьте свою электронную почту</p>
|
||||
</div>
|
||||
<div class="col-md-6 text-center">
|
||||
<img src="https://www.pngkey.com/png/full/20-207091_happy-people-cartoon-transparent.png" alt="Счастливые люди" class="img-fluid" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
body {
|
||||
background-color: #f8f9fa;
|
||||
}
|
||||
<style>
|
||||
body {
|
||||
margin-top: 100px;
|
||||
background-color: #f8f9fa;
|
||||
}
|
||||
|
||||
.card {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
}
|
||||
h1 {
|
||||
margin-bottom: 20px; /* Отступ ниже заголовка */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.btn-black {
|
||||
background-color: black; /* Цвет кнопки */
|
||||
color: white; /* Цвет текста кнопки */
|
||||
}
|
||||
|
||||
.btn-block {
|
||||
width: 100%; /* Широкая кнопка */
|
||||
}
|
||||
</style>
|
||||
p {
|
||||
margin: 0; /* Убираем отступы для абзацев */
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
|
@ -3,7 +3,6 @@
|
||||
@{
|
||||
ViewData["Title"] = "UpdateEvent";
|
||||
}
|
||||
|
||||
<div class="container mt-5">
|
||||
<h2 class="text-center mb-4">Редактирование мероприятия</h2>
|
||||
<form method="post" class="needs-validation" novalidate>
|
||||
@ -18,7 +17,7 @@
|
||||
<label for="timestart" class="col-sm-4 col-form-label">Дата и время начала:</label>
|
||||
<div class="col-sm-8">
|
||||
<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>
|
||||
</div>
|
||||
@ -26,7 +25,7 @@
|
||||
<label for="timeend" class="col-sm-4 col-form-label">Дата и время конца:</label>
|
||||
<div class="col-sm-8">
|
||||
<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>
|
||||
</div>
|
||||
@ -39,16 +38,20 @@
|
||||
<div class="row mb-3">
|
||||
<label for="type" class="col-sm-4 col-form-label">Тип:</label>
|
||||
<div class="col-sm-8">
|
||||
<select class="form-select" id="type" name="type">
|
||||
<option value="">@Html.DisplayFor(model => model.Type)</option>
|
||||
<option value="Конференция">Конференция</option>
|
||||
<option value="Встреча">Встреча</option>
|
||||
<option value="Семинар">Семинар</option>
|
||||
<option value="Тренинг">Тренинг</option>
|
||||
<option value="Фестиваль">Фестиваль</option>
|
||||
<option value="Соревнование">Соревнование</option>
|
||||
<option value="Другое">Другое</option>
|
||||
</select>
|
||||
@Html.DropDownListFor(model => model.Type,
|
||||
new List<SelectListItem>
|
||||
{
|
||||
new SelectListItem { Text = "Конференция", Value = "Конференция" },
|
||||
new SelectListItem { Text = "Встреча", Value = "Встреча" },
|
||||
new SelectListItem { Text = "Семинар", Value = "Семинар" },
|
||||
new SelectListItem { Text = "Тренинг", Value = "Тренинг" },
|
||||
new SelectListItem { Text = "Фестиваль", Value = "Фестиваль" },
|
||||
new SelectListItem { Text = "Соревнование", Value = "Соревнование" },
|
||||
new SelectListItem { Text = "Другое", Value = "Другое" },
|
||||
},
|
||||
"Выберете тип",
|
||||
new { @class = "form-control" }
|
||||
)
|
||||
<div class="invalid-feedback">Пожалуйста, выберите тип мероприятия.</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -83,19 +86,23 @@
|
||||
<div class="row mb-3">
|
||||
<label for="status" class="col-sm-4 col-form-label">Статус:</label>
|
||||
<div class="col-sm-8">
|
||||
<select class="form-select" id="status" name="status" value="@Html.DisplayFor(model => model.Status)">
|
||||
<option value="">@Html.DisplayFor(model => model.Status)</option>
|
||||
<option value="Регистрация открыта">Регистрация открыта</option>
|
||||
<option value="Регистрация закрыта">Регистрация закрыта</option>
|
||||
</select>
|
||||
@Html.DropDownListFor(model => model.Status,
|
||||
new List<SelectListItem>
|
||||
{
|
||||
new SelectListItem { Text = "Регистрация открыта", Value = "Регистрация открыта" },
|
||||
new SelectListItem { Text = "Регистрация закрыта", Value = "Регистрация закрыта" },
|
||||
},
|
||||
"Выберете статус",
|
||||
new { @class = "form-control" }
|
||||
)
|
||||
<div class="invalid-feedback">Пожалуйста, выберите статус мероприятия.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row mb-3">
|
||||
<label for="count" class="col-sm-4 col-form-label">Количество посетителей:</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="number" class="form-control" id="count" name="count" value="@Html.DisplayFor(model => model.CountVisitors)" required>
|
||||
<div class="invalid-feedback">Пожалуйста, введите количество посетителей.</div>
|
||||
<input type="number" class="form-control" id="count" name="count" value="@Html.DisplayFor(model => model.CountVisitors)" required min="0" />
|
||||
<div class="invalid-feedback">Пожалуйста, введите количество посетителей. Минимальное количество: 0.</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
@ -29,7 +29,7 @@
|
||||
</li>
|
||||
<ul class="navbar-nav ms-auto">
|
||||
<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>
|
||||
</form>
|
||||
</li>
|
||||
|
Loading…
Reference in New Issue
Block a user