Ejemplo n.º 1
0
        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"));
        }
Ejemplo n.º 2
0
        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));
        }