private TimeEntryUpdatedStatusDto SaveOrUpdateTimeEntry(TimeEntryDto timeEntryDto, User user) { var response = new TimeEntryUpdatedStatusDto(); response.Guid = timeEntryDto.Guid; response.IsOK = true; var task = _taskRepository.GetByGuid(timeEntryDto.TaskGuid); var timeEntryType = _timeEntryTypeRepository.GetById(timeEntryDto.TimeEntryTypeId); var pricePrHour = _priceService.GetPrice(timeEntryDto.PricePrHour, user, task); if (_timeEntryRepository.Exists(timeEntryDto.Guid)) { var changedTimeEntry = _timeEntryRepository.GetByGuid(timeEntryDto.Guid); if (changedTimeEntry.Invoice != null) { //throw response.IsOK = false; response.ReasonText = "Can not edit timeentry that has marked as invoiced!"; return(response); } changedTimeEntry.User = user; changedTimeEntry.Task = task; changedTimeEntry.TimeEntryType = timeEntryType; changedTimeEntry.StartTime = timeEntryDto.StartTime; changedTimeEntry.EndTime = timeEntryDto.EndTime; changedTimeEntry.Description = timeEntryDto.Description; changedTimeEntry.TimeSpent = timeEntryDto.TimeSpent; changedTimeEntry.BillableTime = timeEntryDto.BillableTime; changedTimeEntry.Billable = timeEntryDto.Billable; changedTimeEntry.Price = pricePrHour; _timeEntryRepository.SaveOrUpdate(changedTimeEntry); return(response); } var newTimeEntry = _timeEntryFactory.Create( timeEntryDto.Guid, user, task, timeEntryType, timeEntryDto.StartTime, timeEntryDto.EndTime, timeEntryDto.Description, timeEntryDto.TimeSpent, 0, timeEntryDto.BillableTime, timeEntryDto.Billable, pricePrHour, timeEntryDto.ClientSourceId ); _timeEntryRepository.SaveOrUpdate(newTimeEntry); return(response); }
private List <TimeEntry> ConvertFromXMLToTimeEntry(IEnumerable <TimeTrackerDataSet.TimeEntriesRow> rows) { return(rows.Select(t => { var task = _taskRepository.GetByGuid(t.TaskId); var timeEntryType = _timeEntryTypeRepository.GetById(t.TimeEntryTypeId); return TimeEntry.Create(t.Guid, task, timeEntryType, t.TimeSpent, t.BillableTime, t.Description, t.EntryStartDate, t.EntryStartDate, t.PricePrHour, t.Synced, t.SyncInfo, t.Billable, new TimeEntryHistory(), true, t.CreateDate, t.ClientSourceId, t.Invoiced); }) .ToList()); }
public TimeEntryDto SaveTimeEntry(TimeEntryDto timeEntryDto, int userId) { var user = _userRepository.GetByUserID(userId); var task = _taskRepository.GetByGuid(timeEntryDto.TaskGuid); var timeEntryType = _timeEntryTypeRepository.GetById(timeEntryDto.TimeEntryTypeId); var pricePrHour = _priceService.GetPrice(timeEntryDto.PricePrHour, user, task); if (!_timeEntryRepository.Exists(timeEntryDto.Guid)) { //TODO: Do logic that splits the timeentry in two, if a dateshift has occurred // if(timeEntry.StartTime.Date != timeEntry.EndTime.Date) var newTimeEntry = _timeEntryFactory.Create( timeEntryDto.Guid, user, task, timeEntryType, timeEntryDto.StartTime, timeEntryDto.EndTime, timeEntryDto.Description, timeEntryDto.TimeSpent, 0, timeEntryDto.BillableTime, timeEntryDto.Billable, pricePrHour, timeEntryDto.ClientSourceId ); _timeEntryRepository.SaveOrUpdate(newTimeEntry); timeEntryDto.Id = newTimeEntry.Id; } else { var changedTimeEntry = _timeEntryRepository.GetByGuid(timeEntryDto.Guid); changedTimeEntry.User = user; changedTimeEntry.Task = task; changedTimeEntry.TimeEntryType = timeEntryType; changedTimeEntry.StartTime = timeEntryDto.StartTime; changedTimeEntry.EndTime = timeEntryDto.EndTime; changedTimeEntry.Description = timeEntryDto.Description; changedTimeEntry.TimeSpent = timeEntryDto.TimeSpent; changedTimeEntry.BillableTime = timeEntryDto.BillableTime; changedTimeEntry.Billable = timeEntryDto.Billable; changedTimeEntry.Price = pricePrHour; _timeEntryRepository.SaveOrUpdate(changedTimeEntry); } return(timeEntryDto); }
private async Task <List <TimeEntry> > ConvertTimeEntriesFromServiceToModel(List <Common.DataTransferObjects.TimeEntryDto> timeentriesDtos, ITaskRepository taskRepository, ITimeEntryTypeRepository timeEntryTypeRepository) { var timeEntries = new List <TimeEntry>(); var inactiveTasksWithTimeEntriesInPeriod = await _serviceStackClient.PostAsync(new GetTasksByIdRequest { TaskIds = timeentriesDtos.Where(x => x.TaskIsInactive).Select(x => x.TaskId).ToList() }); foreach (var timeEntryDtos in timeentriesDtos.GroupBy(x => x.TaskGuid)) { Core.Model.Task localTask; var taskIsInactive = timeEntryDtos.Select(x => x.TaskIsInactive).First(); if (taskIsInactive) { var fullTaskDto = inactiveTasksWithTimeEntriesInPeriod.Tasks.Single(x => x.Guid == timeEntryDtos.Key); localTask = CreateLocalTask(fullTaskDto); } else { localTask = taskRepository.GetByGuid(timeEntryDtos.Key); } foreach (var timeEntryDto in timeEntryDtos) { var timeEntryType = timeEntryTypeRepository.GetById(timeEntryDto.TimeEntryTypeId); if (localTask != null) { timeEntries.Add(Create(timeEntryDto, localTask, timeEntryType)); } else { throw new MissingHieracleDataException(string.Format("Could not find task {0} for timeEntry '{1} ({2})'", timeEntryDto.TaskGuid, timeEntryDto.TaskName, timeEntryDto.Id)); } } } return(timeEntries); }