Beispiel #1
0
 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));
 }
Beispiel #2
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);
            }
        }