Beispiel #1
0
        private void SaveCommandExecute(object obj)
        {
            //_busyService.ShowBusy();
            IsSyncing = true;
            var dayItemViewmodels       = Rows.Where(x => x.HasChanges).SelectMany(x => x.AllDays).Where(x => x.HasChanges).ToList();
            var willConsolidate         = dayItemViewmodels.Any(x => x.TimeEntries.Count() > 1);
            var consolidatedTimeEntries = _taskItemViewmodelFactory.ExtractConsolidatedTimeEntries(dayItemViewmodels);

            consolidatedTimeEntries.AddRange(_taskItemViewmodelFactory.ResetTimeEntries(_deletedRows));

            var result = MessageBoxResult.Yes;

            if (willConsolidate)
            {
                result = MessageBox.Show("Some tasks have multiple timeentries and will be consolidated." +
                                         " Are you sure you want to save?", "Confirm", MessageBoxButton.YesNo);
            }

            if (result == MessageBoxResult.Yes)
            {
                _timeEntryRepository.AddOrUpdateRange(consolidatedTimeEntries);
                ApplicationCommands.StartSync.Execute(null);
                HasChanges = false;
            }
            else
            {
                //_busyService.HideBusy();
                IsSyncing = false;
            }
        }
        private void SaveCommandExecute(object item)
        {
            _busyService.ShowBusy(_reportscreenKey);

            var list = new List <TimeEntry>();

            foreach (var gridRowItemViewModel in GridRows.Where(x => x.HasChanges))
            {
                var timeEntry = gridRowItemViewModel.TimeEntry;

                timeEntry.IsSynced = false;

                timeEntry.Billable      = gridRowItemViewModel.EditableBillable;
                timeEntry.TimeEntryType = gridRowItemViewModel.EditableType;

                list.Add(timeEntry);
                TaskCommands.SaveTaskCompleted.Execute(timeEntry);
            }

            _timeEntryRepository.AddOrUpdateRange(list);
            ApplicationCommands.StartSync.Execute(null);

            _busyService.HideBusy(_reportscreenKey);
        }
Beispiel #3
0
        public async Task SaveNewTimeEntries(DateTime lastSyncDate)
        {
            var unsyncedTasks      = _timeEntryRepository.GetUnsyncedTimeEntries();
            var unsyncedTasksCount = unsyncedTasks.Count;

            if (unsyncedTasksCount == 0)
            {
                return;
            }

            var user = new UserDto
            {
                UserId   = _userSession.CurrentUser.Id,
                UserName = _userSession.CurrentUser.UserName,
                FullName = _userSession.CurrentUser.Name
            };

            var serviceEntries = new List <Common.DataTransferObjects.TimeEntryDto>();

            foreach (var timeEntry in unsyncedTasks)
            {
                var timeEntryDto = new Common.DataTransferObjects.TimeEntryDto();
                timeEntryDto.Description     = timeEntry.Description;
                timeEntryDto.Guid            = timeEntry.Guid;
                timeEntryDto.BillableTime    = timeEntry.BillableTime.TotalHours;
                timeEntryDto.Billable        = timeEntry.Billable;
                timeEntryDto.TimeSpent       = timeEntry.TimeSpent.TotalHours;
                timeEntryDto.TimeEntryTypeId = timeEntry.TimeEntryType.Id;
                timeEntryDto.StartTime       = timeEntry.StartTime;
                timeEntryDto.EndTime         = timeEntry.EndTime;

                timeEntryDto.TaskId         = timeEntry.Task.Id;
                timeEntryDto.TaskGuid       = timeEntry.Task.Guid;
                timeEntryDto.PricePrHour    = timeEntry.PricePrHour;
                timeEntryDto.CreateDate     = timeEntry.CreateDate;
                timeEntryDto.ClientSourceId = timeEntry.ClientSourceId;
                serviceEntries.Add(timeEntryDto);
            }


            try
            {
                var response = await _serviceStackClient.PostAsync(new SaveOrUpdateTimeEntriesRequest
                {
                    TimeEntries = serviceEntries.ToList(),
                    UserId      = user.UserId
                });

                foreach (var responseTimeEntryStatus in response.TimeEntryStatus)
                {
                    var unsyncedTask = unsyncedTasks.SingleOrDefault(x => x.Guid == responseTimeEntryStatus.Guid);
                    if (unsyncedTask != null)
                    {
                        unsyncedTask.IsSynced     = responseTimeEntryStatus.IsOK;
                        unsyncedTask.SyncResponse = responseTimeEntryStatus.ReasonText;
                    }
                }
                _timeEntryRepository.AddOrUpdateRange(unsyncedTasks);
            }
            catch (CommunicationException ex)
            {
                throw new ServiceAccessException("Error when uploading timeentries", ex);
            }
        }