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); }
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); }
private void Apply(WorkTimeSnapshotCreated snapshotCreated) { var snap = snapshotCreated.Snapshot; StartDate = snap.StartDate; User = snap.User; EndDate = snap.EndDate; AutoStart = snap.AutoStart; DateCreated = snap.DateCreated; }
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(); }
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); }
public void Rollback(WorkTimeSnapshotCreated snapshot) { _repository.Rollback(snapshot); }