обработка ошибок есть
This commit is contained in:
parent
9d302c88ae
commit
d2d0f04421
@ -44,20 +44,27 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public void Enter(string login, string password)
|
public IActionResult Enter(string login, string password)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password))
|
string returnUrl = HttpContext.Request.Headers["Referer"].ToString();
|
||||||
{
|
|
||||||
throw new Exception("Ââåäèòå ëîãèí è ïàðîëü");
|
if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password))
|
||||||
}
|
{
|
||||||
APIClient.Client = APIClient.GetRequest<OrganizerViewModel>($"api/Organizer/login?login={login}&password={password}");
|
return RedirectToAction("Error", new { errorMessage = "Ââåäèòå ëîãèí è ïàðîëü.", returnUrl });
|
||||||
if (APIClient.Client == null)
|
}
|
||||||
{
|
|
||||||
throw new Exception("Íåâåðíûé ëîãèí/ïàðîëü");
|
APIClient.Client = APIClient.GetRequest<OrganizerViewModel>($"api/Organizer/login?login={login}&password={password}");
|
||||||
}
|
|
||||||
Response.Redirect("Index");
|
if (APIClient.Client == null)
|
||||||
}
|
{
|
||||||
[HttpGet]
|
return RedirectToAction("Error", new { errorMessage = "Íåâåðíûé ëîãèí/ïàðîëü.", returnUrl });
|
||||||
|
}
|
||||||
|
|
||||||
|
return RedirectToAction("Index");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
public IActionResult Privacy()
|
public IActionResult Privacy()
|
||||||
{
|
{
|
||||||
if (APIClient.Client == null)
|
if (APIClient.Client == null)
|
||||||
@ -123,34 +130,34 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
/// Ìåòîäû äëÿ îðãàíèçàòîðà
|
/// Ìåòîäû äëÿ îðãàíèçàòîðà
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[HttpGet]
|
|
||||||
public IActionResult Register()
|
|
||||||
{
|
|
||||||
return View();
|
|
||||||
}
|
|
||||||
public IActionResult Logout()
|
public IActionResult Logout()
|
||||||
{
|
{
|
||||||
APIClient.Client = null;
|
APIClient.Client = null;
|
||||||
return Redirect("~/Home/Enter");
|
return Redirect("~/Home/Enter");
|
||||||
}
|
}
|
||||||
|
[HttpGet]
|
||||||
public static string GenerateRandomString()
|
public IActionResult Register()
|
||||||
{
|
{
|
||||||
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
return View();
|
||||||
return new string(Enumerable.Repeat(chars, 6)
|
|
||||||
.Select(s => s[_random.Next(s.Length)]).ToArray());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public void Register(string login, string password, string surname, string name, string lastname, string organizationName, string phone, string code)
|
public IActionResult Register(string login, string password, string surname, string name, string lastname, string organizationName, string phone, string code)
|
||||||
{
|
{
|
||||||
//var confirmationCode = GenerateRandomString();
|
// Ïîëó÷àåì URL ñòðàíèöû, ñ êîòîðîé ïðèøëè
|
||||||
//APIClient.PostRequest("api/main/SendToMail", new MailSendInfoBindingModel
|
string returnUrl = HttpContext.Request.Headers["Referer"].ToString();
|
||||||
//{
|
|
||||||
// MailAddress = login,
|
// Ïðîâåðÿåì, ñóùåñòâóåò ëè ïîëüçîâàòåëü ñ òàêèì ëîãèíîì
|
||||||
// Subject = "Êîä äëÿ ïîäòâåðæäåíèÿ ðåãèñòðàöèè",
|
var existingUser = APIClient.GetRequest<OrganizerViewModel>($"api/Organizer/GetOrganizer?login={login}");
|
||||||
// Text = $"Âàø êîä äëÿ ïîäòâåðæäåíèÿ ðåãèñòðàöèè: {confirmationCode}"
|
|
||||||
//});
|
// Åñëè ïîëüçîâàòåëü ñóùåñòâóåò, ïåðåíàïðàâëÿåì íà ñòðàíèöó îøèáêè
|
||||||
|
if (existingUser != null)
|
||||||
|
{
|
||||||
|
return RedirectToAction("Error", new { errorMessage = "Ïîëüçîâàòåëü ñ òàêèì email óæå ñóùåñòâóåò.", returnUrl });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Åñëè ïîëüçîâàòåëÿ íåò, ïðîäîëæàåì ñ ðåãèñòðàöèåé
|
||||||
APIClient.PostRequest("api/Organizer/Register", new OrganizerBindingModel
|
APIClient.PostRequest("api/Organizer/Register", new OrganizerBindingModel
|
||||||
{
|
{
|
||||||
Name = name,
|
Name = name,
|
||||||
@ -161,27 +168,11 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
Email = login,
|
Email = login,
|
||||||
Password = password
|
Password = password
|
||||||
});
|
});
|
||||||
Response.Redirect("Enter");
|
|
||||||
return;
|
return RedirectToAction("Enter"); // Ïåðåíàïðàâëåíèå íà ñòðàíèöó âõîäà
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
|
||||||
public void CheckCode(string confirmationCode, string login, string password, string surname, string name, string lastname, string organizationName, string phone)
|
|
||||||
{
|
|
||||||
// Ïîëó÷àåì ñîõðàí¸ííûé êîä èç ñåññèè
|
|
||||||
var storedCode = HttpContext.Session.GetString("ConfirmationCode");
|
|
||||||
|
|
||||||
if (storedCode == confirmationCode)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Îáðàáîòêà íåïðàâèëüíîãî êîäà, íàïðèìåð, îøèáêà 400
|
|
||||||
Response.StatusCode = 400;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Óïðàâëåíèå ìåðîïðèÿòèÿìè
|
/// Óïðàâëåíèå ìåðîïðèÿòèÿìè
|
||||||
@ -242,15 +233,23 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[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)
|
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)
|
string returnUrl = HttpContext.Request.Headers["Referer"].ToString();
|
||||||
|
|
||||||
|
if (timestart < DateTime.UtcNow)
|
||||||
{
|
{
|
||||||
throw new Exception("Âû êàê ñþäà ïîïàëè? Ñþäà âõîä òîëüêî àâòîðèçîâàííûì");
|
return RedirectToAction("Error", new { errorMessage = "Äàòà íà÷àëà íå ìîæåò áûòü â ïðîøëîì.", returnUrl });
|
||||||
}
|
}
|
||||||
|
|
||||||
string eventId = Guid.NewGuid().ToString(); // Ãåíåðàöèÿ óíèêàëüíîãî èäåíòèôèêàòîðà äëÿ ìåðîïðèÿòèÿ
|
if (timestart >= timeend)
|
||||||
string registrationLink = $"https://localhost:7186/registrationonevent?EventId={eventId}"; // Ôîðìèðîâàíèå ññûëêè íà ðåãèñòðàöèþ
|
{
|
||||||
|
return RedirectToAction("Error", new { errorMessage = "Äàòà íà÷àëà íå ìîæåò áûòü ïîçæå èëè ðàâíà äàòå îêîí÷àíèÿ.", returnUrl });
|
||||||
|
}
|
||||||
|
|
||||||
|
string eventId = Guid.NewGuid().ToString();
|
||||||
|
string registrationLink = $"https://localhost:7186/registrationonevent?EventId={eventId}";
|
||||||
|
|
||||||
|
|
||||||
APIClient.PostRequest("api/main/createevent", new EventBindingModel
|
APIClient.PostRequest("api/main/createevent", new EventBindingModel
|
||||||
{
|
{
|
||||||
@ -264,27 +263,23 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
ContactEmail = email,
|
ContactEmail = email,
|
||||||
TimeEnd = timeend.ToUniversalTime(),
|
TimeEnd = timeend.ToUniversalTime(),
|
||||||
TimeStart = timestart.ToUniversalTime(),
|
TimeStart = timestart.ToUniversalTime(),
|
||||||
Date = DateTime.Now.ToUniversalTime(),
|
Date = DateTime.UtcNow, // Èñïîëüçóéòå UtcNow äëÿ òåêóùåé äàòû
|
||||||
CountVisitors = count,
|
CountVisitors = count,
|
||||||
FreePlaces = count,
|
FreePlaces = count,
|
||||||
OrganizerId = APIClient.Client.Id,
|
OrganizerId = APIClient.Client.Id,
|
||||||
Link = registrationLink
|
Link = registrationLink
|
||||||
});
|
});
|
||||||
Response.Redirect("MyEvents");
|
|
||||||
|
return RedirectToAction("MyEvents");
|
||||||
}
|
}
|
||||||
|
|
||||||
public IActionResult DeleteEvent(int id)
|
public IActionResult DeleteEvent(int id)
|
||||||
{
|
{
|
||||||
// Ïðîâåðêà íà àâòîðèçàöèþ ïîëüçîâàòåëÿ
|
|
||||||
if (APIClient.Client == null)
|
if (APIClient.Client == null)
|
||||||
{
|
{
|
||||||
return Redirect("~/Home/Enter");
|
return Redirect("~/Home/Enter");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Âûïîëíåíèå çàïðîñà íà óäàëåíèå ìåðîïðèÿòèÿ
|
|
||||||
APIClient.PostRequest($"api/main/DeleteEvent", new EventBindingModel { Id = id });
|
APIClient.PostRequest($"api/main/DeleteEvent", new EventBindingModel { Id = id });
|
||||||
|
|
||||||
// Ïåðåíàïðàâëåíèå îáðàòíî íà ñòðàíèöó ñ ìåðîïðèÿòèÿìè
|
|
||||||
return RedirectToAction("MyEvents");
|
return RedirectToAction("MyEvents");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -300,7 +295,7 @@ 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 IActionResult 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)
|
||||||
{
|
{
|
||||||
@ -312,6 +307,19 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
int countRegisterPlace = existingEvent.CountVisitors - existingEvent.FreePlaces;
|
int countRegisterPlace = existingEvent.CountVisitors - existingEvent.FreePlaces;
|
||||||
var visitorList = APIClient.GetRequest<List<VisitorViewModel>>($"api/main/GetVisitorList?EventId={id}");
|
var visitorList = APIClient.GetRequest<List<VisitorViewModel>>($"api/main/GetVisitorList?EventId={id}");
|
||||||
string msg = "";
|
string msg = "";
|
||||||
|
|
||||||
|
string returnUrl = HttpContext.Request.Headers["Referer"].ToString();
|
||||||
|
|
||||||
|
if (timestart < DateTime.UtcNow)
|
||||||
|
{
|
||||||
|
return RedirectToAction("Error", new { errorMessage = "Äàòà íà÷àëà íå ìîæåò áûòü â ïðîøëîì.", returnUrl });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (timestart >= timeend)
|
||||||
|
{
|
||||||
|
return RedirectToAction("Error", new { errorMessage = "Äàòà íà÷àëà íå ìîæåò áûòü ïîçæå èëè ðàâíà äàòå îêîí÷àíèÿ.", returnUrl });
|
||||||
|
}
|
||||||
|
|
||||||
if (existingEvent.TimeStart != timestart && existingEvent.Address != address)
|
if (existingEvent.TimeStart != timestart && existingEvent.Address != address)
|
||||||
{
|
{
|
||||||
msg = $"Âíèìàíèå! Èçìåíèëàñü äàòà íà÷àëà è àäðåññ ìåðîïðèÿòèÿ {existingEvent.Name}. Ìåðîïðèÿòèå íà÷íåòñÿ: {timestart} è ïðîéäåò ïî àäðåññó {address}";
|
msg = $"Âíèìàíèå! Èçìåíèëàñü äàòà íà÷àëà è àäðåññ ìåðîïðèÿòèÿ {existingEvent.Name}. Ìåðîïðèÿòèå íà÷íåòñÿ: {timestart} è ïðîéäåò ïî àäðåññó {address}";
|
||||||
@ -324,12 +332,6 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
else if(existingEvent.TimeStart != timestart && existingEvent.Address == address)
|
else if(existingEvent.TimeStart != timestart && existingEvent.Address == address)
|
||||||
{
|
{
|
||||||
msg = $"Âíèìàíèå! Èçìåíèëîñü âðåìÿ íà÷àëà ìåðîïðèÿòèÿ ìåðîïðèÿòèÿ {existingEvent.Name}. Ìåðîïðèÿòèå íà÷íåòñÿ: {timestart}";
|
msg = $"Âíèìàíèå! Èçìåíèëîñü âðåìÿ íà÷àëà ìåðîïðèÿòèÿ ìåðîïðèÿòèÿ {existingEvent.Name}. Ìåðîïðèÿòèå íà÷íåòñÿ: {timestart}";
|
||||||
APIClient.PostRequest("api/main/SendToMail", new MailSendInfoBindingModel
|
|
||||||
{
|
|
||||||
MailAddress = email,
|
|
||||||
Subject = "Èçìåíåíèÿ â ìåðîïðèÿòèè",
|
|
||||||
Text = msg
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
if (msg != "")
|
if (msg != "")
|
||||||
{
|
{
|
||||||
@ -364,7 +366,7 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
FreePlaces = count - countRegisterPlace,
|
FreePlaces = count - countRegisterPlace,
|
||||||
OrganizerId = APIClient.Client.Id
|
OrganizerId = APIClient.Client.Id
|
||||||
});
|
});
|
||||||
Response.Redirect("/Home/MyEvents");
|
return RedirectToAction("MyEvents");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -388,13 +390,16 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
{
|
{
|
||||||
// Ïîëó÷èòå âñåõ ïîñåòèòåëåé
|
// Ïîëó÷èòå âñåõ ïîñåòèòåëåé
|
||||||
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>();
|
||||||
|
|
||||||
|
// Îáðàáîòêà ïîèñêà
|
||||||
if (action == "search" && !string.IsNullOrEmpty(searchTerm))
|
if (action == "search" && !string.IsNullOrEmpty(searchTerm))
|
||||||
{
|
{
|
||||||
visitors = visitors.Where(v => v.Name.Contains(searchTerm, StringComparison.OrdinalIgnoreCase) ||
|
visitorsFiltered = visitors.Where(v => v.Name.Contains(searchTerm, StringComparison.OrdinalIgnoreCase) ||
|
||||||
v.Email.Contains(searchTerm, StringComparison.OrdinalIgnoreCase)).ToList();
|
v.Email.Contains(searchTerm, StringComparison.OrdinalIgnoreCase)).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Îáðàáîòêà ñîõðàíåíèÿ ñòàòóñîâ
|
||||||
if (action == "save")
|
if (action == "save")
|
||||||
{
|
{
|
||||||
foreach (var visitor in visitors)
|
foreach (var visitor in visitors)
|
||||||
@ -407,13 +412,23 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Âûñâå÷èâàíèå ñòàòóñà ñîõðàíåíèÿ
|
||||||
|
TempData["SuccessMessage"] = "Ñòàòóñû ïîñåòèòåëåé óñïåøíî îáíîâëåíû.";
|
||||||
|
|
||||||
// Ïîñëå ñîõðàíåíèÿ ïåðåíàïðàâëÿåì îáðàòíî íà ýòîò æå ìåòîä ñ id
|
// Ïîñëå ñîõðàíåíèÿ ïåðåíàïðàâëÿåì îáðàòíî íà ýòîò æå ìåòîä ñ id
|
||||||
return RedirectToAction("Visitors", new { id });
|
return RedirectToAction("Visitors", new { id });
|
||||||
}
|
}
|
||||||
|
|
||||||
return View(visitors); // Âåðíóòü ïðåäñòàâëåíèå ñ îòôèëüòðîâàííûì ñïèñêîì
|
// Åñëè íè÷åãî íå íàéäåíî, âåðíåì âñ¸
|
||||||
|
if (visitorsFiltered.Any())
|
||||||
|
{
|
||||||
|
return View(visitorsFiltered);
|
||||||
|
}
|
||||||
|
|
||||||
|
return View(visitors);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public IActionResult DeleteVisitor(int id)
|
public IActionResult DeleteVisitor(int id)
|
||||||
{
|
{
|
||||||
if (APIClient.Client == null)
|
if (APIClient.Client == null)
|
||||||
@ -459,11 +474,16 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task RegistrationOnEventAsync(int id, string name, string phone, string email, DateTime dayBirth)
|
public async Task<IActionResult> RegistrationOnEventAsync(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}");
|
||||||
|
string returnUrl = HttpContext.Request.Headers["Referer"].ToString();
|
||||||
|
|
||||||
if (eventDetails != null && eventDetails.FreePlaces > 0)
|
if (dayBirth >= DateTime.Now)
|
||||||
|
{
|
||||||
|
return RedirectToAction("Error", new { errorMessage = "Íåâåðíàÿ äàòà ðîæäåíèÿ.", returnUrl });
|
||||||
|
}
|
||||||
|
if (eventDetails != null && eventDetails.FreePlaces > 0)
|
||||||
{
|
{
|
||||||
int updatedFreePlaces = eventDetails.FreePlaces - 1;
|
int updatedFreePlaces = eventDetails.FreePlaces - 1;
|
||||||
var visitorId = await APIClient.PostRequestAsync("api/main/registrationonevent", new VisitorBindingModel
|
var visitorId = await APIClient.PostRequestAsync("api/main/registrationonevent", new VisitorBindingModel
|
||||||
@ -505,11 +525,11 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
Subject = "Ðåãèñòðàöèÿ íà ìåðîïðèÿòèå",
|
Subject = "Ðåãèñòðàöèÿ íà ìåðîïðèÿòèå",
|
||||||
Text = "Âû çàðåãåñòðèðîâàíû íà ìåðîïðèÿòèå " + eventDetails.Name + ", êîòîðîå ïðîéäåò " + eventDetails.TimeStart + ". Ïî àäðåñó: " + eventDetails.Address + " ã. " + eventDetails.City + ".\n" + "×òîáû îòìåíèòü ðåãèñòðàöèþ, íàæìèòå íà ñëåäóþùóþ ññûëêó:" + cancelLink + ".\n" + "Ïî âñåì âîïðîñàì ìîæíî îáðàùàòüñÿ ïî òåëåôîíó: " + eventDetails.ContactPhone + " èëè ïî ïî÷òå: " + eventDetails.ContactEmail + ".\n" + "Áóäåì æäàòü Âàñ íà íàøèõ ìåðîïðèÿòèÿõ!"
|
Text = "Âû çàðåãåñòðèðîâàíû íà ìåðîïðèÿòèå " + eventDetails.Name + ", êîòîðîå ïðîéäåò " + eventDetails.TimeStart + ". Ïî àäðåñó: " + eventDetails.Address + " ã. " + eventDetails.City + ".\n" + "×òîáû îòìåíèòü ðåãèñòðàöèþ, íàæìèòå íà ñëåäóþùóþ ññûëêó:" + cancelLink + ".\n" + "Ïî âñåì âîïðîñàì ìîæíî îáðàùàòüñÿ ïî òåëåôîíó: " + eventDetails.ContactPhone + " èëè ïî ïî÷òå: " + eventDetails.ContactEmail + ".\n" + "Áóäåì æäàòü Âàñ íà íàøèõ ìåðîïðèÿòèÿõ!"
|
||||||
});
|
});
|
||||||
Response.Redirect("/Home/ResultRegistration");
|
return Redirect("/Home/ResultRegistration");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Response.Redirect("MyEvents");
|
return Redirect("MyEvents");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -569,14 +589,15 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public void ViewEvent(int id, string subject, string message)
|
public IActionResult ViewEvent(int id, string subject, string message)
|
||||||
{
|
{
|
||||||
if (APIClient.Client == null)
|
if (APIClient.Client == null)
|
||||||
{
|
{
|
||||||
throw new Exception("Íåîáõîäèìà àâòîðèçàöèÿ");
|
throw new Exception("Íåîáõîäèìà àâòîðèçàöèÿ");
|
||||||
}
|
}
|
||||||
var visitorList = APIClient.GetRequest<List<VisitorViewModel>>($"api/main/GetVisitorList?EventId={id}");
|
var visitorList = APIClient.GetRequest<List<VisitorViewModel>>($"api/main/GetVisitorList?EventId={id}");
|
||||||
if (visitorList != null)
|
string returnUrl = HttpContext.Request.Headers["Referer"].ToString();
|
||||||
|
if (visitorList.Count != 0)
|
||||||
{
|
{
|
||||||
foreach (var visitor in visitorList)
|
foreach (var visitor in visitorList)
|
||||||
{
|
{
|
||||||
@ -588,6 +609,10 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return RedirectToAction("Error", new { errorMessage = "Åùå íåò çàðåãèñòðèðîâàííûõ ïîëüçîâàòåëåé", returnUrl });
|
||||||
|
}
|
||||||
APIClient.PostRequest("api/main/CreateMessage", new SentMessageBindingModel
|
APIClient.PostRequest("api/main/CreateMessage", new SentMessageBindingModel
|
||||||
{
|
{
|
||||||
Subject = subject,
|
Subject = subject,
|
||||||
@ -596,7 +621,7 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
OrganizerId = APIClient.Client.Id,
|
OrganizerId = APIClient.Client.Id,
|
||||||
SentDate = DateTime.Now.ToUniversalTime()
|
SentDate = DateTime.Now.ToUniversalTime()
|
||||||
});
|
});
|
||||||
Response.Redirect($"/Home/ViewEvent/{id}");
|
return Redirect($"/Home/ViewEvent/{id}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public IActionResult MessageHistory(int id)
|
public IActionResult MessageHistory(int id)
|
||||||
@ -616,7 +641,14 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public IActionResult GetWordFile()
|
public IActionResult GetWordFile()
|
||||||
{
|
{
|
||||||
return new PhysicalFileResult("F:\\EventVisitor\\wordfile.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
var filePath = "F:\\EventVisitor\\wordfile.docx";
|
||||||
|
|
||||||
|
if (!System.IO.File.Exists(filePath))
|
||||||
|
{
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
|
||||||
|
return new PhysicalFileResult(filePath, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -626,27 +658,31 @@ namespace EventVisitorClientApp.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//[HttpPost]
|
[HttpPost]
|
||||||
//public void ReportWord(int[] Ids, int id)
|
public IActionResult ReportWord(int id)
|
||||||
//{
|
{
|
||||||
// if (APIClient.Client == null)
|
if (APIClient.Client == null)
|
||||||
// {
|
{
|
||||||
// throw new Exception("Âû êàê ñóäà ïîïàëè? Ñóäà âõîä òîëüêî àâòîðèçîâàííûì");
|
throw new Exception("Âû êàê ñóäà ïîïàëè? Ñóäà âõîä òîëüêî àâòîðèçîâàííûì");
|
||||||
// }
|
}
|
||||||
|
|
||||||
// List<VisitorViewModel> registeredVisitorsIds = APIClient.GetRequest<List<VisitorViewModel>>($"api/main/GetVisitorList?EventId={id}");
|
APIClient.PostRequest("api/main/createreporttowordfile", new ReportVisitorsBindingModel
|
||||||
|
{
|
||||||
|
EventId = id,
|
||||||
|
FileName = "F:\\EventVisitor\\wordfile.docx"
|
||||||
|
});
|
||||||
|
return RedirectToAction("GetWordFile");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
|
||||||
|
public IActionResult Error(string errorMessage, string returnUrl)
|
||||||
|
{
|
||||||
|
ViewBag.ErrorMessage = errorMessage ?? "Ïðîèçîøëà íåèçâåñòíàÿ îøèáêà."; // Äåôîëòíîå ñîîáùåíèå
|
||||||
|
ViewBag.ReturnUrl = returnUrl; // Ñîõðàíÿåì returnUrl
|
||||||
|
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
|
||||||
|
}
|
||||||
|
|
||||||
// foreach (var item in Ids)
|
|
||||||
// {
|
|
||||||
// res.Add(item);
|
|
||||||
// }
|
|
||||||
// APIClient.PostRequest("api/main/createreporttowordfile", new ReportVisitorsBindingModel
|
|
||||||
// {
|
|
||||||
// Ids = res,
|
|
||||||
// FileName = "F:\\EventVisitor\\wordfile.docx"
|
|
||||||
// });
|
|
||||||
// Response.Redirect("GetWordFile");
|
|
||||||
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
@{
|
@{
|
||||||
Layout = null;
|
Layout = null;
|
||||||
ViewData["Title"] = "Успешная регистрация";
|
ViewData["Title"] = "Отмена регистрации";
|
||||||
}
|
}
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
@ -16,7 +16,7 @@
|
|||||||
<div class="container mt-5">
|
<div class="container mt-5">
|
||||||
<div class="row align-items-center justify-content-center">
|
<div class="row align-items-center justify-content-center">
|
||||||
<div class="col-md-6 text-center">
|
<div class="col-md-6 text-center">
|
||||||
<h1 class="display-4">Вы успещно отменили регистрацию на мероприятие!</h1>
|
<h1 class="display-4">Вы успешно отменили регистрацию на мероприятие!</h1>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<div class="row mb-3">
|
<div class="row mb-3">
|
||||||
<label for="name" class="col-sm-4 col-form-label">Название мероприятия:</label>
|
<label for="name" class="col-sm-4 col-form-label">Название мероприятия:</label>
|
||||||
<div class="col-sm-8">
|
<div class="col-sm-8">
|
||||||
<input type="text" class="form-control" id="name" name="name" required>
|
<input type="text" class="form-control" id="name" name="name" required>
|
||||||
<div class="invalid-feedback">Пожалуйста, введите название мероприятия.</div>
|
<div class="invalid-feedback">Пожалуйста, введите название мероприятия.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -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">Удалить</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>
|
||||||
|
@ -62,26 +62,22 @@
|
|||||||
|
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<label for="InputEmail" class="form-label" style="font-size: 24px">Введите e-mail</label>
|
<label for="InputEmail" class="form-label" style="font-size: 24px">Введите e-mail</label>
|
||||||
<input type="text" 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">
|
<div class="mb-4">
|
||||||
<label for="InputI" class="form-label" style="font-size: 24px">Введите дату рождения</label>
|
<label for="dayBirth" class="form-label" style="font-size: 24px">Введите дату рождения</label>
|
||||||
<input type="datetime-local" class="form-control" id="dayBirth" name="dayBirth" required>
|
<input type="datetime-local" class="form-control" id="dayBirth" name="dayBirth" required>
|
||||||
<div class="invalid-feedback">Пожалуйста, введите дату рождения.</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mb-4">
|
<div class="mb-4">
|
||||||
<button type="submit" class="btn btn-dark btn-lg w-100" onclick="submitForm()">Зарегистрироваться</button>
|
<button type="submit" class="btn btn-dark btn-lg w-100">Зарегистрироваться</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
@ -71,7 +71,10 @@
|
|||||||
<button class="btn btn-secondary btn-block mb-4" disabled>Мероприятие уже прошло</button>
|
<button class="btn btn-secondary btn-block mb-4" disabled>Мероприятие уже прошло</button>
|
||||||
}
|
}
|
||||||
<a class="btn btn-dark btn-block mb-4" asp-action="Visitors" asp-route-id="@Model.Id">Посетители</a>
|
<a class="btn btn-dark btn-block mb-4" asp-action="Visitors" asp-route-id="@Model.Id">Посетители</a>
|
||||||
<a class="btn btn-dark btn-block mb-4" asp-action="ReportWord" asp-route-id="@Model.Id">Отчет Word о посетителях </a>
|
<form method="post" asp-action="ReportWord" asp-controller="Home">
|
||||||
|
<input type="hidden" name="id" value="@Model.Id" />
|
||||||
|
<button type="submit" class="btn btn-black btn-block" style="margin-bottom: 20px;">Отчет Word о посетителях</button>
|
||||||
|
</form>
|
||||||
<a class="btn btn-dark btn-block mb-4" asp-action="ReportExcel" asp-route-id="@Model.Id">Отчет Excel о посетителях </a>
|
<a class="btn btn-dark btn-block mb-4" asp-action="ReportExcel" asp-route-id="@Model.Id">Отчет Excel о посетителях </a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -9,8 +9,11 @@
|
|||||||
<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" /> <!-- Предполагается, что EventId доступен в модели-->
|
<input type="hidden" name="id" value="@Model.FirstOrDefault()?.EventId" />
|
||||||
|
|
||||||
<div class="form-group row mt-4">
|
<div class="form-group row mt-4">
|
||||||
<div class="col-md-10">
|
<div class="col-md-10">
|
||||||
@ -52,7 +55,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a class="btn btn-danger btn-sm" asp-action="DeleteVisitor" asp-route-id="@item.Id">Удалить</a>
|
<a class="btn btn-danger btn-sm" asp-action="DeleteVisitor" asp-route-id="@item.Id" onclick="return confirm('Вы уверены, что хотите удалить мероприятие?');">Удалить</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
}
|
}
|
||||||
|
@ -1,25 +1,39 @@
|
|||||||
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
|
@model EventVisitorClientApp.Models.ErrorViewModel
|
||||||
|
|
||||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
|
<html>
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
|
<head>
|
||||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
|
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
|
||||||
<div id="errorModal" class="modal" tabindex="-1" role="dialog">
|
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
|
||||||
<div class="modal-dialog" role="document">
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
|
||||||
<div class="modal-content">
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
|
||||||
<div class="modal-header">
|
</head>
|
||||||
<h5 class="modal-title">Ошибка</h5>
|
<body>
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
<div id="errorModal" class="modal" tabindex="-1" role="dialog">
|
||||||
<span aria-hidden="true">×</span>
|
<div class="modal-dialog" role="document">
|
||||||
</button>
|
<div class="modal-content">
|
||||||
</div>
|
<div class="modal-header">
|
||||||
<div class="modal-body">
|
<h5 class="modal-title">Ошибка</h5>
|
||||||
<p>@ViewBag.ErrorMessage</p>
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
</div>
|
<span aria-hidden="true">×</span>
|
||||||
<div class="modal-footer">
|
</button>
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Закрыть</button>
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<p>@ViewBag.ErrorMessage</p>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-secondary" onclick="window.location.href='@ViewBag.ReturnUrl'">Вернуться</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
and restarting the app.
|
<script>
|
||||||
</p>
|
$(document).ready(function () {
|
||||||
|
var errorMessage = '@ViewBag.ErrorMessage';
|
||||||
|
if (errorMessage) {
|
||||||
|
$('#errorModal').modal('show'); // Показываем модальное окно
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using System;
|
using EventVisitorLogic.ViewModels;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@ -10,6 +11,6 @@ namespace EventVisitorLogic.BindingModels
|
|||||||
{
|
{
|
||||||
public string FileName { get; set; } = string.Empty;
|
public string FileName { get; set; } = string.Empty;
|
||||||
public int EventId { get; set; }
|
public int EventId { get; set; }
|
||||||
public List<int>? Ids { get; set; }
|
public List<VisitorViewModel> Visitors { get; set; } = new();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ namespace EventVisitorLogic.Logic
|
|||||||
{
|
{
|
||||||
List<OrganizerViewModel>? ReadList(OrganizerBindingModel? model);
|
List<OrganizerViewModel>? ReadList(OrganizerBindingModel? model);
|
||||||
OrganizerViewModel? ReadElement(OrganizerBindingModel model);
|
OrganizerViewModel? ReadElement(OrganizerBindingModel model);
|
||||||
|
OrganizerViewModel? ReadElementEmail(OrganizerBindingModel model);
|
||||||
bool Create(OrganizerBindingModel model);
|
bool Create(OrganizerBindingModel model);
|
||||||
bool Update(OrganizerBindingModel model);
|
bool Update(OrganizerBindingModel model);
|
||||||
bool Delete(OrganizerBindingModel model);
|
bool Delete(OrganizerBindingModel model);
|
||||||
|
@ -78,6 +78,21 @@ namespace EventVisitorLogic.Logic
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public OrganizerViewModel? ReadElementEmail(OrganizerBindingModel model)
|
||||||
|
{
|
||||||
|
if (model == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(model));
|
||||||
|
}
|
||||||
|
|
||||||
|
var element = _organizerStorage.GetElement(model);
|
||||||
|
if (element != null)
|
||||||
|
{
|
||||||
|
return element;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public List<OrganizerViewModel>? ReadList(OrganizerBindingModel? model)
|
public List<OrganizerViewModel>? ReadList(OrganizerBindingModel? model)
|
||||||
{
|
{
|
||||||
//var list = model == null ? _organizerStorage.GetFullList() : _organizerStorage.GetFilteredList(model);
|
//var list = model == null ? _organizerStorage.GetFullList() : _organizerStorage.GetFilteredList(model);
|
||||||
|
@ -75,7 +75,7 @@ namespace EventVisitorLogic.OfficePackage.Implements
|
|||||||
_wordDocument = WordprocessingDocument.Create(info.FileName,
|
_wordDocument = WordprocessingDocument.Create(info.FileName,
|
||||||
WordprocessingDocumentType.Document);
|
WordprocessingDocumentType.Document);
|
||||||
MainDocumentPart mainPart = _wordDocument.AddMainDocumentPart();
|
MainDocumentPart mainPart = _wordDocument.AddMainDocumentPart();
|
||||||
mainPart.Document = new DocumentFormat.OpenXml.Wordprocessing.Document();
|
mainPart.Document = new Document();
|
||||||
_docBody = mainPart.Document.AppendChild(new Body());
|
_docBody = mainPart.Document.AppendChild(new Body());
|
||||||
}
|
}
|
||||||
protected override void CreateParagraph(WordParagraph paragraph)
|
protected override void CreateParagraph(WordParagraph paragraph)
|
||||||
|
@ -35,7 +35,23 @@ namespace EventVisitorRestApi.Controllers
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public OrganizerViewModel? GetOrganizer(string login)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return _logic.ReadElementEmail(new OrganizerBindingModel
|
||||||
|
{
|
||||||
|
Email = login
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public void Register(OrganizerBindingModel model)
|
public void Register(OrganizerBindingModel model)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user