public async Task <bool> HandleMember(AddMemberMessage message)
        {
            MemberAggregate agg;

            if (message.Source == 0)
            {
                agg = _reader.ReadOneAsync(x => x.Member.ID == message.ID)?.Result ?? MemberAggregate.New();
            }
            else if (message.Source == 1)
            {
                agg = _reader.ReadOneAsync(x => x.Member.LegacyID == message.LegacyID)?.Result ?? MemberAggregate.New();
            }
            else
            {
                agg = MemberAggregate.New();
            }

            bool naoProcessa = agg != null;

            naoProcessa &= message.Version <= agg.Version;
            naoProcessa &= agg.HasEvent(x => x.LegacyID == message.LegacyID &&
                                        x.ID == message.ID &&
                                        x.FullName == message.FullName &&
                                        x.Age == message.Age &&
                                        x.CellNumber == message.CellNumber &&
                                        x.DateOfBirth == message.DateOfBirth);

            if (naoProcessa)
            {
                return(false);
            }

            try
            {
                var e = new MemberCreatedEvent(message.ID, message.LegacyID, message.FullName, message.Age, message.CellNumber, message.DateOfBirth, message.RequestId, message.RequestDate);
                agg.AddEventToStream(e);
                agg.RebuildEventStream();
                agg.CommitChanges();
                Version = agg.Version;
                await _command.AddAsync(agg);
            }
            catch (Exception)
            {
                //TODO: Handle Exceptions
                return(false);
            }

            return(true);
        }
        public void SendInsert(MemberModel model)
        {
            var message = new AddMemberMessage();

            message.ID          = model.ID;
            message.FullName    = model.FullName;
            message.Source      = model.Source;
            message.Age         = model.Age;
            message.CellNumber  = model.CellNumber;
            message.DateOfBirth = model.DateOfBirth;
            message.LegacyID    = model.ID;
            message.RequestId   = model.RequestId;
            message.Code        = MemberEvents.Create;
            message.RequestDate = model.RequestDate;
            message.Version     = model.Version;

            _producer.Send(1, JsonConvert.SerializeObject(message));
        }