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); }
public WorkTime CreateStartedManually(User.User user, DateTime endDate, bool start = false) { if (endDate <= InternalTimeService.GetCurrentDateTime()) { throw new ArgumentException("Invalid end date"); } var id = _idGenerator.GenerateId(); //todo long var workTime = new WorkTime(id, user, null, endDate); if (start) { workTime.StartManually(); } _repository.Save(workTime); workTime.MarkPendingEventsAsHandled(); return(workTime); }
public bool Restore(User.User user, out WorkTime restored) { var restoredWorkTime = _repository.FindLatestFromSnapshot(user); if (restoredWorkTime != null) { if (restoredWorkTime.Stopped) { restored = null; return(false); } restoredWorkTime.SetRestored(); _repository.Save(restoredWorkTime); restoredWorkTime.MarkPendingEventsAsHandled(); restored = restoredWorkTime; return(true); } restored = null; return(false); }