public async Task <IActionResult> Create(OrdersViewModel model) { if (ModelState.IsValid) { var user = await this.userManager.FindByNameAsync(this.User.Identity.Name); var evt = this.eventService.FindById(model.EventId); var order = new Order { Event = evt, Customer = user, TicketCount = model.Tickets }; if (evt.TicketsLeft - model.Tickets < 0) { var myError = new MyErrorViewModel { ErrorMessage = $"Only {evt.TicketsLeft} tickets left for {evt.Name}" }; return(RedirectToAction("AllEvents", "Events", myError)); } evt.TicketsLeft -= model.Tickets; this.ordersService.AddOrder(order); return(RedirectToAction("MyEvents", "Events")); } return(RedirectToAction("AllEvents", "Events")); }
public async Task <IActionResult> AllEvents(MyErrorViewModel myError, int?page) { if (this.User.IsInRole("Admin")) { var allEvents = this.eventService.GetAllEvents().ToList(); var adminModel = new AllEventsViewModel { AllEvents = allEvents }; _logger.LogDebug((int)LoggingEvents.CONTROLLER_ACCESSED, "Show all events."); return(View("AllEventsAdmin", adminModel)); } var user = await this.userManager.FindByNameAsync(this.User.Identity.Name); var events = this.eventService.GetAllEvents().Select(o => new OrderViewModel { Customer = user, EventId = o.Id.ToString(), Name = o.Name, Start = o.Start, End = o.End, Tickets = 0, TicketsLeft = o.TicketsLeft }).ToList(); var nextPage = page ?? 1; var recordsPerPage = 3; var pagedViewModels = events.ToPagedList(nextPage, recordsPerPage); var model = new OrdersViewModel { Orders = pagedViewModels, OrderError = myError.ErrorMessage }; _logger.LogDebug((int)LoggingEvents.CONTROLLER_ACCESSED, "Show all events."); ViewData["CurrentPage"] = page ?? 1; ViewData["RecordsPerPage"] = recordsPerPage; ViewData["MyErrorOcurred"] = myError.ErrorMessage; return(View(model)); }