Esempio n. 1
0
        public async Task <ActionResult> PostEventUsers(
            [FromServices] DataContext context,
            [FromServices] EventRepository eventRepository,
            [FromServices] UserRepository userRepository,
            [FromBody] AddEventUserCommand command,
            int eventId)
        {
            try
            {
                var eventExists = await eventRepository.GetByIdAsync(eventId);

                if (eventExists == null)
                {
                    return(NotFound(new { message = "O Evento não foi localizado." }));
                }

                var userExists = userRepository.CheckExistsById(command.UserId);
                if (!userExists)
                {
                    return(NotFound(new { message = "O Integrante não foi localizado." }));
                }

                var userAlreadyAdded = eventRepository.CheckUserAlreadyAdded(eventId, command.UserId);
                if (userAlreadyAdded)
                {
                    return(Ok());
                }



                var eventUser = new EventUser
                {
                    EventId = eventId,
                    UserId  = command.UserId
                };
                eventRepository.AddEventUser(eventUser);


                await context.SaveChangesAsync();

                var list = await eventRepository.GetEventUsersAsync(eventId);

                return(Ok());
            }
            catch (Exception)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError,
                                  new { message = ErrorMessage.Internal }));
            }
        }