示例#1
0
        protected void ThrowOnWrongEvent(IUserEvent e)
        {
            var id = new System.Text.StringBuilder();

            id.Append("[").Append("User|");

            var stateEntityId = this.UserId; // Aggregate Id
            var eventEntityId = e.UserEventId.UserId;

            if (stateEntityId != eventEntityId)
            {
                throw DomainError.Named("mutateWrongEntity", "Entity Id {0} in state but entity id {1} in event", stateEntityId, eventEntityId);
            }
            id.Append(stateEntityId).Append(",");

            id.Append("]");

            var stateVersion = this.Version;
            var eventVersion = e.UserEventId.Version;

            if (stateVersion != eventVersion)
            {
                throw OptimisticConcurrencyException.Create(stateVersion, eventVersion, id.ToString());
            }
        }
示例#2
0
文件: UserEvent.cs 项目: uwitec/wms-8
 public static void ThrowOnInconsistentEventIds(IUserEvent oe, IUserLoginEvent e)
 {
     if (!oe.UserEventId.UserId.Equals(e.UserLoginEventId.UserId))
     {
         throw DomainError.Named("inconsistentEventIds", "Outer Id UserId {0} but inner id UserId {1}",
                                 oe.UserEventId.UserId, e.UserLoginEventId.UserId);
     }
 }
示例#3
0
        public void AddEventWithEmail(IUserEvent userEvent, string email)
        {
            var filter = Builders <Models.User.SpotUser> .Filter.Where(u => u.Email == email);

            var update = Builders <Models.User.SpotUser> .Update.Push(SpotUserCollections.MyEvents,
                                                                      userEvent);

            MongoContext.Collection.UpdateOne(filter, update);
        }
示例#4
0
        public void AddEventWithId(IUserEvent userEvent, ObjectId id)
        {
            var filter = Builders <Models.User.SpotUser> .Filter.Where(u => u.Id == id);

            var update = Builders <Models.User.SpotUser> .Update.Push(SpotUserCollections.MyEvents,
                                                                      userEvent);

            MongoContext.Collection.UpdateOne(filter, update);
        }
示例#5
0
        private async void TTSCallback(IUserEvent userEvent)
        {
            IDictionary <string, object> payloadData = JsonConvert.DeserializeObject <Dictionary <string, object> >(userEvent.Data["Payload"].ToString());
            string text = Convert.ToString(payloadData.FirstOrDefault(x => x.Key == "Text").Value);

            if (!string.IsNullOrWhiteSpace(text))
            {
                await _misty.SpeakAsync(text, true, null);

                await _misty.DisplayTextAsync(text, null);
            }
        }
示例#6
0
 /// <summary>
 /// User RESTful event processor for Update command
 /// </summary>
 /// <param name="userEvent"></param>
 private async void ProcessUpdateEvent(IUserEvent userEvent)
 {
     try
     {
         IDictionary <string, object> payloadData = JsonConvert.DeserializeObject <Dictionary <string, object> >(userEvent.Data["Payload"].ToString());
         await ProcessAdjustableParameters(payloadData);
     }
     catch (Exception ex)
     {
         _misty.SkillLogger.Log("Unable to process payload in Update call.  Please check your payload configuration.", ex);
     }
 }
示例#7
0
        private IUpdateEvent UserActionHandler(ref EventArgs ea, IDictionary <string, object> globals)
        {
            IUserEvent ue    = (IUserEvent)ea;
            var        label = ue.GetEventType();

            ea = null;

            scheduler.Suspend();
            scheduler.Launch("#On" + label + "Event");

            return(null);
        }
示例#8
0
 public UserService(
     IUserRepository userRepository,
     IAuthorizationManager authorizationManager,
     EmailDomainValidatorService emailDomainValidatorService,
     IUserEmail emailSender,
     IUserEvent userEvent)
 {
     _userRepository              = userRepository;
     _authorizationManager        = authorizationManager;
     _emailDomainValidatorService = emailDomainValidatorService;
     _emailSender = emailSender;
     _userEvent   = userEvent;
 }
示例#9
0
        public async Task SendEventAsync(IUserEvent @event)
        {
            // own handling for created event as we don't want to broadcast the plain password
            if (@event is UserCreatedEvent created)
            {
                var messageContent = JsonConvert.SerializeObject(new { created.UserId, created.Password, created.Email });
                await passwordQueue.SendAsync(new BrokeredMessage(messageContent));

                // note side effect
                created.Password = null;
            }

            // .. send events topic
        }
示例#10
0
        /// <summary>
        /// User RESTful event processor for Speak command
        /// </summary>
        /// <param name="userEvent"></param>
        private void ProcessSpeakEvent(IUserEvent userEvent)
        {
            try
            {
                IDictionary <string, object> payloadData = JsonConvert.DeserializeObject <Dictionary <string, object> >(userEvent.Data["Payload"].ToString());

                KeyValuePair <string, object> textKVP = payloadData.FirstOrDefault(x => x.Key.ToLower().Trim() == "text");
                if (textKVP.Value != null)
                {
                    BroadcastDetails(Convert.ToString(textKVP.Value), _defaultVoice);
                }
            }
            catch (Exception ex)
            {
                _misty.SkillLogger.Log("Unable to process payload in Update call.  Please check your payload configuration.", ex);
            }
        }
        public void Add(IEvent anEvent, IUserEvent userEvent)
        {
            try
            {
                Lock();

                _eventRepository.Add(anEvent);
                _userRepository.AddEventForMany(userEvent, anEvent.Invited);
            }
            catch (Exception)
            {
                //TODO: Rollback logic
                throw new Exception("Failed to perform atomic action Add - " + Desc);
            }
            finally
            {
                Unlock();
            }
        }
示例#12
0
        public TimelineEventViewModel(ISpotUser user, IEvent myEvent, IUserEvent userEvent, ISpot spot,
                                      ILocation location, IBusiness business)
        {
            UserId     = user.Id;
            EventId    = myEvent.Id;
            SpotId     = spot.Id;
            LocationId = location.Id;
            BusinessId = business.Id;

            FirstName  = user.FirstName;
            EventTitle = myEvent.Title;
            EventStart = myEvent.StartDateTime.ToLocalTime().ToString(DateService.GetBasicDateTimeFormat);

            Joined = DateService.GetRelativeSpan(userEvent.Joined.ToUniversalTime()
                                                 .ToString(DateService.GetBasicDateTimeFormat));

            SpotName = spot.Name;
            Address  = location.Address;
            City     = location.City;
            Zip      = location.Zip;
            Country  = location.Country;

            BusinessName = business.Name;
        }
示例#13
0
 public void AddEventForMany(IUserEvent userEvent, IList <string> userIds)
 {
     userIds.ForEach(id => AddEventWithId(userEvent, ObjectId.Parse(id)));
 }
示例#14
0
 public void AddUserEvent(IUserEvent e)
 {
     _innerStateEvents.Add((UserStateCreatedOrMergePatchedOrDeletedDto)e);
 }
示例#15
0
 /// <summary>
 /// User RESTful event processor for Describe command
 /// </summary>
 /// <param name="userEvent"></param>
 private async void ProcessDescribeEvent(IUserEvent userEvent)
 {
     await Describe();
 }
示例#16
0
 public void AddEventForMany(IUserEvent userEvent, IList <ObjectId> userIds)
 {
     userIds.ForEach(id => AddEventWithId(userEvent, id));
 }
示例#17
0
 public void AddEventForManyWithEmail(IUserEvent userEvent, IList <string> userEmails)
 {
     userEmails.ForEach(email => AddEventWithEmail(userEvent, email));
 }
示例#18
0
 /// <summary>
 /// User RESTful event processor for Repeat command
 /// </summary>
 /// <param name="userEvent"></param>
 private async void ProcessRepeatEvent(IUserEvent userEvent)
 {
     await Repeat();
 }
示例#19
0
 /// <summary>
 /// User RESTful event processor for Translate command
 /// </summary>
 /// <param name="userEvent"></param>
 private void ProcessTranslateEvent(IUserEvent userEvent)
 {
     Translate();
 }
示例#20
0
 public virtual UserStateCreatedOrMergePatchedOrDeletedDto ToUserStateEventDto(IUserEvent stateEvent)
 {
     if (stateEvent.EventType == StateEventType.Created)
     {
         var e = (IUserStateCreated)stateEvent;
         return(ToUserStateCreatedDto(e));
     }
     else if (stateEvent.EventType == StateEventType.MergePatched)
     {
         var e = (IUserStateMergePatched)stateEvent;
         return(ToUserStateMergePatchedDto(e));
     }
     else if (stateEvent.EventType == StateEventType.Deleted)
     {
         var e = (IUserStateDeleted)stateEvent;
         return(ToUserStateDeletedDto(e));
     }
     throw DomainError.Named("invalidEventType", String.Format("Invalid state event type: {0}", stateEvent.EventType));
 }