Esempio n. 1
0
        /// <summary>
        /// Parses the Tropo Session request.
        /// </summary>
        /// <returns></returns>
        public ActionResult Tropo()
        {
            using (StreamReader reader = new StreamReader(Request.InputStream))
            {
                List <MessageQueue> pending = MessageQueue.GetPending();

                List <int> ids = pending.Select(m => m.MessageId).ToList();

                string result = TropoFactory.ExecuteSession(reader, MessageQueue.GetPendingAsDictionary(ids));

                MessageQueue.ClearIds(ids);

                return(Content(result, "application/json"));
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Notifies the users that are blocking the specified checkin/space.
        /// At the moment it sends IM and Email regardless of the users' preferences
        /// </summary>
        /// <param name="baseCheckin"></param>
        /// <param name="checkins"></param>
        private static void NotifyBlockingUsers(Checkin baseCheckin, List <Checkin> checkins)
        {
            List <UserInfo> userInfos = new List <UserInfo>();
            List <User>     users     = new List <User>();
            List <int>      userIds   = checkins.Select(c => c.UserId).ToList();
            UserInfo        requestingUser;

            using (EntityContext ctx = new EntityContext())
            {
                requestingUser = ctx.UserInfos.Where(ui => ui.UserId == baseCheckin.UserId).FirstOrDefault();

                userInfos = ctx.UserInfos.Where(ui => userIds.Contains(ui.UserId)).ToList();
                users     = ctx.Users.Where(ui => userIds.Contains(ui.UserId)).ToList();
            }

            Pubnub pub = PubnubFactory.GetInstance();

            users.ForEach(user =>
            {
                // Notify via email
                EmailerFactory.SendMail(user.Email, i18n.Notification_EmailTitle, string.Format(i18n.Notification_EmailMessage, requestingUser.FullName));

                // Notify via UI (if the user has it open)
                pub.Publish(PubnubFactory.Channels.GeneralNotification, new { Class = "BlockNotification", UserId = user.UserId, RequestingUser = requestingUser.UserId });
            });

            userInfos.ForEach(ui => {
                if (!string.IsNullOrEmpty(ui.ContactEmail))
                {
                    // Notify via IM
                    MessageQueue.Save(new MessageQueue()
                    {
                        To = ui.ContactEmail, Text = string.Format(i18n.Notification_IMMessage, requestingUser.FullName)
                    });
                }
            });


            TropoFactory.CreateSession();
        }