private static TimeEntry Create(Common.DataTransferObjects.TimeEntryDto timeEntryDto, Core.Model.Task task, TimeEntryType timeEntryType) { return(TimeEntry.Create(timeEntryDto.Guid, task, timeEntryType, TimeSpan.FromHours(timeEntryDto.TimeSpent), TimeSpan.FromHours(timeEntryDto.BillableTime), timeEntryDto.Description, timeEntryDto.StartTime, timeEntryDto.EndTime, timeEntryDto.PricePrHour, true, string.Empty, timeEntryDto.Billable, new TimeEntryHistory(), true, timeEntryDto.CreateDate, timeEntryDto.ClientSourceId, timeEntryDto.Invoiced)); }
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); } }