コード例 #1
0
        internal NotificationButton(INotificationController controller, INotificationInfo info)
        {
            this.controller = controller;

            InitializeComponent();
            InitializeNotificationIcon(info);
        }
コード例 #2
0
 public ShellOperation(
     IActionCenter actionCenter,
     IAudio audio,
     INotificationInfo aboutInfo,
     INotificationController aboutController,
     ClientContext context,
     IKeyboard keyboard,
     ILogger logger,
     INotificationInfo logInfo,
     INotificationController logController,
     IPowerSupply powerSupply,
     ISystemInfo systemInfo,
     ITaskbar taskbar,
     ITaskview taskview,
     IText text,
     IUserInterfaceFactory uiFactory,
     IWirelessAdapter wirelessAdapter) : base(context)
 {
     this.aboutInfo       = aboutInfo;
     this.aboutController = aboutController;
     this.actionCenter    = actionCenter;
     this.audio           = audio;
     this.keyboard        = keyboard;
     this.logger          = logger;
     this.logInfo         = logInfo;
     this.logController   = logController;
     this.powerSupply     = powerSupply;
     this.systemInfo      = systemInfo;
     this.text            = text;
     this.taskbar         = taskbar;
     this.taskview        = taskview;
     this.uiFactory       = uiFactory;
     this.wirelessAdapter = wirelessAdapter;
 }
コード例 #3
0
        public void NotifyTeacher(int groupId, INotificationInfo notificationInfo)
        {
            var teacherId = _groupRepository.GetGroupById(groupId).Members.Find
                                (m => m.MemberRole.Equals(MemberRole.Teacher)).UserId;

            NotifySubscriber(teacherId, notificationInfo);
        }
コード例 #4
0
 private void SendNotificationToChat(INotificationInfo notificationInfo, Group group)
 {
     using (var chat = new ChatSession(group))
     {
         chat.SendGroupMessage(notificationInfo);
     }
 }
コード例 #5
0
        private void NotifyOnMail(User user, INotificationInfo notificationInfo)
        {
            var messageContent   = _messageMapper.MapNotification(notificationInfo, user.UserProfile.Name);
            var notificationType = notificationInfo.GetNotificationType();

            _sender.SendMessage(user.UserProfile.Email, messageContent, _messageThemes[notificationType]);
        }
コード例 #6
0
        internal int SendGroupMessage(INotificationInfo notificationInfo)
        {
            var message = new GroupMessage(notificationInfo);

            _messages.Add(message);

            return(message.Id);
        }
コード例 #7
0
 public GroupMessageResponse(int id, DateTimeOffset sentOn, MessageType messageType,
                             INotificationInfo notificationInfo)
 {
     Id               = id;
     SentOn           = sentOn;
     MessageType      = messageType;
     NotificationInfo = notificationInfo;
 }
コード例 #8
0
        public void NotifyGroup(int groupId, INotificationInfo notificationInfo)
        {
            var currentGroup = _groupRepository.GetGroupById(groupId);

            currentGroup.Members.ToList().ForEach(m => NotifySubscriber(m.UserId, notificationInfo));
            SendNotificationToChat(notificationInfo, currentGroup);
            _groupRepository.Update(currentGroup);
        }
コード例 #9
0
 public void NotifyAdmins(INotificationInfo notificationInfo)
 {
     _userRepository.GetAll().Where(u => u.Type.Equals(UserType.Admin)).ToList().ForEach(u =>
     {
         NotifyOnMail(u, notificationInfo);
         NotifyOnSite(u, notificationInfo);
     });
 }
コード例 #10
0
        public void Notify(INotificationInfo message)
        {
            _growlNotifications.AddNotification(message);
            if (!message.IsKeepInCentral)
            {
                return;
            }

            Notifications.Insert(0, message);
        }
コード例 #11
0
        public virtual void SendNotification()
        {
            INotificationInfo notificationInfo = GetNotificationInfo();
            IEnumerable <INotificationInfo> notificationInfos = new[] { notificationInfo };

            NotificationInfoUtilities.GetUsers(ref notificationInfos, UserConnection);
            var notificationSender = ClassFactory.Get <INotificationSender>(
                new ConstructorArgument("userConnection", UserConnection));

            notificationSender.Send(notificationInfos);
        }
コード例 #12
0
 public INotificationControl CreateNotificationControl(INotificationInfo info, Location location)
 {
     if (location == Location.ActionCenter)
     {
         return(new ActionCenterNotificationButton(info));
     }
     else
     {
         return(new TaskbarNotificationButton(info));
     }
 }
コード例 #13
0
        protected IEnumerable <INotificationInfo> ExecuteNotificationInfoReader(Select select)
        {
            var result = new List <INotificationInfo>();

            using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection()) {
                using (IDataReader reader = select.ExecuteReader(dbExecutor)) {
                    while (reader.Read())
                    {
                        Dictionary <string, string> dictionaryColumnValues = GetColumnsValues(reader, select);
                        INotificationInfo           rowNotificationInfo    = GetRecordNotificationInfo(dictionaryColumnValues);
                        result.Add(rowNotificationInfo);
                    }
                }
            }
            return(result);
        }
コード例 #14
0
        internal void RemoveNotification(INotificationInfo notification)
        {
            //if (Notifications.Contains(notification))
            Notifications.Remove(notification);

            if (_buffer.Count > 0)
            {
                Notifications.Add(_buffer[0]);
                _buffer.RemoveAt(0);
            }

            //Close window if there's nothing to show
            if (Notifications.Count < 1)
            {
                Hide();
            }
        }
コード例 #15
0
        public bool Remove(INotificationInfo item)
        {
            var group = GetOrAddGroup(item);

            if (group == null)
            {
                return(false);
            }
            var val = group.Notifications.Remove(item);

            if (group.Notifications.Count == 0)
            {
                Remove(group);
            }

            return(val);
        }
コード例 #16
0
        public void AddNotification(INotificationInfo notification)
        {
            CalculatePosition();

            if (Notifications.Count + 1 > MaxNotifications)
            {
                _buffer.Add(notification);
            }
            else
            {
                Notifications.Add(notification);
            }

            //Show window if there're notifications
            if (Notifications.Count > 0 && !IsActive)
            {
                Show();
            }
        }
コード例 #17
0
        private void SendPushNotification(INotificationInfo info)
        {
            PushNotification pushNotification = GetPushNotification();
            var    additionalData             = new Dictionary <string, string>();
            string messageId      = info.MessageId.ToString();
            Guid   sysAdminUnit   = info.SysAdminUnit;
            string sysAdminUnitId = sysAdminUnit.ToString();

            if (!GetIsMessageSent(messageId, sysAdminUnitId, info.RemindTime))
            {
                additionalData.Add("entityName", info.EntitySchemaName);
                additionalData.Add("recordId", info.EntityId.ToString());
                additionalData.Add("messageId", messageId);
                DateTime remindTime = info.RemindTime;
                additionalData.Add("remindTime", remindTime.ToString(@"dd.MM.yyyy HH:mm"));
                pushNotification.Send(sysAdminUnit, info.Title, info.Body, additionalData);
                SaveMessageInHistory(messageId, sysAdminUnitId, remindTime);
            }
        }
コード例 #18
0
        private GroupNotificationInfo GetOrAddGroup(INotificationInfo item)
        {
            if (item == null)
            {
                return(null);
            }
            var group =
                this.FirstOrDefault(
                    g => string.Compare(g.Title, item.GroupTitle, StringComparison.OrdinalIgnoreCase) == 0);

            if (group != null)
            {
                return(group);
            }

            group = new GroupNotificationInfo {
                Title = item.GroupTitle
            };
            Add(group);
            return(group);
        }
コード例 #19
0
        private void NotifySubscriber(int userId, INotificationInfo notificationInfo)
        {
            var user     = _userRepository.GetUserById(userId);
            var settings = user.NotificationsSettings.Settings;

            var doesSubscribedOnSite =
                settings[notificationInfo.GetNotificationType()].Equals(NotificationValue.OnSite) ||
                settings[notificationInfo.GetNotificationType()].Equals(NotificationValue.Everywhere);
            var doesSubscribedOnMail =
                settings[notificationInfo.GetNotificationType()].Equals(NotificationValue.ToMail) ||
                settings[notificationInfo.GetNotificationType()].Equals(NotificationValue.Everywhere);

            if (doesSubscribedOnSite)
            {
                NotifyOnSite(user, notificationInfo);
            }

            if (doesSubscribedOnMail)
            {
                NotifyOnMail(user, notificationInfo);
            }
        }
コード例 #20
0
 public ShellOperation(
     IActionCenter actionCenter,
     IEnumerable <IActionCenterActivator> activators,
     ActionCenterSettings actionCenterSettings,
     IAudio audio,
     INotificationInfo aboutInfo,
     INotificationController aboutController,
     IKeyboard keyboard,
     ILogger logger,
     INotificationInfo logInfo,
     INotificationController logController,
     IPowerSupply powerSupply,
     ISystemInfo systemInfo,
     ITaskbar taskbar,
     TaskbarSettings taskbarSettings,
     ITerminationActivator terminationActivator,
     IText text,
     IUserInterfaceFactory uiFactory,
     IWirelessAdapter wirelessAdapter)
 {
     this.aboutInfo            = aboutInfo;
     this.aboutController      = aboutController;
     this.actionCenter         = actionCenter;
     this.activators           = activators;
     this.actionCenterSettings = actionCenterSettings;
     this.audio                = audio;
     this.keyboard             = keyboard;
     this.logger               = logger;
     this.logInfo              = logInfo;
     this.logController        = logController;
     this.powerSupply          = powerSupply;
     this.systemInfo           = systemInfo;
     this.taskbarSettings      = taskbarSettings;
     this.terminationActivator = terminationActivator;
     this.text            = text;
     this.taskbar         = taskbar;
     this.uiFactory       = uiFactory;
     this.wirelessAdapter = wirelessAdapter;
 }
コード例 #21
0
 public ShellOperation(
     IActionCenter actionCenter,
     IEnumerable <IActionCenterActivator> activators,
     ActionCenterSettings actionCenterSettings,
     ILogger logger,
     INotificationInfo aboutInfo,
     INotificationController aboutController,
     INotificationInfo logInfo,
     INotificationController logController,
     ISystemComponent <ISystemKeyboardLayoutControl> keyboardLayout,
     ISystemComponent <ISystemPowerSupplyControl> powerSupply,
     ISystemComponent <ISystemWirelessNetworkControl> wirelessNetwork,
     ISystemInfo systemInfo,
     ITaskbar taskbar,
     TaskbarSettings taskbarSettings,
     ITerminationActivator terminationActivator,
     IText text,
     IUserInterfaceFactory uiFactory)
 {
     this.aboutInfo            = aboutInfo;
     this.aboutController      = aboutController;
     this.actionCenter         = actionCenter;
     this.activators           = activators;
     this.actionCenterSettings = actionCenterSettings;
     this.logger               = logger;
     this.logInfo              = logInfo;
     this.logController        = logController;
     this.keyboardLayout       = keyboardLayout;
     this.powerSupply          = powerSupply;
     this.systemInfo           = systemInfo;
     this.taskbarSettings      = taskbarSettings;
     this.terminationActivator = terminationActivator;
     this.text            = text;
     this.taskbar         = taskbar;
     this.uiFactory       = uiFactory;
     this.wirelessNetwork = wirelessNetwork;
 }
コード例 #22
0
 public Notification(INotificationInfo notificationInfo)
 {
     OccurredOn       = DateTimeOffset.Now;
     NotificationInfo = JsonConvert.SerializeObject(notificationInfo);
     NotificationType = notificationInfo.GetNotificationType();
 }
コード例 #23
0
 public INotificationControl CreateNotificationControl(INotificationController controller, INotificationInfo info, Location location)
 {
     if (location == Location.ActionCenter)
     {
         return(new Controls.ActionCenter.NotificationButton(controller, info));
     }
     else
     {
         return(new Controls.Taskbar.NotificationButton(controller, info));
     }
 }
コード例 #24
0
 public GroupMessage(INotificationInfo notificationInfo, int id, DateTimeOffset sentOn)
     : base(id, sentOn)
 {
     NotificationType = notificationInfo.GetNotificationType();
     NotificationInfo = JsonConvert.SerializeObject(notificationInfo);
 }
コード例 #25
0
 public GroupMessage(INotificationInfo notificationInfo)
 {
     SentOn           = DateTimeOffset.UtcNow;
     NotificationType = notificationInfo.GetNotificationType();
     NotificationInfo = JsonConvert.SerializeObject(notificationInfo);
 }
コード例 #26
0
 private void InitializeNotificationIcon(INotificationInfo info)
 {
     IconButton.ToolTip = info.Tooltip;
     IconButton.Content = IconResourceLoader.Load(info.IconResource);
 }
コード例 #27
0
        public void Add(INotificationInfo item)
        {
            var group = GetOrAddGroup(item);

            group?.Notifications.Add(item);
        }
コード例 #28
0
        public void Insert(int index, INotificationInfo item)
        {
            var group = GetOrAddGroup(item);

            group?.Notifications.Insert(index, item);
        }
 public ActionCenterNotificationButton(INotificationInfo info)
 {
     InitializeComponent();
     InitializeNotificationIcon(info);
 }
コード例 #30
0
 public virtual GroupNotificationInfo GetGroupInfo(INotificationInfo item)
 => GetOrAddGroup(item);