небольшие изменения в дизайне)

This commit is contained in:
EkaterinaR 2024-12-05 20:58:26 +04:00
parent d45eab6e3b
commit 9d2df1b6ed
7 changed files with 108 additions and 97 deletions

View File

@ -219,6 +219,10 @@ namespace EventVisitorClientApp.Controllers
[HttpPost] [HttpPost]
public IActionResult CreateEvent(string name, string description, string type, string phone, string email, string address, string city, string status, int count, DateTime timestart, DateTime timeend) public IActionResult CreateEvent(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)
{
return Redirect("~Home/Enter");
}
string returnUrl = HttpContext.Request.Headers["Referer"].ToString(); string returnUrl = HttpContext.Request.Headers["Referer"].ToString();
if (timestart < DateTime.UtcNow) if (timestart < DateTime.UtcNow)
@ -259,11 +263,20 @@ namespace EventVisitorClientApp.Controllers
public IActionResult DeleteEvent(int id) public IActionResult DeleteEvent(int id)
{ {
string returnUrl = HttpContext.Request.Headers["Referer"].ToString();
if (APIClient.Client == null) if (APIClient.Client == null)
{ {
return Redirect("~/Home/Enter"); return Redirect("~/Home/Enter");
} }
var visitorList = APIClient.GetRequest<List<VisitorViewModel>>($"api/main/GetVisitorList?EventId={id}");
if (visitorList.Count == 0)
{
APIClient.PostRequest($"api/main/DeleteEvent", new EventBindingModel { Id = id }); APIClient.PostRequest($"api/main/DeleteEvent", new EventBindingModel { Id = id });
}
else
{
return RedirectToAction("Error", new { errorMessage = "Íåëüçÿ óäàëèòü ìåðîïðèÿòèå, òàê êàê íà íåãî åñòü çàðåãåñòðèðîâàííûå ïîñåòèòåëè", returnUrl });
}
return RedirectToAction("MyEvents"); return RedirectToAction("MyEvents");
} }
@ -283,7 +296,7 @@ namespace EventVisitorClientApp.Controllers
{ {
if (APIClient.Client == null) if (APIClient.Client == null)
{ {
throw new Exception("Íåîáõîäèìà àâòîðèçàöèÿ"); return Redirect("~Home/Enter");
} }
var existingEvent = APIClient.GetRequest<EventViewModel>($"api/main/GetEvent?EventId={id}"); var existingEvent = APIClient.GetRequest<EventViewModel>($"api/main/GetEvent?EventId={id}");
DateTime start = (timestart.HasValue) ? DateTime.SpecifyKind(timestart.Value, DateTimeKind.Utc) : existingEvent.TimeStart.ToUniversalTime(); DateTime start = (timestart.HasValue) ? DateTime.SpecifyKind(timestart.Value, DateTimeKind.Utc) : existingEvent.TimeStart.ToUniversalTime();
@ -372,6 +385,10 @@ namespace EventVisitorClientApp.Controllers
[HttpPost] [HttpPost]
public IActionResult Visitors(int id, string action, string searchTerm, [FromForm] List<int> presentIds) public IActionResult Visitors(int id, string action, string searchTerm, [FromForm] List<int> presentIds)
{ {
if (APIClient.Client == null)
{
return Redirect("~Home/Enter");
}
// Ïîëó÷èòå âñåõ ïîñåòèòåëåé // Ïîëó÷èòå âñåõ ïîñåòèòåëåé
var visitors = APIClient.GetRequest<List<VisitorViewModel>>($"api/main/GetVisitorList?EventId={id}"); var visitors = APIClient.GetRequest<List<VisitorViewModel>>($"api/main/GetVisitorList?EventId={id}");
var visitorsFiltered = new List<VisitorViewModel>(); var visitorsFiltered = new List<VisitorViewModel>();
@ -458,15 +475,9 @@ namespace EventVisitorClientApp.Controllers
} }
[HttpPost] [HttpPost]
public async Task<IActionResult> RegistrationOnEventAsync(int id, string name, string phone, string email, DateTime dayBirth) public async Task<IActionResult> RegistrationOnEventAsync(int id, string name, string phone, string email)
{ {
var eventDetails = APIClient.GetRequest<EventViewModel>($"api/main/GetEvent?EventId={id}"); var eventDetails = APIClient.GetRequest<EventViewModel>($"api/main/GetEvent?EventId={id}");
string returnUrl = HttpContext.Request.Headers["Referer"].ToString();
if (dayBirth >= DateTime.Now)
{
return RedirectToAction("Error", new { errorMessage = "Íåâåðíàÿ äàòà ðîæäåíèÿ.", returnUrl });
}
if (eventDetails != null && eventDetails.FreePlaces > 0) if (eventDetails != null && eventDetails.FreePlaces > 0)
{ {
int updatedFreePlaces = eventDetails.FreePlaces - 1; int updatedFreePlaces = eventDetails.FreePlaces - 1;
@ -475,7 +486,7 @@ namespace EventVisitorClientApp.Controllers
Name = name, Name = name,
Phone = phone, Phone = phone,
Email = email, Email = email,
DayBirth = dayBirth.ToUniversalTime(), DayBirth = DateTime.UtcNow,
EventId = id, EventId = id,
Status = "Çàðåãèñòèðîâàí" Status = "Çàðåãèñòèðîâàí"
}); });
@ -563,7 +574,6 @@ namespace EventVisitorClientApp.Controllers
}); });
return RedirectToAction("CancellationSuccess"); // Ïåðåõîä íà ñòðàíèöó óñïåõà return RedirectToAction("CancellationSuccess"); // Ïåðåõîä íà ñòðàíèöó óñïåõà
} }
return NotFound(); return NotFound();
} }
@ -577,7 +587,7 @@ namespace EventVisitorClientApp.Controllers
{ {
if (APIClient.Client == null) if (APIClient.Client == null)
{ {
throw new Exception("Íåîáõîäèìà àâòîðèçàöèÿ"); return Redirect("~Home/Enter");
} }
var visitorList = APIClient.GetRequest<List<VisitorViewModel>>($"api/main/GetVisitorList?EventId={id}"); var visitorList = APIClient.GetRequest<List<VisitorViewModel>>($"api/main/GetVisitorList?EventId={id}");
string returnUrl = HttpContext.Request.Headers["Referer"].ToString(); string returnUrl = HttpContext.Request.Headers["Referer"].ToString();
@ -629,7 +639,7 @@ namespace EventVisitorClientApp.Controllers
{ {
if (APIClient.Client == null) if (APIClient.Client == null)
{ {
throw new Exception("Âû êàê ñóäà ïîïàëè? Ñóäà âõîä òîëüêî àâòîðèçîâàííûì"); return Redirect("~Home/Enter");
} }
var reportFilePath = $"F:\\EventVisitor\\Report_{id}_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.xlsx"; var reportFilePath = $"F:\\EventVisitor\\Report_{id}_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.xlsx";
APIClient.PostRequest("api/main/createreporttoexcelfile", new ReportVisitorsBindingModel APIClient.PostRequest("api/main/createreporttoexcelfile", new ReportVisitorsBindingModel
@ -647,9 +657,8 @@ namespace EventVisitorClientApp.Controllers
{ {
if (APIClient.Client == null) if (APIClient.Client == null)
{ {
throw new Exception("Âû êàê ñóäà ïîïàëè? Ñóäà âõîä òîëüêî àâòîðèçîâàííûì"); return Redirect("~Home/Enter");
} }
// Ñîçäàéòå îò÷åò // Ñîçäàéòå îò÷åò
var reportFilePath = $"F:\\EventVisitor\\Report_{id}_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.docx"; var reportFilePath = $"F:\\EventVisitor\\Report_{id}_{DateTime.Now.ToString("yyyyMMdd_HHmmss")}.docx";
APIClient.PostRequest("api/main/createreporttowordfile", new ReportVisitorsBindingModel APIClient.PostRequest("api/main/createreporttowordfile", new ReportVisitorsBindingModel

View File

@ -47,14 +47,14 @@
<div class="row mb-3"> <div class="row mb-3">
<label for="phone" class="col-sm-4 col-form-label">Контактный телефон:</label> <label for="phone" class="col-sm-4 col-form-label">Контактный телефон:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input type="tel" class="form-control" id="phone" name="phone" required> <input type="tel" class="form-control" id="phone" name="phone" value="@APIClient.Client.Phone" required>
<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="email" class="col-sm-4 col-form-label">Почта:</label> <label for="email" class="col-sm-4 col-form-label">Почта:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input type="email" class="form-control" id="email" name="email" required> <input type="email" class="form-control" id="email" name="email" value="@APIClient.Client.Email" required>
<div class="invalid-feedback">Пожалуйста, введите корректный email.</div> <div class="invalid-feedback">Пожалуйста, введите корректный email.</div>
</div> </div>
</div> </div>

View File

@ -68,7 +68,7 @@
{ {
<a class="btn btn-success btn-sm" asp-action="UpdateEvent" asp-route-id="@item.Id">Редактировать</a> <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" onclick="return confirm('Вы уверены, что хотите удалить посетителя?');">Удалить</a> <a class="btn btn-danger btn-sm" asp-action="DeleteEvent" asp-route-id="@item.Id" onclick="return confirm('Вы уверены, что хотите удалить мероприятие?');">Удалить</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>
</tr> </tr>

View File

@ -16,10 +16,11 @@
<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 mt-5"> <body>
<div class="row"> <div class="container mt-5">
<div class="row d-flex align-items-stretch">
<div class="col-md-6"> <div class="col-md-6">
<div class="card" style="margin: 10px; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); border-radius: 10px;"> <div class="card" style="margin: 10px;">
<div class="card-header bg-secondary text-light"> <div class="card-header bg-secondary text-light">
<h2>@Html.DisplayFor(model => model.Name)</h2> <h2>@Html.DisplayFor(model => model.Name)</h2>
</div> </div>
@ -44,9 +45,11 @@
</div> </div>
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
<div class="containerenter text-center"> <div class="card" style="margin: 10px;">
<div class="card-header bg-secondary text-light">
<h2 class="display-4 mb-4">Регистрация на мероприятие</h2> <h2 class="display-4 mb-4">Регистрация на мероприятие</h2>
</div>
<div class="card-body text-center">
<form method="post" id="registrationForm" class="border p-4 rounded"> <form method="post" id="registrationForm" class="border p-4 rounded">
<div class="mb-4"> <div class="mb-4">
<label for="InputName" class="form-label" style="font-size: 24px;">Введите имя</label> <label for="InputName" class="form-label" style="font-size: 24px;">Введите имя</label>
@ -65,29 +68,30 @@
<input type="email" name="email" class="form-control" id="email" required> <input type="email" name="email" class="form-control" id="email" required>
<div class="invalid-feedback">Пожалуйста, введите e-mail.</div> <div class="invalid-feedback">Пожалуйста, введите e-mail.</div>
</div> </div>
<div class="mb-4">
<label for="dayBirth" class="form-label" style="font-size: 24px">Введите дату рождения</label>
<input type="datetime-local" class="form-control" id="dayBirth" name="dayBirth" required>
</div>
<div class="mb-4"> <div class="mb-4">
<button type="submit" class="btn btn-dark btn-lg w-100">Зарегистрироваться</button> <button type="submit" class="btn btn-dark btn-lg w-100">Зарегистрироваться</button>
</div> </div>
</form> </form>
</div> </div>
</div> </div>
</div>
</div>
</div>
<style>
.card {
<style>
.containerenter {
max-width: 500px;
margin: auto;
background-color: #f8f9fa;
border-radius: 10px; border-radius: 10px;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1); box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
height: 100%; /* Задать высоту в 100% для карточек */
} }
</style>
.card-header {
background-color: #6c757d; /* Цвет заголовка карточки */
}
.card-body {
background-color: #f8f9fa; /* Цвет фона тела карточки */
}
</style>
</body>
</html>

View File

@ -9,9 +9,6 @@
<div class="text-center"> <div class="text-center">
<h1 class="display-4">Зарегистрированные пользователи</h1> <h1 class="display-4">Зарегистрированные пользователи</h1>
</div> </div>
<form method="post" asp-action="ReportWord" asp-controller="Home">
<button type="submit" class="btn btn-black btn-block" style="margin-bottom: 20px;">Отчет Word о посетителях</button>
</form>
<form method="post" action="/Home/Visitors"> <form method="post" action="/Home/Visitors">
<input type="hidden" name="id" value="@Model.FirstOrDefault()?.EventId" /> <input type="hidden" name="id" value="@Model.FirstOrDefault()?.EventId" />
@ -31,7 +28,6 @@
<th>Имя</th> <th>Имя</th>
<th>Почта</th> <th>Почта</th>
<th>Телефон</th> <th>Телефон</th>
<th>Дата рождения</th>
<th></th> <th></th>
<th></th> <th></th>
</tr> </tr>
@ -43,7 +39,6 @@
<td>@Html.DisplayFor(modelItem => item.Name)</td> <td>@Html.DisplayFor(modelItem => item.Name)</td>
<td>@Html.DisplayFor(modelItem => item.Email)</td> <td>@Html.DisplayFor(modelItem => item.Email)</td>
<td>@Html.DisplayFor(modelItem => item.Phone)</td> <td>@Html.DisplayFor(modelItem => item.Phone)</td>
<td>@Html.DisplayFor(modelItem => item.DayBirth)</td>
<td> <td>
<div class="form-check form-check-inline"> <div class="form-check form-check-inline">
<input class="form-check-input visitor-checkbox" type="checkbox" <input class="form-check-input visitor-checkbox" type="checkbox"

View File

@ -1,5 +1,8 @@
@model EventVisitorClientApp.Models.ErrorViewModel @model EventVisitorClientApp.Models.ErrorViewModel
@{
Layout = null;
ViewData["Title"] = "Ошибка";
}
<html> <html>
<head> <head>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"> <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
@ -13,9 +16,6 @@
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<h5 class="modal-title">Ошибка</h5> <h5 class="modal-title">Ошибка</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<p>@ViewBag.ErrorMessage</p> <p>@ViewBag.ErrorMessage</p>

View File

@ -27,10 +27,13 @@
<li class="nav-item"> <li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="MyEvents">Мои мероприятия</a> <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="MyEvents">Мои мероприятия</a>
</li> </li>
<ul class="navbar-nav ms-auto"> <ul class="navbar-nav ms-auto d-flex align-items-center">
<li class="nav-item"> <li class="nav-item">
<span class="text-dark">Организатор: @APIClient.Client.Surname @APIClient.Client.Name @APIClient.Client.LastName</span>
</li>
<li class="nav-item me-4">
<form method="post" asp-area="" asp-controller="Home" 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 fw-bold">Выход</button>
</form> </form>
</li> </li>
</ul> </ul>