public ContinueTimeEntryInfo(LogItemViewModel viewModel, ContinueTimeEntryMode continueMode)
 {
     Id            = viewModel.RepresentedTimeEntriesIds.First();
     IndexInLog    = viewModel.IndexInLog;
     DayInLog      = viewModel.DayInLog;
     DaysInThePast = viewModel.DaysInThePast;
     ContinueMode  = continueMode;
 }
Exemple #2
0
            public async Task PropagatesCorrectTimeEntryStartOriginToAnalytics(ContinueTimeEntryMode continueMode)
            {
                var prototype = CreatePrototype(ValidTime, ValidDescription, true, ProjectId);

                await InteractorFactory.ContinueTimeEntry(prototype, continueMode).Execute();

                AnalyticsService.Received().Track(Arg.Is <StartTimeEntryEvent>(
                                                      ev => (int)ev.Origin == (int)continueMode && ev.Origin.ToString() == continueMode.ToString()));
            }
        private ContinueTimeEntryOrigin originFromContinuationMode(ContinueTimeEntryMode mode)
        {
            switch (mode)
            {
            case ContinueTimeEntryMode.SingleTimeEntrySwipe:
                return(ContinueTimeEntryOrigin.Swipe);

            case ContinueTimeEntryMode.SingleTimeEntryContinueButton:
                return(ContinueTimeEntryOrigin.ContinueButton);

            case ContinueTimeEntryMode.TimeEntriesGroupSwipe:
                return(ContinueTimeEntryOrigin.GroupSwipe);

            case ContinueTimeEntryMode.TimeEntriesGroupContinueButton:
                return(ContinueTimeEntryOrigin.GroupContinueButton);
            }

            throw new InvalidEnumArgumentException($"Unexpected continue time entry mode {mode}");
        }
        public ContinueTimeEntryFromMainLogInteractor(
            IInteractorFactory interactorFactory,
            IAnalyticsService analyticsService,
            ITimeEntryPrototype timeEntryPrototype,
            ContinueTimeEntryMode continueMode,
            int indexInLog,
            int dayInLog,
            int daysInThePast)
        {
            Ensure.Argument.IsNotNull(interactorFactory, nameof(interactorFactory));
            Ensure.Argument.IsNotNull(analyticsService, nameof(analyticsService));
            Ensure.Argument.IsNotNull(timeEntryPrototype, nameof(timeEntryPrototype));
            Ensure.Argument.IsNotNull(continueMode, nameof(continueMode));

            this.interactorFactory  = interactorFactory;
            this.analyticsService   = analyticsService;
            this.timeEntryPrototype = timeEntryPrototype;
            this.continueMode       = continueMode;
            this.indexInLog         = indexInLog;
            this.dayInLog           = dayInLog;
            this.daysInThePast      = daysInThePast;
        }
Exemple #5
0
        public async Task TracksTheTimeEntryContinuedEvent(ContinueTimeEntryMode continueMode, ContinueTimeEntryOrigin expectedOrigin)
        {
            InteractorFactory
            .ContinueTimeEntry(Arg.Any <ITimeEntryPrototype>(), Arg.Any <ContinueTimeEntryMode>())
            .Execute()
            .Returns(Observable.Return(createdTimeEntry));

            var interactor = new ContinueTimeEntryFromMainLogInteractor(
                InteractorFactory,
                AnalyticsService,
                timeEntryPrototype,
                continueMode,
                IndexInLog,
                DayInLog,
                DaysInPast);

            await interactor.Execute();

            AnalyticsService
            .Received()
            .TimeEntryContinued
            .Track(expectedOrigin, IndexInLog, DayInLog, DaysInPast);
        }
Exemple #6
0
 public IInteractor <IObservable <IThreadSafeTimeEntry> > ContinueTimeEntry(ITimeEntryPrototype prototype, ContinueTimeEntryMode continueMode)
 => new CreateTimeEntryInteractor(
     idProvider,
     timeService,
     dataSource,
     analyticsService,
     intentDonationService,
     prototype,
     syncManager,
     timeService.CurrentDateTime,
     null,
     (TimeEntryStartOrigin)continueMode);
Exemple #7
0
 public IInteractor <IObservable <IThreadSafeTimeEntry> > ContinueTimeEntryFromMainLog(ITimeEntryPrototype prototype,
                                                                                       ContinueTimeEntryMode continueMode, int indexInLog, int dayInLog, int daysInThePast)
 => new ContinueTimeEntryFromMainLogInteractor(
     this,
     analyticsService,
     prototype,
     continueMode,
     indexInLog,
     dayInLog,
     daysInThePast);