public async Task GetDetailedReportAsync_ShouldReturnDetailedReportDto() { var now = DateTimeOffset.UtcNow; var client = await SetupHelper.CreateTestClientAsync(_client, _workspaceId); var project = await SetupHelper.CreateTestProjectAsync(_client, _workspaceId, client.Id); await SetupHelper.CreateTestTimeEntryAsync(_client, _workspaceId, now, project.Id); var userResponse = await _client.GetCurrentUserAsync(); userResponse.IsSuccessful.Should().BeTrue(); var nowWithTimeZone = DateTimeHelper.ConvertToTimeZone(userResponse.Data.Settings.TimeZone, now); var detailedReportRequest = new DetailedReportRequest { ExportType = ExportType.JSON, DateRangeStart = nowWithTimeZone.AddMinutes(-2), DateRangeEnd = nowWithTimeZone.AddMinutes(2), SortOrder = SortOrderType.DESCENDING, Description = String.Empty, Rounding = false, WithoutDescription = false, AmountShown = AmountShownType.EARNED, Clients = new ClientsFilterDto { Contains = ContainsType.CONTAINS, Ids = new List <string> { client.Id }, Status = StatusType.ACTIVE }, DetailedFilter = new DetailedFilterDto { SortColumn = SortColumnType.DATE, Page = 1, PageSize = 50 }, TimeZone = userResponse.Data.Settings.TimeZone }; var getDetailedReportResult = await _client.GetDetailedReportAsync(_workspaceId, detailedReportRequest); getDetailedReportResult.IsSuccessful.Should().BeTrue(); getDetailedReportResult.Data.Should().NotBeNull(); getDetailedReportResult.Data.TimeEntries.Should().HaveCountGreaterOrEqualTo(1); // Cleanup var deleteProject = await _client.ArchiveAndDeleteProject(_workspaceId, project.Id); deleteProject.IsSuccessful.Should().BeTrue(); }
/// <summary> /// Obtains the requested Detailed Report. /// </summary> public Task <IRestResponse <DetailedReportDto> > GetDetailedReportAsync(string workspaceId, DetailedReportRequest detailedReportRequest) { var request = new RestRequest($"workspaces/{workspaceId}/reports/detailed", Method.POST); request.AddJsonBody(detailedReportRequest); return(_reportsClient.ExecutePostAsync <DetailedReportDto>(request)); }