Ejemplo n.º 1
0
        /// <summary>
        /// This method will handle updates for a room
        /// </summary>
        /// <param name="roomChangeMessage">Room change message</param>
        private void Handle(RoomChangeMessage roomChangeMessage)
        {
            Logger.LogInfo("Message received room Business Id: {0}", null, roomChangeMessage.ProviderId);

            switch (roomChangeMessage.ChangeType)
            {
                //insert, update and delete of rooms should trigger a configuration update for the associated room type
                case ChangeType.Insert:
                case ChangeType.Delete:
                case ChangeType.Update:
                    {
                        var roomTypeChangeMessage = new RoomTypeChangeMessage(roomChangeMessage.ProviderId, roomChangeMessage.ProductTypeId, ChangeType.Update, RoomTypeChangeMessage.RoomTypeChangeType.Configuration);
                        roomTypeMessageHandler.Handle(roomTypeChangeMessage);
                        break;
                    }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Process Room Changes
        /// </summary>
        /// <param name="queueItem">Queue Item</param>
        /// <param name="providerSubscriberOptInLookup">Provider Subscriber Opt In list</param>
        public bool ProcessChange(IQueueItem queueItem, ref ProviderSubscriberOptInsLookup providerSubscriberOptInLookup)
        {
            var roomChange = XmlSerialization.XmlDeserializeFromString<PushRoomUpdate>(queueItem.Payload);
            ChangeType changeType;
            RoomChangeType roomChangeType;
            Enum.TryParse(roomChange.Action, out roomChangeType);

            //all these actions trigger Handle with a RoomTypeConfigurationUpdate message but i think its still valid to differentiate them in case we need it in the future
            switch (roomChangeType)
            {
                case RoomChangeType.AddRoom:
                    changeType = ChangeType.Insert;
                    break;
                case RoomChangeType.ModifyRoom:
                    //if we cant view the room online or it is not active then remove it
                    if (!roomChange.IsAvailableOnline || !roomChange.IsActive)
                    {
                        changeType = ChangeType.Delete;
                    }
                    else
                    {
                        changeType = ChangeType.Update;                        
                    }                    
                    break;
                case RoomChangeType.DeleteRoom:
                    changeType = ChangeType.Delete;
                    break;
                default:
                    return false;
            }

            var roomChangeMessage = new RoomChangeMessage(roomChange.BusinessId.ToGuid(), changeType, roomChange.RoomTypeId.ToGuid(ROOM_TYPE_PREFIX), roomChange.RoomId.ToGuid(ROOM_PREFIX));

            bool isSuccess = true;

            foreach (var messagingIntegratorService in CreateServices(roomChangeMessage))
            {
                isSuccess &= messagingIntegratorService.ProcessAndQueueChangeUpdates(providerSubscriberOptInLookup,
                                                                         roomChangeMessage);
            }

            return isSuccess;
        }
Ejemplo n.º 3
0
 /// <summary>
 /// This method will handle updates for a room
 /// </summary>
 /// <param name="subscriberByOptinList">List of providers opted into AIG</param>
 /// <param name="roomChangeMessage">Room change message</param>
 /// <returns>True is successful otherwise False</returns>
 private bool HandleRoomUpdate(SubscriberByOptinList subscriberByOptinList, RoomChangeMessage roomChangeMessage)
 {
     switch (roomChangeMessage.ChangeType)
     {
         //insert, update and delete of rooms should trigger a configuration update for the associated room type
         case ChangeType.Insert:
         case ChangeType.Delete:
         case ChangeType.Update:
             {
                 var roomTypeChangeMessage = new RoomTypeChangeMessage(roomChangeMessage.ProviderId, roomChangeMessage.ProductTypeId, ChangeType.Update, RoomTypeChangeMessage.RoomTypeChangeType.Configuration);
                 return HandleRoomTypeUpdate(subscriberByOptinList, roomTypeChangeMessage);
             }
     }
     return true;
 }