Exemplo n.º 1
0
        public async Task <ICommandResult> Handle(UpdateEventAdministratorCommand command)
        {
            command.IsValid();

            var administratorId = Guid.Parse(_httpContextAccessor.HttpContext.User.FindFirst(JwtRegisteredClaimNames.Sid).Value);

            var eventAdministrator = await _eventAdministratorRepository.GetById(command.Id);

            if (eventAdministrator == null)
            {
                AddNotification("id", "Administrador de eventos não encontrado");
                return(null);
            }

            if (!eventAdministrator.AdministratorId.Equals(administratorId))
            {
                AddNotification("message", "Você não tem permissão para excluir esse administrador de eventos");
                return(null);
            }

            eventAdministrator.Name = command.Name;

            AddNotifications(command.Notifications);
            AddNotifications(eventAdministrator.Notifications);

            if (!IsValid())
            {
                return(null);
            }

            _eventAdministratorRepository.Update(eventAdministrator);

            await _eventAdministratorRepository.Commit();

            return(new UpdateEventAdministratorCommandResult {
                Id = eventAdministrator.Id,
                Name = eventAdministrator.Name,
                Email = eventAdministrator.Email,
                AdminidstratorId = eventAdministrator.AdministratorId
            });
        }