public EntityProjection(MongoDBRepository projectionRepository)
        {
            When <EntityCreated>(e =>
            {
                if (e.EntityId == null || e.EntityName == null)
                {
                    return;
                }

                projectionRepository.Connect();
                var entityCollection = projectionRepository.GetCollection("Entity");

                var document = new BsonDocument
                {
                    { "Id", e.EntityId.ToString() },
                    { "Name", e.EntityName }
                };

                entityCollection.InsertOne(document);
            });

            When <BasicDetailsAdded>(e =>
            {
                if (e.DateOfBirth == null || e.CountryOfResidence == null)
                {
                    return;
                }

                projectionRepository.Connect();

                var filter           = Builders <BsonDocument> .Filter.Eq("Id", e.EntityId.ToString());
                var entityCollection = projectionRepository.GetCollection("Entity");

                var searchResult = entityCollection.Find(filter);

                if (searchResult.CountDocuments() == 0)
                {
                    return;
                }

                var update = Builders <BsonDocument> .Update
                             .Set("DateOfBirth", e.DateOfBirth)
                             .Set("CountryOfResidence", e.CountryOfResidence);

                entityCollection.UpdateOne(filter, update);
            });
        }
Esempio n. 2
0
        Position?GetPosition(Type projection)
        {
            projectionRepository.Connect();

            var projectionStateCollection = projectionRepository.GetCollection("ProjectionState");

            var filter = Builders <BsonDocument> .Filter.Eq("Id", projection.Name);

            var count = projectionStateCollection.Find(filter).CountDocuments();

            if (count == 0)
            {
                return(new Position(0, 0));
            }

            var             stateData = projectionStateCollection.Find(filter).First();
            ProjectionState state     = new ProjectionState();

            state.Id              = stateData.GetValue("Id").ToString();
            state.CommitPosition  = stateData.GetValue("CommitPosition").ToInt64();
            state.PreparePosition = stateData.GetValue("PreparePosition").ToInt64();

            return(new Position(state.CommitPosition, state.PreparePosition));
        }
        public CaseProjection(MongoDBRepository projectionRepository)
        {
            When <CaseInitiated>(e =>
            {
                if (e.CaseId == null)
                {
                    return;
                }

                projectionRepository.Connect();
                var caseCollection = projectionRepository.GetCollection("Case");

                var document = new BsonDocument
                {
                    { "Id", e.CaseId.ToString() },
                    { "EntityId", e.EntityId.ToString() },
                    { "Type", Enum.GetName(typeof(CaseType), e.CaseType) }
                };

                caseCollection.InsertOne(document);
            });
        }
Esempio n. 4
0
 public EntityController()
 {
     mongoRepository.Connect();
 }
Esempio n. 5
0
 public CaseController()
 {
     mongoRepository.Connect();
 }