public IActionResult Create(string eventId, int ticketsCount)
        {
            var @event = this.db.Events.FirstOrDefault(e => e.Id == eventId);

            @event.TotalTickets -= ticketsCount;

            this.db.Events.Update(@event);
            this.db.SaveChanges();

            if (@event.TotalTickets < ticketsCount)
            {
                var model = new OrderErrorViewModel
                {
                    AvailableTickets = @event.TotalTickets
                };

                return(this.View("Error", model));
            }

            var user = this.db.Users.FirstOrDefault(u => u.UserName == this.User.Identity.Name);

            var order = new Order
            {
                EventId      = eventId,
                CustomerId   = user.Id,
                OrderedOn    = DateTime.Now,
                TicketsCount = ticketsCount
            };

            this.db.Orders.Add(order);
            this.db.SaveChanges();

            return(this.RedirectToAction("MyEvents", "Events"));
        }
        public IActionResult Create(string eventId, int ticketsCount)
        {
            var @event = this.eventService.GetEventById(eventId);

            this.eventService.ReduceTotalTickets(@event, ticketsCount);

            if (!this.eventService.EventIsValid(@event, ticketsCount))
            {
                var model = new OrderErrorViewModel
                {
                    AvailableTickets = @event.TotalTickets
                };

                return(this.View("Error", model));
            }

            var user = this.userService.GetUserByUsername(this.User.Identity.Name);

            this.orderService.CreateOrder(eventId, user.Id, ticketsCount);

            return(this.RedirectToAction("MyEvents", "Events"));
        }