Ejemplo n.º 1
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);
        }
        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);
        }