示例#1
0
        public WorkTime?FindFromSnapshot(WorkTimeSnapshotCreated snapshotEvent)
        {
            var sql = $@"SELECT {TableCols} FROM {TableName} WHERE AggregateId = @AggregateId AND AggregateVersion = @AggregateVersion";

            using var conn = CreateConnection(true);

            var events = conn.Query <DbEvent>(sql, new
            {
                AggregateVersion = snapshotEvent.AggregateVersion,
                AggregateId      = snapshotEvent.AggregateId,
            })
                         .MapToEvents(_mapper).ToList();

            if (events.Count != 1)
            {
                throw new Exception();
            }

            var snap = events.First() as WorkTimeSnapshotCreated;

            if (snap == null)
            {
                throw new Exception();
            }

            var workTime = WorkTime.CreateFromSnapshot(snap);

            return(workTime);
        }
示例#2
0
        public static WorkTime CreateFromSnapshot(WorkTimeSnapshotCreated snapshotCreated)
        {
            var workTime = new WorkTime();

            workTime.AggregateId      = snapshotCreated.AggregateId;
            workTime.AggregateVersion = snapshotCreated.AggregateVersion;
            workTime.FromSnapshot     = true;
            workTime.Apply(snapshotCreated);
            return(workTime);
        }
示例#3
0
        private void Apply(WorkTimeSnapshotCreated snapshotCreated)
        {
            var snap = snapshotCreated.Snapshot;

            StartDate   = snap.StartDate;
            User        = snap.User;
            EndDate     = snap.EndDate;
            AutoStart   = snap.AutoStart;
            DateCreated = snap.DateCreated;
        }
示例#4
0
        public void Rollback(WorkTimeSnapshotCreated snapshotEvent)
        {
            var sql = $@"DELETE FROM {TableName} WHERE AggregateId = @AggregateId AND AggregateVersion > @AggregateVersion";

            using var conn  = CreateConnection(false);
            using var trans = conn.BeginTransaction();

            var result = conn.Execute(sql, new { snapshotEvent.AggregateId, snapshotEvent.AggregateVersion });

            trans.Commit();
        }
示例#5
0
        public WorkTime?FindFromSnapshot(WorkTimeSnapshotCreated snapshotEvent)
        {
            var found = _repository.FindFromSnapshot(snapshotEvent);

            if (found == null)
            {
                return(null);
            }
            if (found.AggregateId == _moduleService.CurrentWorkTime?.AggregateId)
            {
                return(WorkTime.Combine(found, _moduleService.CurrentWorkTime));
            }

            return(found);
        }
示例#6
0
 public void Rollback(WorkTimeSnapshotCreated snapshot)
 {
     _repository.Rollback(snapshot);
 }