private void DeleteByIdCmd(DeleteById cmd) { // verify id valid if (!State.IdNotDeleted(cmd.Id)) { if (State.IdDeleted(cmd.Id)) { Sender.Tell(new DeleteById_IdAlreadyDeleted()); } else { Sender.Tell(new DeleteById_IdNotFound()); } return; } IActorRef entityActor = ActorRefs.Nobody; if (State.IdsActive.Contains(cmd.Id)) { entityActor = Context.Child(cmd.Id); if (entityActor == ActorRefs.Nobody) { entityActor = CreateEntity(cmd.Id); } } // if inactive, activate if (entityActor == ActorRefs.Nobody && State.IdsInactive.Contains(cmd.Id)) { entityActor = CreateEntity(cmd.Id); State.ActivateId(cmd.Id); } // delete record var deletedId = new DeletedId(cmd.Id); PersistAndTrack(deletedId, result => { DeletedIdEvnt(result); entityActor.Forward(cmd); }); }
private void DeletedIdEvnt(DeletedId evnt) { State.DeleteId(evnt.Id); }