예제 #1
0
        ///
        public IInteractionHandler <T> CreateInteractionHandler(Update interaction, Action <T> configureContext)
        {
            int senderUserId = interaction.GetOwner().Id;
            var session      = SessionDispatcher[senderUserId];

            if (session == null)
            {
                var regInfo = RegisteredUsers.FirstOrDefault(registered => registered.Id == senderUserId);
                if (regInfo != null)                 //user registered but session not oppened yet
                {
                    session = SessionDispatcher.StartSession(interaction.GetOwner().ToRegisteredUser(regInfo));
                }
                else
                {
                    //start registration procedure place it in RouteInteraction with check if session is null
                }
            }

            var context = new T();

            context.Session     = session;
            context.User        = session.User;
            context.Interaction = interaction;
            context.Connection  = Connection;
            configureContext(context);

            return(InteractionRouter.RouteInteraction(context));
        }
예제 #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="usersInfoProvider"></param>
 public BaseCentralDispatcher(IEnumerable <RegisteredUser> usersInfoProvider)
 {
     RegisteredUsers   = new List <RegisteredUser>(usersInfoProvider);
     SessionDispatcher = new SessionDispatcher();
 }