using EventVisitorClientApp.Models; using EventVisitorLogic.BindingModels; using EventVisitorLogic.Logic; using EventVisitorLogic.ViewModels; using Microsoft.AspNetCore.Mvc; using System; using System.Diagnostics; using System.Net.NetworkInformation; using System.Net; using System.Numerics; using System.Security.Cryptography.Xml; using System.Xml.Linq; using Microsoft.Extensions.Logging; namespace EventVisitorClientApp.Controllers { public class HomeController : Controller { Random rnd = new Random(); public IActionResult Index() { return View(); } [HttpGet] public IActionResult Enter() { return View(); } [HttpPost] public void Enter(string login, string password) { if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password)) { throw new Exception("Введите логин и пароль"); } APIClient.Client = APIClient.GetRequest($"api/Organizer/login?login={login}&password={password}"); if (APIClient.Client == null) { throw new Exception("Неверный логин/пароль"); } Response.Redirect("Index"); } [HttpGet] public IActionResult Privacy() { if (APIClient.Client == null) { return Redirect("~Home/Enter"); } return View(APIClient.Client); } [HttpPost] public void Privacy(string login, string password, string surname, string name, string lastname, string role, string organizationName, string phone) { if (APIClient.Client == null) { throw new Exception("Вы как сюда попали? Сюда вход только авторизованным"); } if (string.IsNullOrEmpty(login)) { throw new Exception("Введите e-mail"); } if (string.IsNullOrEmpty(password)) { throw new Exception("Введите пароль"); } if (string.IsNullOrEmpty(name)) { throw new Exception("Введите имя"); } if (string.IsNullOrEmpty(surname)) { throw new Exception("Введите фамилию"); } if (string.IsNullOrEmpty(organizationName)) { throw new Exception("Введите название организации"); } if (string.IsNullOrEmpty(role)) { throw new Exception("Введите роль"); } APIClient.PostRequest("api/client/updatedata", new OrganizerBindingModel { Id = APIClient.Client.Id, Name = name, Surname = surname, LastName = lastname, OrganizationName = organizationName, Phone = phone, Email = login, Password = password }); APIClient.Client.Name = name; APIClient.Client.Surname = surname; APIClient.Client.LastName = lastname; APIClient.Client.OrganizationName = organizationName; APIClient.Client.Phone = phone; APIClient.Client.Email = login; APIClient.Client.Password = password; Response.Redirect("Index"); } [HttpGet] public IActionResult Register() { return View(); } [HttpPost] public void Register(string login, string password, string surname, string name, string lastname, string organizationName, string phone, string code) { if (string.IsNullOrEmpty(login)) { throw new Exception("Введите e-mail"); } if (string.IsNullOrEmpty(password)) { throw new Exception("Введите пароль"); } if (string.IsNullOrEmpty(name)) { throw new Exception("Введите имя"); } if (string.IsNullOrEmpty(surname)) { throw new Exception("Введите фамилию"); } if (string.IsNullOrEmpty(organizationName)) { throw new Exception("Введите название организации"); } APIClient.PostRequest("api/Organizer/Register", new OrganizerBindingModel { Name = name, Surname = surname, LastName = lastname, OrganizationName = organizationName, Phone = phone, Email = login, Password = password }); Response.Redirect("Enter"); return; } public IActionResult MyEvents() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } return View(APIClient.GetRequest>($"api/main/GetEventList?OrganizerId={APIClient.Client.Id}")); } public IActionResult Visitors(int id) { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } return View(APIClient.GetRequest>($"api/main/GetVisitorList?EventId={id}")); } public IActionResult CreateEvent() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } return View(); } public IActionResult ViewEvent(int id) { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } var eventDetails = APIClient.GetRequest($"api/main/GetEvent?EventId={id}"); return View(eventDetails); } public IActionResult RegistrationOnEvent(int id) { var eventDetails = APIClient.GetRequest($"api/main/GetEvent?EventId={id}"); return View(eventDetails); } public IActionResult ResultRegistration() { return View(); } [HttpPost] public void RegistrationOnEvent(int id, string name, string phone, string email, DateTime dayBirth) { var eventDetails = APIClient.GetRequest($"api/main/GetEvent?EventId={id}"); if (eventDetails != null && eventDetails.FreePlaces > 0) { int updatedFreePlaces = eventDetails.FreePlaces - 1; APIClient.PostRequest("api/main/registrationonevent", new VisitorBindingModel { Name = name, Phone = phone, Email = email, DayBirth = dayBirth.ToUniversalTime(), EventId = id, Status = "Зарегистирован" }); // 4. Обновите количество свободных мест APIClient.PostRequest("api/main/updateevent", new EventBindingModel { Id = id, Name = eventDetails.Name, Description = eventDetails.Description, Type = eventDetails.Type, ContactPhone = eventDetails.ContactPhone, Address = eventDetails.Address, City = eventDetails.City, Status = eventDetails.Status, ContactEmail = eventDetails.ContactEmail, TimeEnd = eventDetails.TimeEnd.ToUniversalTime(), TimeStart = eventDetails.TimeStart.ToUniversalTime(), Date = eventDetails.Date.ToUniversalTime(), CountVisitors = eventDetails.CountVisitors, OrganizerId = eventDetails.OrganizerId, Link = eventDetails.Link, FreePlaces = updatedFreePlaces }); Response.Redirect("ResultRegistration"); } else { Response.Redirect("NoFreePlaces"); } } [HttpPost] public void 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) { throw new Exception("Вы как сюда попали? Сюда вход только авторизованным"); } string eventId = Guid.NewGuid().ToString(); // Генерация уникального идентификатора для мероприятия string registrationLink = $"https://localhost:7186/registrationonevent?EventId={eventId}"; // Формирование ссылки на регистрацию APIClient.PostRequest("api/main/createevent", new EventBindingModel { Name = name, Description = description, Type = type, ContactPhone = phone, Address = address, City = city, Status = status, ContactEmail = email, TimeEnd = timeend.ToUniversalTime(), TimeStart = timestart.ToUniversalTime(), Date = DateTime.Now.ToUniversalTime(), CountVisitors = count, FreePlaces = count, OrganizerId = APIClient.Client.Id, Link = registrationLink }); Response.Redirect("MyEvents"); } public IActionResult DeleteEvent(int id) { // Проверка на авторизацию пользователя if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } // Выполнение запроса на удаление мероприятия APIClient.PostRequest($"api/main/DeleteEvent", new EventBindingModel { Id = id }); // Перенаправление обратно на страницу с мероприятиями return RedirectToAction("MyEvents"); } public IActionResult UpdateEvent(int id) { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } var eventDetails = APIClient.GetRequest($"api/main/GetEvent?EventId={id}"); return View(eventDetails); } [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) { if (APIClient.Client == null) { throw new Exception("Необходима авторизация"); } APIClient.PostRequest("api/main/UpdateEvent", new EventBindingModel { Id = id, Name = name, Description = description, Type = type, ContactPhone = phone, Address = address, City = city, Status = status, ContactEmail = email, TimeEnd = timeend.ToUniversalTime(), TimeStart = timestart.ToUniversalTime(), Date = DateTime.Now.ToUniversalTime(), CountVisitors = count, OrganizerId = APIClient.Client.Id }); Response.Redirect("MyEvents"); } } }