Пример #1
0
        public async Task <IActionResult> Create(string evtSlug, EventUserListViewModel model)
        {
            var evt = await _dbContext.Events.SingleOrDefaultAsync(x => x.Slug == evtSlug);

            if (evt == null)
            {
                _logger.LogInformation("Event with slug '{slug}' not found", evtSlug);
                return(NotFound());
            }

            try
            {
                var user = await _userManager.FindByEmailAsync(model.NewUserEmail);

                if (user == null)
                {
                    ModelState.AddModelError("NewUserEmail", "User with this email does not exist.");
                    return(await Index(evtSlug));
                }

                var existingUser = await _dbContext.EventUsers.SingleOrDefaultAsync(x => x.EventId == evt.Id && x.UserId == user.Id);

                if (existingUser != null)
                {
                    ModelState.AddModelError("NewUserEmail", "User is alredy a member of this event.");
                    return(await Index(evtSlug));
                }

                var evtUser = new EventUser
                {
                    Event     = evt,
                    User      = user,
                    IsAdmin   = model.NewUserIsAdmin,
                    CreatedOn = DateTime.Now
                };

                _dbContext.EventUsers.Add(evtUser);
                await _dbContext.SaveChangesAsync();

                return(RedirectToAction(nameof(Index), new { slug = evtSlug }));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Error adding user '{user}' to event {id}", model.NewUserEmail, evt.Id);

                ModelState.AddModelError("", "Error adding user to event");
                return(await Index(evtSlug));
            }
        }
Пример #2
0
        public async Task <IActionResult> Index(string evtSlug)
        {
            var evt = await _dbContext.Events.SingleOrDefaultAsync(x => x.Slug == evtSlug);

            if (evt == null)
            {
                _logger.LogInformation("Event with slug '{slug}' not found", evtSlug);
                return(NotFound());
            }

            var evtUsers = await _dbContext.EventUsers.Include(x => x.User)
                           .Where(x => x.EventId == evt.Id)
                           .OrderBy(x => x.User.FullName)
                           .Select(x => x.ToEventUserModel())
                           .ToListAsync();

            var model = new EventUserListViewModel
            {
                Event = evt.ToEventModel(),
                Users = evtUsers
            };

            return(View("Index", model));
        }