Esempio n. 1
0
        public async Task <IActionResult> Create(CreateRegistrationModel model)
        {
            var evt = await _dbContext.Events.FindAsync(model.EventId);

            if (evt == null)
            {
                return(BadRequest("Invalid event"));
            }

            var session = await _dbContext.Sessions.FindAsync(model.SessionId);

            if (session == null || session.EventId != evt.Id)
            {
                return(BadRequest("Invalid session"));
            }

            var currentUser = await _userManager.GetUserAsync(User);

            try
            {
                var existing = await _dbContext.Registrations
                               .AnyAsync(x => x.EventId == model.EventId &&
                                         x.SessionId == model.SessionId &&
                                         x.UserId == currentUser.Id);

                if (existing)
                {
                    return(BadRequest("User is already registered for session"));
                }

                var hasSameSectionReg = await _dbContext.Registrations
                                        .AnyAsync(x => x.Session.SectionId == session.SectionId &&
                                                  x.UserId == currentUser.Id);

                if (hasSameSectionReg)
                {
                    return(BadRequest("User is already registered for session in the time section"));
                }

                var registration = new Registration
                {
                    Event     = evt,
                    Session   = session,
                    User      = currentUser,
                    CreatedOn = DateTime.UtcNow
                };

                _dbContext.Registrations.Add(registration);
                await _dbContext.SaveChangesAsync();

                var result = registration.ToModel();
                return(Created("", result));
            }
            catch (Exception ex)
            {
                _logger.LogError(2, ex, "Error creating registration", model.EventId, model.SessionId, model.UserId);

                return(StatusCode((int)HttpStatusCode.InternalServerError, "Error creating registration"));
            }
        }
        public IActionResult AddRegistration()
        {
            var model = new CreateRegistrationModel();

            ViewBag.Students = _studentService.GetAllStudent();
            ViewBag.Books    = _bookService.GetAllBook();
            return(View(model));
        }
 public IActionResult AddRegistration(CreateRegistrationModel model)
 {
     model.AddNew();
     return(RedirectToAction("Index"));
 }