示例#1
0
        public void CreateEntity(INetworkingEntity networkingEntity)
        {
            if (networkingEntity.StreamingType == StreamingType.EntityStreaming)
            {
                return;
            }

            byte[] bytes;
            if (networkingEntity.StreamingType == StreamingType.DataStreaming)
            {
                // Remove data before sending it over the wire
                var entityWithoutData = networkingEntity.StreamedEntity.Clone();
                entityWithoutData.Data.Clear();

                var entityCreateEvent = new EntityCreateEvent {
                    Entity = entityWithoutData
                };
                var serverEvent = new ServerEvent {
                    Create = entityCreateEvent
                };
                bytes = serverEvent.ToByteArray();
            }
            else
            {
                var entityCreateEvent = new EntityCreateEvent {
                    Entity = networkingEntity.StreamedEntity
                };
                var serverEvent = new ServerEvent {
                    Create = entityCreateEvent
                };
                bytes = serverEvent.ToByteArray();
            }

            AltNetworking.Module.ClientPool.SendToAll(bytes);
        }
        public override async Task HandleAsync(EntityCreateEvent <TSource> @event)
        {
            var source = @event.Source;

            _dbContext.Set <TSource>().Add(source);
            await _dbContext.SaveChangesAsync();
        }
        public override void Handle(EntityCreateEvent <TSource> @event)
        {
            var source = @event.Source;

            _dbContext.Set <TSource>().Add(source);
            _dbContext.SaveChanges();
        }
示例#4
0
        // IEntity save;

        private void EditableDataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
        {
            this.EditMode = false;

            if (e.EditAction == DataGridEditAction.Cancel)
            {
                CurEvent = null;
                return;
            }

            if (CurEvent != null)
            {
                if (CurEvent is EntityCreateEvent)
                {
                    EntityCreateEvent ev = CurEvent as EntityCreateEvent;
                    try
                    {
                        ev.Entity.Model.Create(ev.Entity);
                    }
                    catch (Exception ex)
                    {
                        app.ProcessException(ex);
                    }
                }
                if (CurEvent is EntityUpdateEvent)
                {
                    EntityUpdateEvent ev = CurEvent as EntityUpdateEvent;
                    try{
                        ev.Entity.Model.Update(ev.Entity);
                    }
                    catch (Exception ex) {
                        app.ProcessException(ex);
                    }
                }

                // Notifie la modification au model
                //IEventProcess process = Application.Current as IEventProcess;

                /*IEventProcess process = this.DataContext as IEventProcess;
                 * if (process != null)
                 *  process.ProcessEvent(this, this, CurEvent);
                 */
                CurEvent = null;
                e.Cancel = false;
            }
        }
示例#5
0
        //-----------------------------------------------------------------------------------------
        // Evénements
        //-----------------------------------------------------------------------------------------
        #region IEventProcess
        // Traite les événements
        public void ProcessEvent(object from, object _this, IEvent e)
        {
            //
            // Change
            // Action après le changement d'une entité
            //
            if (e is EntityChangeEvent)
            {
                EntityChangeEvent ev = e as EntityChangeEvent;
                // Concerne ce model ?
                if (ev.Model == app.appModel)
                {
                    if (ev.Entity is ObjectContent)
                    {
                        OnPropertyChanged("ObjectContentList");
                    }
                    if (ev.Entity is ParamContent)
                    {
                        CurParamContentList = new ObservableCollection <ParamContent>(curObjectContent.ParamContent);
                    }
                    if (ev.Entity is DatabaseSource)
                    {
                        OnPropertyChanged("CurDatabaseSource");
                    }
                }
            }

            //
            // Pré-Create
            // Préprare la création d'une nouvelle entité (avant édition des champs)
            //
            if (e is EntityPreCreateEvent)
            {
                EntityPreCreateEvent ev = e as EntityPreCreateEvent;

                // Alloue l'entité
                if (ev.Entity == null)
                {
                    ev.Entity = app.appModel.CreateEntity(ev.EntityName);
                }

                // Ajoute l'instance au model
                app.appModel.Add(ev.Entity);

                // Affecte le status de création
                ev.Entity.EntityState = EntityState.Added;

                // Initialise les données par défaut
                if (ev.Entity is IEntityPersistent)
                {
                    IEntityPersistent p = ev.Entity as IEntityPersistent;
                    //Affecte la source de données à la nouvelle entitée
                    p.Factory = app.appModel.project.Factory;
                }

                if (ev.Entity is ObjectContent)
                {
                    ObjectContent entity = ev.Entity as ObjectContent;
                    // Ajoute au projet en cours
                    app.Project.AddObjectContent(entity);
                    // Génére un identifiant unique
                    entity.Id = Guid.NewGuid().ToString("N");
                    foreach (var p in entity.ParamContent)
                    {
                        p.Id = Guid.NewGuid().ToString("N");
                    }
                }

                if (ev.Entity is ParamContent)
                {
                    ParamContent entity = ev.Entity as ParamContent;
                    CurObjectContent.AddParamContent(entity);
                    // Génére un identifiant unique
                    entity.Id = Guid.NewGuid().ToString("N");
                }

                if (ev.Entity is DatabaseSource)
                {
                    DatabaseSource entity = ev.Entity as DatabaseSource;
                    app.Project.AddDatabaseSource(entity);

                    if (app.States.SelectedDatabaseSourceId == null)
                    {
                        app.States.SelectedDatabaseSourceId = app.Project.DatabaseSource.First().Id;
                    }
                }

                // Actualise l'interface
                app.ProcessEvent(this, this, new EntityChangeEvent(e, ev.Entity, app.appModel));
            }

            //
            // Create
            // Crée la nouvelle entité (après édition des champs)
            //
            if (e is EntityCreateEvent)
            {
                EntityCreateEvent ev = e as EntityCreateEvent;
                if (ev.Entity != null)
                {
                    // Valide le status de création
                    ev.Entity.EntityState = EntityState.Unmodified;

                    // Actualise l'interface
                    app.ProcessEvent(this, this, new EntityChangeEvent(e, ev.Entity, app.appModel));
                }
            }

            //
            // Pré-Update
            // Les données de l'entité vont êtres modifiées
            //
            if (e is EntityPreUpdateEvent)
            {
                EntityPreUpdateEvent ev = e as EntityPreUpdateEvent;
                // si l'entité fait partie du model
                if (ev.Entity != null && app.appModel.Contains(ev.Entity))
                {
                    // Préviens l'application
                    app.ProcessEvent(this, this, new EntityChangeEvent(e, ev.Entity, app.appModel));
                }
            }

            //
            // Update
            // Les données de l'entité sont modifiées
            //
            if (e is EntityUpdateEvent)
            {
                EntityUpdateEvent ev = e as EntityUpdateEvent;
                // si l'entité fait partie du model
                if (ev.Entity != null && app.appModel.Contains(ev.Entity))
                {
                    // Test la validité des champs
                    if (ev.Entity is IEntityValidable)
                    {
                        string           error;
                        IEntityValidable v = ev.Entity as IEntityValidable;
                        if (!v.IsValid(out error))
                        {
                            app.ProcessException(new ApplicationException(error));
                            return;
                        }
                    }

                    // Valide le status de création
                    ev.Entity.EntityState = EntityState.Unmodified;

                    // Actualise l'interface
                    app.ProcessEvent(this, this, new EntityChangeEvent(e, ev.Entity, app.appModel));
                }
            }

            //
            // Delete
            // Supprime l'entité
            //
            if (e is EntityDeleteEvent)
            {
                EntityDeleteEvent ev = e as EntityDeleteEvent;
                // si l'entité fait partie du model
                if (ev.Entity != null && app.appModel.Contains(ev.Entity))
                {
                    // Supprime du model
                    app.appModel.Remove(ev.Entity);

                    // Actualise l'interface
                    app.ProcessEvent(this, this, new EntityChangeEvent(e, ev.Entity, app.appModel));
                }
            }

            // Implémente la gestion du copier coller
            EventProcess.ProcessCopyPasteEvents(app, this, app.appModel, from, _this, e);
        }
示例#6
0
 public static void initialize(EntityRegistrationComponent p_entityRegistrationComponent)
 {
     EventQueue.enqueueEvent(EventQueueContainer.TurnTimelineQueue, EntityCreateEvent.alloc(p_entityRegistrationComponent.onEntityCreated));
 }