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); }
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); } }