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)); }