Esempio n. 1
0
        virtual public void UpdateEventTypesAndTimers()
        {
            IEnumerable <EventType> dashboardtypes = new List <EventType> ();
            IEnumerable <EventType> timelinetypes;

            if (Dashboard != null)
            {
                /* Timers */
                IEnumerable <Timer> timers = Dashboard.List.OfType <TimerButton> ().Select(b => b.Timer).OfType <Timer> ();
                Timers.AddRange(timers.Except(Timers));

                /* Update event types list that changes when the user adds or remove a
                 * a new button to the dashboard or after importing a project with events
                 * tagged with a different dashboard */
                dashboardtypes = Dashboard.List.OfType <EventButton> ().Select(b => b.EventType);
            }

            /* Remove event types that have no events and are not in the dashboard anymore */
            foreach (EventType evt in EventTypes.Except(dashboardtypes).ToList())
            {
                if (Timeline.Count(e => e.EventType == evt) == 0)
                {
                    EventTypes.Remove(evt);
                }
            }
            EventTypes.AddRange(dashboardtypes.Except(EventTypes));
            timelinetypes = Timeline.Select(t => t.EventType).Distinct().Except(EventTypes);
            EventTypes.AddRange(timelinetypes.Except(EventTypes));

            /* Remove null EventTypes just in case */
            EventTypes = new RangeObservableCollection <EventType> (EventTypes.Where(e => e != null));
        }
Esempio n. 2
0
        private async System.Threading.Tasks.Task ProcessEvent(string eventTypeName, string message)
        {
            if (EventHandlerTypes.ContainsKey(eventTypeName))
            {
                // New!
                using (var scope = ServiceScopeFactory.CreateScope())
                {
                    System.Collections.Generic.List <System.Type>
                    subscriptions = EventHandlerTypes[eventTypeName];

                    foreach (var subscription in subscriptions)
                    {
                        //var eventHandler =
                        //	System.Activator.CreateInstance(subscription);

                        // Updated!
                        var eventHandler =
                            scope.ServiceProvider.GetService(subscription);

                        if (eventHandler == null)
                        {
                            continue;
                        }

                        var eventType =
                            EventTypes
                            .Where(current => current.Name.ToLower() == eventTypeName.ToLower())
                            .FirstOrDefault();

                        var @event =
                            Newtonsoft.Json.JsonConvert
                            .DeserializeObject(value: message, type: eventType);

                        var concreteType =
                            typeof(Domain.Core.Bus.IEventHandler <>).MakeGenericType(typeArguments: eventType);

                        await System.Threading.Tasks.Task.Run(() =>
                        {
                            concreteType.GetMethod("Handle").Invoke(eventHandler, new object[] { @event });
                        });
                    }
                }
            }
        }
Esempio n. 3
0
        private void btnCreateEvent_Click(object sender, RoutedEventArgs e)
        {
            MainEvent wndEvent = new MainEvent();
            wndEvent.ShowDialog();

            EventType eventType = cbEventTypes.SelectedItem as EventType;
            EventTypes eventTypes = new EventTypes();
            cbEventTypes.ItemsSource = eventTypes;
            if (eventType != null)
                cbEventTypes.SelectedItem = eventTypes.Where(item => item.TypeId == eventType.TypeId).FirstOrDefault();

            UpdateCalendar();
        }